memegen.settings   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 52
dl 0
loc 83
ccs 46
cts 46
cp 1
rs 10
c 0
b 0
f 0
wmc 4

2 Functions

Rating   Name   Duplication   Size   Complexity  
A get_config() 0 9 3
A _subclasses() 0 3 1
1 1
import os
2 1
import logging
3
4 1
5
class Config:
6
7 1
    ENV = None
8
9
    PATH = os.path.abspath(os.path.dirname(__file__))
10 1
    ROOT = os.path.dirname(PATH)
11
    DEBUG = False
12 1
    THREADED = False
13 1
14 1
    # Constants
15 1
    GITHUB_SLUG = "jacebrowning/memegen"
16
    GITHUB_URL = "https://github.com/{}".format(GITHUB_SLUG)
17
    GITHUB_BASE = "https://raw.githubusercontent.com/{}/master/".format(GITHUB_SLUG)
18 1
    CHANGES_URL = GITHUB_BASE + "CHANGELOG.md"
19 1
    CONTRIBUTING_URL = GITHUB_BASE + "CONTRIBUTING.md"
20 1
21 1
    # Variables
22 1
    BUGSNAG_API_KEY = os.getenv('BUGSNAG_API_KEY')
23
    FACEBOOK_APP_ID = 'localhost'
24
    FACEBOOK_IMAGE_HEIGHT = 492
25 1
    FACEBOOK_IMAGE_WIDTH = 940
26 1
    GOOGLE_ANALYTICS_TID = 'localhost'
27 1
    GOOGLE_ANALYTICS_URL = "http://www.google-analytics.com/collect"
28 1
    LOG_LEVEL = getattr(logging, os.getenv('LOG_LEVEL', 'INFO'))
29 1
    REGENERATE_IMAGES = os.getenv('REGENERATE_IMAGES')
30 1
    REMOTE_TRACKING_URL = os.getenv('REMOTE_TRACKING_URL')
31 1
    TWITTER_IMAGE_HEIGHT = 440
32 1
    TWITTER_IMAGE_WIDTH = 880
33 1
    WATERMARK_OPTIONS = os.getenv('WATERMARK_OPTIONS', "").split(',')
34 1
35 1
36
class ProductionConfig(Config):
37
38 1
    ENV = 'production'
39
40
    FACEBOOK_APP_ID = os.getenv('FACEBOOK_APP_ID')
41 1
    GOOGLE_ANALYTICS_TID = os.getenv('GOOGLE_ANALYTICS_TID')
42
    SLACK_APP_ID = os.getenv('SLACK_APP_ID')
43 1
44 1
45
class StagingCongif(ProductionConfig):
46
47 1
    ENV = 'staging'
48
49
50 1
class LocalConfig(Config):
51
52 1
    ENV = 'local'
53 1
54
    DEBUG = True
55 1
56 1
    LOG_LEVEL = logging.DEBUG
57
    WATERMARK_OPTIONS = ['localhost'] + Config.WATERMARK_OPTIONS
58
59 1
60
class TestConfig(LocalConfig):
61
62 1
    ENV = 'test'
63
64 1
    TESTING = True
65
66 1
    WATERMARK_OPTIONS = ['test', 'memegen.test', 'werkzeug']
67 1
68
69
def get_config(name):
70 1
    assert name, "No configuration specified"
71 1
72
    for config in _subclasses(Config):
73 1
        if config.ENV == name:
74 1
            return config
75 1
76
    assert False, "No matching configuration"
77 1
    return None
78
79
80
def _subclasses(cls):
81
    yield from cls.__subclasses__()
82
    yield from (g for s in cls.__subclasses__() for g in _subclasses(s))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable g does not seem to be defined.
Loading history...
83