sovereign 1.0.0b127__tar.gz → 1.0.0b128__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.

Potentially problematic release.


This version of sovereign might be problematic. Click here for more details.

Files changed (71) hide show
  1. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/PKG-INFO +4 -4
  2. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/pyproject.toml +3 -2
  3. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/app.py +1 -1
  4. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/rendering.py +7 -9
  5. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/server.py +4 -3
  6. sovereign-1.0.0b128/src/sovereign/views/__init__.py +0 -0
  7. sovereign-1.0.0b128/src/sovereign-files/static/style.css +16143 -0
  8. sovereign-1.0.0b128/src/sovereign-files/static/style.css.map +1 -0
  9. sovereign-1.0.0b127/LICENSE.txt +0 -13
  10. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/README.md +0 -0
  11. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/__init__.py +0 -0
  12. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/cache.py +0 -0
  13. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/constants.py +0 -0
  14. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/context.py +0 -0
  15. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/dynamic_config/__init__.py +0 -0
  16. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/dynamic_config/deser.py +0 -0
  17. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/dynamic_config/loaders.py +0 -0
  18. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/error_info.py +0 -0
  19. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/logging/access_logger.py +0 -0
  20. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/logging/application_logger.py +0 -0
  21. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/logging/base_logger.py +0 -0
  22. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/logging/bootstrapper.py +0 -0
  23. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/logging/types.py +0 -0
  24. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/middlewares.py +0 -0
  25. {sovereign-1.0.0b127/src/sovereign/utils → sovereign-1.0.0b128/src/sovereign/modifiers}/__init__.py +0 -0
  26. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/modifiers/lib.py +0 -0
  27. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/response_class.py +0 -0
  28. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/schemas.py +0 -0
  29. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/sources/__init__.py +0 -0
  30. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/sources/file.py +0 -0
  31. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/sources/inline.py +0 -0
  32. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/sources/lib.py +0 -0
  33. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/sources/poller.py +0 -0
  34. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/statistics.py +0 -0
  35. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/templates/base.html +0 -0
  36. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/templates/err.html +0 -0
  37. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/templates/resources.html +0 -0
  38. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/testing/loaders.py +0 -0
  39. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/testing/modifiers.py +0 -0
  40. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/tracing.py +0 -0
  41. {sovereign-1.0.0b127/src/sovereign/utils/crypto → sovereign-1.0.0b128/src/sovereign/utils}/__init__.py +0 -0
  42. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/auth.py +0 -0
  43. {sovereign-1.0.0b127/src/sovereign/views → sovereign-1.0.0b128/src/sovereign/utils/crypto}/__init__.py +0 -0
  44. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/crypto.py +0 -0
  45. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/suites/__init__.py +0 -0
  46. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/suites/aes_gcm_cipher.py +0 -0
  47. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/suites/base_cipher.py +0 -0
  48. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/suites/disabled_cipher.py +0 -0
  49. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/crypto/suites/fernet_cipher.py +0 -0
  50. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/dictupdate.py +0 -0
  51. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/eds.py +0 -0
  52. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/entry_point_loader.py +0 -0
  53. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/mock.py +0 -0
  54. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/resources.py +0 -0
  55. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/templates.py +0 -0
  56. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/timer.py +0 -0
  57. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/version_info.py +0 -0
  58. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/utils/weighted_clusters.py +0 -0
  59. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/views/api.py +0 -0
  60. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/views/crypto.py +0 -0
  61. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/views/discovery.py +0 -0
  62. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/views/healthchecks.py +0 -0
  63. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/views/interface.py +0 -0
  64. {sovereign-1.0.0b127 → sovereign-1.0.0b128}/src/sovereign/worker.py +0 -0
  65. {sovereign-1.0.0b127/src/sovereign/modifiers → sovereign-1.0.0b128/src/sovereign-files}/__init__.py +0 -0
  66. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/darkmode.js +0 -0
  67. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/node_expression.js +0 -0
  68. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/panel.js +0 -0
  69. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/resources.css +0 -0
  70. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/resources.js +0 -0
  71. {sovereign-1.0.0b127/src/sovereign → sovereign-1.0.0b128/src/sovereign-files}/static/sass/style.scss +0 -0
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: sovereign
3
- Version: 1.0.0b127
3
+ Version: 1.0.0b128
4
4
  Summary: Envoy Proxy control-plane written in Python
5
- Home-page: https://pypi.org/project/sovereign/
6
5
  License: Apache-2.0
7
6
  Keywords: envoy,envoyproxy,control-plane,management,server
8
7
  Author: Vasili Syrakis
@@ -20,6 +19,7 @@ Classifier: Programming Language :: Python :: 3
20
19
  Classifier: Programming Language :: Python :: 3.11
21
20
  Classifier: Programming Language :: Python :: 3.12
22
21
  Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
23
  Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.8
25
25
  Classifier: Programming Language :: Python :: 3.9
@@ -49,7 +49,6 @@ Requires-Dist: jmespath (>=1.0.1,<2.0.0)
49
49
  Requires-Dist: orjson (>=3.9.15,<4.0.0) ; extra == "orjson"
50
50
  Requires-Dist: pydantic (>=2.7.2,<3.0.0)
51
51
  Requires-Dist: pydantic-settings (<2.6.0)
52
- Requires-Dist: redis (<=5.0.0)
53
52
  Requires-Dist: requests (>=2.32.4,<3.0.0)
54
53
  Requires-Dist: sentry-sdk (>=2.14.0,<3.0.0) ; extra == "sentry"
55
54
  Requires-Dist: starlette (>=0.47.2,<0.48.0)
@@ -60,6 +59,7 @@ Requires-Dist: ujson (>=5.8.0,<6.0.0) ; extra == "ujson"
60
59
  Requires-Dist: uvicorn (>=0.23.2,<0.24.0)
61
60
  Requires-Dist: uvloop (>=0.19.0,<0.20.0)
62
61
  Project-URL: Documentation, https://developer.atlassian.com/platform/sovereign/
62
+ Project-URL: Homepage, https://pypi.org/project/sovereign/
63
63
  Project-URL: Repository, https://bitbucket.org/atlassian/sovereign/src/master/
64
64
  Description-Content-Type: text/markdown
65
65
 
@@ -1,10 +1,11 @@
1
1
  [tool.poetry]
2
2
  name = "sovereign"
3
- version = "1.0.0b127"
3
+ version = "1.0.0b128"
4
4
  description = "Envoy Proxy control-plane written in Python"
5
5
  license = "Apache-2.0"
6
6
  packages = [
7
- { include = "sovereign", from = "src", format = "sdist" }
7
+ { include = "sovereign", from = "src", format = "sdist" },
8
+ { include = "sovereign-files", from = "src", format = "sdist" },
8
9
  ]
9
10
  readme = "README.md"
10
11
  #include = ["CHANGELOG.md", "CODE_OF_CONDUCT.md"]
@@ -101,7 +101,7 @@ def init_app() -> FastAPI:
101
101
 
102
102
  @application.get("/static/{filename}", summary="Return a static asset")
103
103
  async def static(filename: str) -> Response:
104
- return FileResponse(get_package_file("sovereign", f"static/{filename}")) # type: ignore[arg-type]
104
+ return FileResponse(get_package_file("sovereign-files", f"static/{filename}")) # type: ignore[arg-type]
105
105
 
106
106
  @application.get(
107
107
  "/admin/xds_dump",
@@ -7,8 +7,8 @@ Functions used to render and return discovery responses to Envoy proxies.
7
7
  The templates are configurable. `todo See ref:Configuration#Templates`
8
8
  """
9
9
 
10
- import threading
11
- from multiprocessing import Process, Semaphore, cpu_count
10
+ from concurrent.futures import ThreadPoolExecutor
11
+ from multiprocessing import Process, cpu_count
12
12
  from typing import Any, Dict, List
13
13
 
14
14
  import yaml
@@ -30,7 +30,7 @@ from sovereign.schemas import (
30
30
  )
31
31
 
32
32
  # limit render jobs to number of cores
33
- RENDER_SEMAPHORE = Semaphore(cpu_count())
33
+ POOL = ThreadPoolExecutor(max_workers=cpu_count())
34
34
 
35
35
  type_urls = {
36
36
  "v2": {
@@ -59,14 +59,12 @@ class RenderJob(pydantic.BaseModel):
59
59
  context: dict[str, Any]
60
60
 
61
61
  def spawn(self):
62
- t = threading.Thread(target=self._run)
63
- t.start()
62
+ POOL.submit(self._run)
64
63
 
65
64
  def _run(self):
66
- with RENDER_SEMAPHORE:
67
- proc = Process(target=generate, args=[self])
68
- proc.start()
69
- proc.join()
65
+ proc = Process(target=generate, args=[self])
66
+ proc.start()
67
+ proc.join()
70
68
 
71
69
 
72
70
  def generate(job: RenderJob) -> None:
@@ -6,16 +6,15 @@ from pathlib import Path
6
6
  import uvicorn
7
7
 
8
8
  from sovereign import application_logger as log
9
- from sovereign.app import app
10
- from sovereign.worker import worker as worker_app
11
9
  from sovereign.schemas import SovereignAsgiConfig, SupervisordConfig
12
10
 
13
-
14
11
  asgi_config = SovereignAsgiConfig()
15
12
  supervisord_config = SupervisordConfig()
16
13
 
17
14
 
18
15
  def web() -> None:
16
+ from sovereign.app import app
17
+
19
18
  log.debug("Starting web server")
20
19
  uvicorn.run(
21
20
  app,
@@ -30,6 +29,8 @@ def web() -> None:
30
29
 
31
30
 
32
31
  def worker():
32
+ from sovereign.worker import worker as worker_app
33
+
33
34
  log.debug("Starting worker")
34
35
  uvicorn.run(
35
36
  worker_app,
File without changes