File tree 6 files changed +107
-24
lines changed
6 files changed +107
-24
lines changed Original file line number Diff line number Diff line change
1
+ language : python
2
+
3
+ cache : pip
4
+
5
+ python :
6
+ - " 3.6"
7
+
8
+ install :
9
+ - pip install -r dev-requirements.txt
10
+ - pip install coveralls
11
+
12
+ script :
13
+ - make tests
14
+
15
+ after_script :
16
+ - coveralls
Original file line number Diff line number Diff line change 1
- # Python database url
1
+ # Py-Database-URL
2
+
3
+ [ ![ Build Status] ( https://travis-ci.org/jairojair/py-database-url.svg?branch=master )] ( https://travis-ci.org/jairojair/py-database-url )
4
+ [ ![ Coverage Status] ( https://coveralls.io/repos/github/jairojair/py-database-url/badge.svg?branch=master )] ( https://coveralls.io/github/jairojair/py-database-url?branch=master )
5
+
6
+ ## Installation
7
+
8
+ pip install py-database-url
Original file line number Diff line number Diff line change @@ -8,3 +8,6 @@ services:
8
8
- .:/code
9
9
10
10
working_dir : /code
11
+
12
+ environment :
13
+ - DATABASE_URL=postgres://user:password@hostname:5432/database-name
Original file line number Diff line number Diff line change 3
3
import os
4
4
5
5
try :
6
- from urlparse import urlparse
7
- except ImportError :
6
+ # Python 3
8
7
from urllib .parse import urlparse
9
8
9
+ except ImportError :
10
+ # Python 2
11
+ from urlparse import urlparse
12
+
10
13
11
- def config ( ):
14
+ class Config ( object ):
12
15
"""
13
- Get database config from environment var (DATABASE_URL) automatically.
16
+ Describe class
14
17
"""
15
- pass
16
18
19
+ def __init__ (self ):
20
+ pass
17
21
18
- def parse (url = None ):
19
- """
20
- Parses a database URL.
21
- """
22
+ def __get_database_url_var (self ):
23
+ """
24
+ Describe
25
+ """
26
+ return os .environ ["DATABASE_URL" ]
27
+
28
+ def config (self ):
29
+ """
30
+ Get database config from environment var (DATABASE_URL) automatically.
31
+ """
32
+ pass
33
+
34
+ def parse (self , url = None ):
35
+ """
36
+ Parses a database URL.
37
+ """
38
+
39
+ config = {}
40
+
41
+ if url is None :
42
+ return
43
+
44
+ return urlparse (url )
45
+
46
+ @property
47
+ def orator (self ):
48
+ """
49
+ Method to parser for orator format.
50
+ """
51
+
52
+ url = self .__get_database_url_var ()
53
+ url = self .parse (url )
54
+
55
+ config = {
56
+ f"{ url .scheme } " : {
57
+ "driver" : url .scheme ,
58
+ "host" : url .hostname ,
59
+ "database" : url .path [1 :],
60
+ "user" : url .username ,
61
+ "password" : url .password ,
62
+ "prefix" : "" ,
63
+ }
64
+ }
22
65
23
- config = {}
66
+ return config
24
67
25
- if url is None :
26
- return
27
68
28
- return urlparse ( url )
69
+ config = Config ( )
Original file line number Diff line number Diff line change 2
2
3
3
setup (
4
4
name = "py-database-url" ,
5
- description = "A universal database URLS parser for Python." ,
5
+ description = "A universal database URLs for Python applications ." ,
6
6
version = "0.0.2" ,
7
7
url = "https://github.com/jairojair/py-database-url" ,
8
8
license = "MIT" ,
Original file line number Diff line number Diff line change 1
1
import pytest
2
2
3
- from py_database_url import parse
3
+ from py_database_url import config
4
4
5
5
6
- def test_parse_without_url ():
6
+ def test_config_without_url ():
7
7
8
- assert parse () is None
8
+ assert config . parse () is None
9
9
10
10
11
11
def test_parse_database_url ():
12
12
"""
13
13
Describe
14
14
"""
15
15
16
- url = "postgres://user:password@hostname:5432/database -name"
16
+ url = "postgres://user:password@hostname:5432/db -name"
17
17
18
- config = parse (url )
18
+ ret = config . parse (url )
19
19
20
- assert config .username == "user"
21
- assert config .password == "password"
22
- assert config .hostname == "hostname"
23
- assert config .port == 5432
20
+ assert ret .username == "user"
21
+ assert ret .password == "password"
22
+ assert ret .hostname == "hostname"
23
+ assert ret .port == 5432
24
+
25
+
26
+ def test_config_database_url_orator ():
27
+
28
+ expected = {
29
+ "postgres" : {
30
+ "database" : "database-name" ,
31
+ "driver" : "postgres" ,
32
+ "host" : "hostname" ,
33
+ "user" : "user" ,
34
+ "password" : "password" ,
35
+ "prefix" : "" ,
36
+ }
37
+ }
38
+
39
+ assert config .orator == expected
You can’t perform that action at this time.
0 commit comments