workercommon 0.4.3__tar.gz → 0.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {workercommon-0.4.3 → workercommon-0.5.1}/PKG-INFO +4 -2
- {workercommon-0.4.3 → workercommon-0.5.1}/pyproject.toml +4 -2
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon.egg-info/PKG-INFO +4 -2
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon.egg-info/SOURCES.txt +0 -1
- workercommon-0.5.1/workercommon.egg-info/requires.txt +4 -0
- workercommon-0.4.3/workercommon/config.py +0 -81
- workercommon-0.4.3/workercommon.egg-info/requires.txt +0 -2
- {workercommon-0.4.3 → workercommon-0.5.1}/LICENSE.TXT +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/README.md +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/setup.cfg +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/__init__.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/background.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/commands.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/connectionpool.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/database/__init__.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/database/base.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/database/pg.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/database/py.typed +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/locking.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/py.typed +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/rabbitmqueue.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/test.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon/worker.py +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon.egg-info/dependency_links.txt +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon.egg-info/not-zip-safe +0 -0
- {workercommon-0.4.3 → workercommon-0.5.1}/workercommon.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: workercommon
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Support code for various projects
|
|
5
5
|
Author-email: "Neil E. Hodges" <47hasbegun@gmail.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -13,8 +13,10 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE.TXT
|
|
16
|
-
Requires-Dist:
|
|
16
|
+
Requires-Dist: immutables
|
|
17
17
|
Requires-Dist: pika
|
|
18
|
+
Requires-Dist: psycopg2
|
|
19
|
+
Requires-Dist: pyyaml
|
|
18
20
|
Dynamic: license-file
|
|
19
21
|
|
|
20
22
|
# Requirements
|
|
@@ -13,10 +13,12 @@ readme = "README.md"
|
|
|
13
13
|
requires-python = ">= 3.8"
|
|
14
14
|
license = "BSD-3-Clause"
|
|
15
15
|
dependencies = [
|
|
16
|
-
"
|
|
16
|
+
"immutables",
|
|
17
17
|
"pika",
|
|
18
|
+
"psycopg2",
|
|
19
|
+
"pyyaml",
|
|
18
20
|
]
|
|
19
|
-
version = "0.
|
|
21
|
+
version = "0.5.1"
|
|
20
22
|
license-files = ["LICENSE.TXT"]
|
|
21
23
|
classifiers = [
|
|
22
24
|
"Programming Language :: Python :: 3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: workercommon
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Support code for various projects
|
|
5
5
|
Author-email: "Neil E. Hodges" <47hasbegun@gmail.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -13,8 +13,10 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE.TXT
|
|
16
|
-
Requires-Dist:
|
|
16
|
+
Requires-Dist: immutables
|
|
17
17
|
Requires-Dist: pika
|
|
18
|
+
Requires-Dist: psycopg2
|
|
19
|
+
Requires-Dist: pyyaml
|
|
18
20
|
Dynamic: license-file
|
|
19
21
|
|
|
20
22
|
# Requirements
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
import sys
|
|
3
|
-
|
|
4
|
-
if sys.version_info < (3, 8):
|
|
5
|
-
raise RuntimeError("At least Python 3.8 is required")
|
|
6
|
-
|
|
7
|
-
from configparser import ConfigParser
|
|
8
|
-
import logging
|
|
9
|
-
from logging.handlers import WatchedFileHandler
|
|
10
|
-
from typing import Tuple, Optional, Callable
|
|
11
|
-
from pathlib import Path
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class Configuration(object):
|
|
15
|
-
def __init__(self, filename: str):
|
|
16
|
-
self.parser = self.create_parser()
|
|
17
|
-
self.set_base_config(self.parser)
|
|
18
|
-
self.parser.read(filename)
|
|
19
|
-
self.check_all_values(self.parser)
|
|
20
|
-
|
|
21
|
-
def create_parser(self) -> ConfigParser:
|
|
22
|
-
return ConfigParser()
|
|
23
|
-
|
|
24
|
-
def set_base_config(self, parser: ConfigParser) -> None:
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
def check_all_values(self, parser: ConfigParser) -> None:
|
|
28
|
-
pass
|
|
29
|
-
|
|
30
|
-
@staticmethod
|
|
31
|
-
def dir_exists(s: str) -> bool:
|
|
32
|
-
return bool(s and Path(s).is_dir())
|
|
33
|
-
|
|
34
|
-
def check_value(
|
|
35
|
-
self, section: str, key: str, validator: Callable[[str], bool]
|
|
36
|
-
) -> None:
|
|
37
|
-
value: Optional[str] = self[section, key]
|
|
38
|
-
try:
|
|
39
|
-
if value is None or not validator(value):
|
|
40
|
-
raise ValueError
|
|
41
|
-
except:
|
|
42
|
-
raise ValueError(f"Invalid {section}/{key} value: {value}")
|
|
43
|
-
|
|
44
|
-
def __getitem__(self, parts: Tuple[str, str]) -> Optional[str]:
|
|
45
|
-
section, key = parts
|
|
46
|
-
|
|
47
|
-
try:
|
|
48
|
-
value = self.parser[section][key]
|
|
49
|
-
return value if value else None
|
|
50
|
-
except KeyError:
|
|
51
|
-
return None
|
|
52
|
-
|
|
53
|
-
def get_strict(self, section: str, key: str) -> str:
|
|
54
|
-
value = self[section, key]
|
|
55
|
-
if value is None:
|
|
56
|
-
raise ValueError(f"Missing {section}/{key} value")
|
|
57
|
-
|
|
58
|
-
return value
|
|
59
|
-
|
|
60
|
-
def get(self, section: str, key: str, default: str) -> str:
|
|
61
|
-
value = self[section, key]
|
|
62
|
-
return value if value is not None else default
|
|
63
|
-
|
|
64
|
-
def configure_logging(self, *handlers) -> None:
|
|
65
|
-
level = self["Logging", "level"]
|
|
66
|
-
if not level:
|
|
67
|
-
raise RuntimeError("Logging level should have already been validated")
|
|
68
|
-
|
|
69
|
-
log_format = self["Logging", "format"]
|
|
70
|
-
if not log_format:
|
|
71
|
-
log_format = "[%(asctime)s] [%(levelname)s] [%(module)s] [%(filename)s:%(lineno)d %(funcName)s] %(message)s"
|
|
72
|
-
|
|
73
|
-
if handlers:
|
|
74
|
-
logging.basicConfig(level=level, format=log_format, handlers=handlers)
|
|
75
|
-
else:
|
|
76
|
-
fname = self["Logging", "file"]
|
|
77
|
-
if fname:
|
|
78
|
-
handler = WatchedFileHandler(fname)
|
|
79
|
-
logging.basicConfig(level=level, format=log_format, handlers=[handler])
|
|
80
|
-
else:
|
|
81
|
-
logging.basicConfig(level=level, format=log_format, stream=sys.stderr)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|