csu 2.2.2__tar.gz → 2.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.
Files changed (106) hide show
  1. {csu-2.2.2 → csu-2.2.4}/.bumpversion.cfg +1 -1
  2. {csu-2.2.2 → csu-2.2.4}/.cookiecutterrc +1 -1
  3. {csu-2.2.2 → csu-2.2.4}/PKG-INFO +3 -3
  4. {csu-2.2.2 → csu-2.2.4}/README.rst +2 -2
  5. {csu-2.2.2 → csu-2.2.4}/pyproject.toml +1 -1
  6. {csu-2.2.2 → csu-2.2.4}/src/csu/__init__.py +1 -1
  7. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/engine.py +8 -5
  8. {csu-2.2.2 → csu-2.2.4}/src/csu.egg-info/PKG-INFO +3 -3
  9. {csu-2.2.2 → csu-2.2.4}/.coveragerc +0 -0
  10. {csu-2.2.2 → csu-2.2.4}/.editorconfig +0 -0
  11. {csu-2.2.2 → csu-2.2.4}/.github/workflows/github-actions.yml +0 -0
  12. {csu-2.2.2 → csu-2.2.4}/.pre-commit-config.yaml +0 -0
  13. {csu-2.2.2 → csu-2.2.4}/.taplo.toml +0 -0
  14. {csu-2.2.2 → csu-2.2.4}/AUTHORS.rst +0 -0
  15. {csu-2.2.2 → csu-2.2.4}/CHANGELOG.rst +0 -0
  16. {csu-2.2.2 → csu-2.2.4}/CONTRIBUTING.rst +0 -0
  17. {csu-2.2.2 → csu-2.2.4}/LICENSE +0 -0
  18. {csu-2.2.2 → csu-2.2.4}/MANIFEST.in +0 -0
  19. {csu-2.2.2 → csu-2.2.4}/ci/bootstrap.py +0 -0
  20. {csu-2.2.2 → csu-2.2.4}/ci/requirements.txt +0 -0
  21. {csu-2.2.2 → csu-2.2.4}/ci/templates/.github/workflows/github-actions.yml +0 -0
  22. {csu-2.2.2 → csu-2.2.4}/pytest.ini +0 -0
  23. {csu-2.2.2 → csu-2.2.4}/setup.cfg +0 -0
  24. {csu-2.2.2 → csu-2.2.4}/src/csu/admin.py +0 -0
  25. {csu-2.2.2 → csu-2.2.4}/src/csu/conf.py +0 -0
  26. {csu-2.2.2 → csu-2.2.4}/src/csu/consts.py +0 -0
  27. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/__init__.py +0 -0
  28. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/auth.py +0 -0
  29. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/fields.py +0 -0
  30. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/forms.py +0 -0
  31. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/perms.py +0 -0
  32. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/phonenumber.py +0 -0
  33. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/serializers.py +0 -0
  34. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/test_auth.py +0 -0
  35. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/test_fields.py +0 -0
  36. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/test_forms.py +0 -0
  37. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/test_phonenumber.py +0 -0
  38. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/test_serializers.py +0 -0
  39. {csu-2.2.2 → csu-2.2.4}/src/csu/drf/views.py +0 -0
  40. {csu-2.2.2 → csu-2.2.4}/src/csu/enums.py +0 -0
  41. {csu-2.2.2 → csu-2.2.4}/src/csu/env.py +0 -0
  42. {csu-2.2.2 → csu-2.2.4}/src/csu/exceptions.py +0 -0
  43. {csu-2.2.2 → csu-2.2.4}/src/csu/export.py +0 -0
  44. {csu-2.2.2 → csu-2.2.4}/src/csu/fixups.py +0 -0
  45. {csu-2.2.2 → csu-2.2.4}/src/csu/forms/__init__.py +0 -0
  46. {csu-2.2.2 → csu-2.2.4}/src/csu/forms/crispy.py +0 -0
  47. {csu-2.2.2 → csu-2.2.4}/src/csu/forms/fields.py +0 -0
  48. {csu-2.2.2 → csu-2.2.4}/src/csu/gettext.py +0 -0
  49. {csu-2.2.2 → csu-2.2.4}/src/csu/gettext_lazy.py +0 -0
  50. {csu-2.2.2 → csu-2.2.4}/src/csu/locale/ro/LC_MESSAGES/django.mo +0 -0
  51. {csu-2.2.2 → csu-2.2.4}/src/csu/locale/ro/LC_MESSAGES/django.po +0 -0
  52. {csu-2.2.2 → csu-2.2.4}/src/csu/logging.py +0 -0
  53. {csu-2.2.2 → csu-2.2.4}/src/csu/management.py +0 -0
  54. {csu-2.2.2 → csu-2.2.4}/src/csu/models.py +0 -0
  55. {csu-2.2.2 → csu-2.2.4}/src/csu/query.py +0 -0
  56. {csu-2.2.2 → csu-2.2.4}/src/csu/routers.py +0 -0
  57. {csu-2.2.2 → csu-2.2.4}/src/csu/service.py +0 -0
  58. {csu-2.2.2 → csu-2.2.4}/src/csu/templates/api_exception.html +0 -0
  59. {csu-2.2.2 → csu-2.2.4}/src/csu/templates/forms/widgets/opaquewidget.html +0 -0
  60. {csu-2.2.2 → csu-2.2.4}/src/csu/test_consts.py +0 -0
  61. {csu-2.2.2 → csu-2.2.4}/src/csu/test_env.py +0 -0
  62. {csu-2.2.2 → csu-2.2.4}/src/csu/test_exceptions.py +0 -0
  63. {csu-2.2.2 → csu-2.2.4}/src/csu/test_logging.py +0 -0
  64. {csu-2.2.2 → csu-2.2.4}/src/csu/test_management.py +0 -0
  65. {csu-2.2.2 → csu-2.2.4}/src/csu/test_service.py +0 -0
  66. {csu-2.2.2 → csu-2.2.4}/src/csu/test_timezones.py +0 -0
  67. {csu-2.2.2 → csu-2.2.4}/src/csu/test_utils.py +0 -0
  68. {csu-2.2.2 → csu-2.2.4}/src/csu/test_xml.py +0 -0
  69. {csu-2.2.2 → csu-2.2.4}/src/csu/timezones.py +0 -0
  70. {csu-2.2.2 → csu-2.2.4}/src/csu/utils.py +0 -0
  71. {csu-2.2.2 → csu-2.2.4}/src/csu/views.py +0 -0
  72. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/__init__.py +0 -0
  73. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/admin.py +0 -0
  74. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/asgi.py +0 -0
  75. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/enums.py +0 -0
  76. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/job.py +0 -0
  77. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/models.py +0 -0
  78. {csu-2.2.2 → csu-2.2.4}/src/csu/worker/registry.py +0 -0
  79. {csu-2.2.2 → csu-2.2.4}/src/csu/wsgi.py +0 -0
  80. {csu-2.2.2 → csu-2.2.4}/src/csu/xml.py +0 -0
  81. {csu-2.2.2 → csu-2.2.4}/src/csu.egg-info/SOURCES.txt +0 -0
  82. {csu-2.2.2 → csu-2.2.4}/src/csu.egg-info/dependency_links.txt +0 -0
  83. {csu-2.2.2 → csu-2.2.4}/src/csu.egg-info/requires.txt +0 -0
  84. {csu-2.2.2 → csu-2.2.4}/src/csu.egg-info/top_level.txt +0 -0
  85. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_custom_context.yaml +0 -0
  86. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_custom_context_0_retries.yaml +0 -0
  87. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_decoding.yaml +0 -0
  88. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_error.yaml +0 -0
  89. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_logging.yaml +0 -0
  90. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service/test_redirects.yaml +0 -0
  91. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service_auth/test_async.yaml +0 -0
  92. {csu-2.2.2 → csu-2.2.4}/tests/cassettes/test_service_auth/test_sync.yaml +0 -0
  93. {csu-2.2.2 → csu-2.2.4}/tests/conftest.py +0 -0
  94. {csu-2.2.2 → csu-2.2.4}/tests/exampleworker.py +0 -0
  95. {csu-2.2.2 → csu-2.2.4}/tests/test_exampleworker.py +0 -0
  96. {csu-2.2.2 → csu-2.2.4}/tests/test_models.py +0 -0
  97. {csu-2.2.2 → csu-2.2.4}/tests/test_service.py +0 -0
  98. {csu-2.2.2 → csu-2.2.4}/tests/test_service_auth.py +0 -0
  99. {csu-2.2.2 → csu-2.2.4}/tests/test_views.py +0 -0
  100. {csu-2.2.2 → csu-2.2.4}/tests/test_worker.py +0 -0
  101. {csu-2.2.2 → csu-2.2.4}/tests/testproject/__init__.py +0 -0
  102. {csu-2.2.2 → csu-2.2.4}/tests/testproject/fixtures/testuser.json +0 -0
  103. {csu-2.2.2 → csu-2.2.4}/tests/testproject/models.py +0 -0
  104. {csu-2.2.2 → csu-2.2.4}/tests/testproject/settings.py +0 -0
  105. {csu-2.2.2 → csu-2.2.4}/tests/testproject/urls.py +0 -0
  106. {csu-2.2.2 → csu-2.2.4}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 2.2.2
2
+ current_version = 2.2.4
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -40,7 +40,7 @@ default_context:
40
40
  sphinx_theme: furo
41
41
  test_matrix_separate_coverage: 'no'
42
42
  tests_inside_package: 'yes'
43
- version: 2.2.2
43
+ version: 2.2.4
44
44
  version_manager: bump2version
45
45
  website: https://blog.ionelmc.ro
46
46
  year_from: '2024'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csu
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
5
5
  Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
6
6
  License-Expression: BSD-2-Clause
@@ -77,9 +77,9 @@ Overview
77
77
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
78
78
  :alt: Supported implementations
79
79
  :target: https://pypi.org/project/csu
80
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.2.svg
80
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.4.svg
81
81
  :alt: Commits since latest release
82
- :target: https://github.com/ionelmc/python-csu/compare/v2.2.2...main
82
+ :target: https://github.com/ionelmc/python-csu/compare/v2.2.4...main
83
83
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
84
84
  :alt: Scrutinizer Status
85
85
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
@@ -34,9 +34,9 @@ Overview
34
34
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
35
35
  :alt: Supported implementations
36
36
  :target: https://pypi.org/project/csu
37
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.2.svg
37
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.4.svg
38
38
  :alt: Commits since latest release
39
- :target: https://github.com/ionelmc/python-csu/compare/v2.2.2...main
39
+ :target: https://github.com/ionelmc/python-csu/compare/v2.2.4...main
40
40
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
41
41
  :alt: Scrutinizer Status
42
42
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
@@ -12,7 +12,7 @@ dynamic = [
12
12
  "readme",
13
13
  ]
14
14
  name = "csu"
15
- version = "2.2.2"
15
+ version = "2.2.4"
16
16
  license = "BSD-2-Clause"
17
17
  license-files = ["LICENSE"]
18
18
  description = "Clean Slate Utils - bunch of utility code, mostly Django/DRF specific."
@@ -2,4 +2,4 @@
2
2
  a.k.a Clean Slate Utils
3
3
  """
4
4
 
5
- __version__ = "2.2.2"
5
+ __version__ = "2.2.4"
@@ -1,5 +1,6 @@
1
1
  import asyncio
2
2
  import signal
3
+ import sys
3
4
  import traceback
4
5
  from abc import ABC
5
6
  from abc import abstractmethod
@@ -272,6 +273,8 @@ class AbstractEngine(ABC):
272
273
  shutdown_on: Iterable[int] = (signal.SIGINT, signal.SIGTERM)
273
274
  shutdown_requested = False
274
275
  shutdown_tasks: ClassVar[dict[bool, asyncio.Task]] = {}
276
+ if sys.platform == "win32":
277
+ shutdown_on += (signal.SIGBREAK,)
275
278
 
276
279
  def __init__(self):
277
280
  self.workers = []
@@ -308,19 +311,19 @@ class AbstractEngine(ABC):
308
311
  self.queue_sem.release()
309
312
 
310
313
  def add_worker(self, worker: AbstractWorker):
311
- assert self.queue is None, f"{self} is already started, {self.queue=}"
312
314
  self.workers.append(worker)
313
315
 
314
316
  async def start(self):
315
- assert self.queue is None, f"{self} is already started, {self.queue=}"
316
317
  for worker in self.workers:
317
318
  assert worker.runner is None, f"{worker=} should not be started"
318
319
  worker.start()
320
+
321
+ loop = asyncio.get_event_loop()
319
322
  for sig in self.shutdown_on:
320
- signal.signal(sig, self.shutdown_handler)
323
+ loop.add_signal_handler(sig, self.shutdown_handler, sig)
321
324
 
322
- def shutdown_handler(self, sig, frame):
323
- sig_name = signal.Signals(sig).name
325
+ def shutdown_handler(self, sig):
326
+ sig_name = sig.name
324
327
  graceful = not self.shutdown_requested
325
328
  logger.info("%s.shutdown_handler(%s) %s", self, sig_name, "GRACEFUL" if graceful else "FORCED")
326
329
  if not graceful:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csu
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
5
5
  Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
6
6
  License-Expression: BSD-2-Clause
@@ -77,9 +77,9 @@ Overview
77
77
  .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
78
78
  :alt: Supported implementations
79
79
  :target: https://pypi.org/project/csu
80
- .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.2.svg
80
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.2.4.svg
81
81
  :alt: Commits since latest release
82
- :target: https://github.com/ionelmc/python-csu/compare/v2.2.2...main
82
+ :target: https://github.com/ionelmc/python-csu/compare/v2.2.4...main
83
83
  .. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
84
84
  :alt: Scrutinizer Status
85
85
  :target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
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
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
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