kvcommon 0.2.2__tar.gz → 0.2.4__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.
- {kvcommon-0.2.2 → kvcommon-0.2.4}/PKG-INFO +6 -2
- {kvcommon-0.2.2 → kvcommon-0.2.4}/pyproject.toml +13 -8
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/exceptions.py +4 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/application.py +1 -1
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/metrics/__init__.py +2 -2
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/metrics/metrics.py +2 -2
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/middleware.py +2 -2
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/responses.py +2 -2
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/scheduler.py +1 -1
- kvcommon-0.2.2/src/kvcommon/flask/exceptions.py +0 -5
- {kvcommon-0.2.2 → kvcommon-0.2.4}/LICENSE +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/README.md +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/constants.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/datastore/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/datastore/backend.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/datastore/base.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/context.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/headers.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/traces/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/flask/views.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/clients/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/clients/base.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/clients/core.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/clients/custom_objects.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/clients/networking.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/backendconfig.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/base.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/iam.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/ingress.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/metadata.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/secret.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/serializable.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/entities/service.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/k8s/utils/gke.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/logger.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/misc/__init__.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/misc/entities.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/misc/shell.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/output.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/types.py +0 -0
- {kvcommon-0.2.2 → kvcommon-0.2.4}/src/kvcommon/urls.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kvcommon
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Library of miscellaneous common python utils that aren't worthy of their own dedicated libs.
|
|
5
5
|
Home-page: https://github.com/RAVoigt/kvcommon
|
|
6
6
|
License: MIT
|
|
@@ -15,10 +15,14 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
15
15
|
Provides-Extra: flask
|
|
16
16
|
Provides-Extra: k8s
|
|
17
17
|
Provides-Extra: metrics
|
|
18
|
-
|
|
18
|
+
Provides-Extra: traces
|
|
19
|
+
Requires-Dist: flask (>=3.1.0,<4.0.0) ; extra == "flask"
|
|
19
20
|
Requires-Dist: flask-apscheduler (>=1.13.1,<2.0.0) ; extra == "flask"
|
|
20
21
|
Requires-Dist: flask-http-middleware (>=0.4.2,<0.5.0) ; extra == "flask"
|
|
21
22
|
Requires-Dist: kubernetes (>=31.0.0,<32.0.0) ; extra == "k8s"
|
|
23
|
+
Requires-Dist: opentelemetry-exporter-otlp ; extra == "traces"
|
|
24
|
+
Requires-Dist: opentelemetry-instrumentation-flask ; extra == "traces"
|
|
25
|
+
Requires-Dist: opentelemetry-instrumentation-logging ; extra == "traces"
|
|
22
26
|
Requires-Dist: prometheus-client (>=0.20.0,<0.21.0) ; extra == "metrics"
|
|
23
27
|
Requires-Dist: prometheus-flask-exporter (>=0.23.1,<0.24.0) ; extra == "metrics"
|
|
24
28
|
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "kvcommon"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.4"
|
|
4
4
|
description = "Library of miscellaneous common python utils that aren't worthy of their own dedicated libs."
|
|
5
5
|
authors = ["Rob Voigt <code@ravoigt.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -32,17 +32,21 @@ toml = "^0.10.2"
|
|
|
32
32
|
# ==== Extras
|
|
33
33
|
|
|
34
34
|
# Flask
|
|
35
|
-
flask = {version = "^3.1.0", optional = true}
|
|
36
|
-
flask-http-middleware = { version = "^0.4.2", optional = true}
|
|
37
|
-
flask-apscheduler = { version = "^1.13.1", optional = true}
|
|
35
|
+
flask = { version = "^3.1.0", optional = true }
|
|
36
|
+
flask-http-middleware = { version = "^0.4.2", optional = true }
|
|
37
|
+
flask-apscheduler = { version = "^1.13.1", optional = true }
|
|
38
38
|
|
|
39
39
|
# K8s
|
|
40
|
-
kubernetes = { version = "^31.0.0", optional = true}
|
|
40
|
+
kubernetes = { version = "^31.0.0", optional = true }
|
|
41
41
|
|
|
42
42
|
# Metrics
|
|
43
|
-
prometheus-client = { version = "^0.20.0", optional = true}
|
|
44
|
-
prometheus-flask-exporter = { version = "^0.23.1", optional = true}
|
|
43
|
+
prometheus-client = { version = "^0.20.0", optional = true }
|
|
44
|
+
prometheus-flask-exporter = { version = "^0.23.1", optional = true }
|
|
45
45
|
|
|
46
|
+
# Traces
|
|
47
|
+
opentelemetry-exporter-otlp = { version = "*", optional = true } # TODO
|
|
48
|
+
opentelemetry-instrumentation-flask = { version = "*", optional = true } # TODO
|
|
49
|
+
opentelemetry-instrumentation-logging = { version = "*", optional = true } # TODO
|
|
46
50
|
|
|
47
51
|
[tool.poetry.dev-dependencies]
|
|
48
52
|
black = "*"
|
|
@@ -56,6 +60,7 @@ pyfakefs = "*"
|
|
|
56
60
|
|
|
57
61
|
|
|
58
62
|
[tool.poetry.extras]
|
|
59
|
-
flask = ["flask-http-middleware", "flask-apscheduler"]
|
|
63
|
+
flask = ["flask", "flask-http-middleware", "flask-apscheduler"]
|
|
60
64
|
k8s = ["kubernetes"]
|
|
61
65
|
metrics = ["prometheus-client", "prometheus-flask-exporter"]
|
|
66
|
+
traces = ["opentelemetry-exporter-otlp", "opentelemetry-instrumentation-logging", "opentelemetry-instrumentation-flask"]
|
|
@@ -10,7 +10,7 @@ from flask_http_middleware import MiddlewareManager
|
|
|
10
10
|
|
|
11
11
|
from kvcommon.logger import get_logger
|
|
12
12
|
from flask_http_middleware import BaseHTTPMiddleware
|
|
13
|
-
from
|
|
13
|
+
from kvcommon.flask.middleware import KVCFlaskMiddleware
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
LOG = get_logger("needle-proxy")
|
|
@@ -4,7 +4,7 @@ from .metrics import HTTP_RESPONSE_COUNT
|
|
|
4
4
|
from .metrics import SERVER_REQUEST_SECONDS
|
|
5
5
|
from .metrics import incr
|
|
6
6
|
from .metrics import decr
|
|
7
|
-
from .metrics import
|
|
7
|
+
from .metrics import FlaskMetricsException
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
__all__ = [
|
|
@@ -14,5 +14,5 @@ __all__ = [
|
|
|
14
14
|
"APP_INFO",
|
|
15
15
|
"HTTP_RESPONSE_COUNT",
|
|
16
16
|
"SERVER_REQUEST_SECONDS",
|
|
17
|
-
"
|
|
17
|
+
"FlaskMetricsException",
|
|
18
18
|
]
|
|
@@ -4,10 +4,10 @@ from prometheus_client import Histogram
|
|
|
4
4
|
from prometheus_client import Info
|
|
5
5
|
from prometheus_client import Summary
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from kvcommon.exceptions import KVCFlaskException
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class FlaskMetricsException(KVCFlaskException):
|
|
11
11
|
pass
|
|
12
12
|
|
|
13
13
|
|
|
@@ -8,8 +8,8 @@ from flask_http_middleware import BaseHTTPMiddleware
|
|
|
8
8
|
from flask_http_middleware import MiddlewareManager
|
|
9
9
|
|
|
10
10
|
from kvcommon.urls import urlparse_ignore_scheme
|
|
11
|
-
from
|
|
12
|
-
from
|
|
11
|
+
from kvcommon.flask import metrics
|
|
12
|
+
from kvcommon.flask.context import set_flask_context_local
|
|
13
13
|
from kvcommon import logger
|
|
14
14
|
|
|
15
15
|
LOG = logger.get_logger("kvc-flask")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from flask.wrappers import Response as Flask_Response
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from kvcommon.flask import metrics
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class HTTPResponse(Flask_Response):
|
|
@@ -39,7 +39,7 @@ class HTTPResponse(Flask_Response):
|
|
|
39
39
|
|
|
40
40
|
def inc_metrics(self):
|
|
41
41
|
if self._metrics_emitted_doonce:
|
|
42
|
-
raise metrics.
|
|
42
|
+
raise metrics.FlaskMetricsException(
|
|
43
43
|
"An attempt to emit metrics from this HTTP Response has already been made."
|
|
44
44
|
)
|
|
45
45
|
self._metrics_emitted_doonce = True
|
|
@@ -6,7 +6,7 @@ from apscheduler.events import EVENT_JOB_ERROR
|
|
|
6
6
|
from apscheduler.events import EVENT_JOB_EXECUTED
|
|
7
7
|
from apscheduler.events import EVENT_JOB_MISSED
|
|
8
8
|
from apscheduler.events import JobExecutionEvent
|
|
9
|
-
from
|
|
9
|
+
from kvcommon.flask import metrics
|
|
10
10
|
from kvcommon.logger import get_logger
|
|
11
11
|
|
|
12
12
|
|
|
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
|
|
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
|