csu 2.4.1__tar.gz → 2.4.2__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.
- {csu-2.4.1 → csu-2.4.2}/.bumpversion.cfg +1 -1
- {csu-2.4.1 → csu-2.4.2}/.cookiecutterrc +1 -1
- {csu-2.4.1 → csu-2.4.2}/PKG-INFO +3 -3
- {csu-2.4.1 → csu-2.4.2}/README.rst +2 -2
- {csu-2.4.1 → csu-2.4.2}/pyproject.toml +1 -1
- {csu-2.4.1 → csu-2.4.2}/src/csu/__init__.py +1 -1
- {csu-2.4.1 → csu-2.4.2}/src/csu/service.py +20 -16
- {csu-2.4.1 → csu-2.4.2}/src/csu.egg-info/PKG-INFO +3 -3
- {csu-2.4.1 → csu-2.4.2}/tests/test_service.py +12 -12
- {csu-2.4.1 → csu-2.4.2}/.coveragerc +0 -0
- {csu-2.4.1 → csu-2.4.2}/.editorconfig +0 -0
- {csu-2.4.1 → csu-2.4.2}/.github/workflows/github-actions.yml +0 -0
- {csu-2.4.1 → csu-2.4.2}/.pre-commit-config.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/.tombi.toml +0 -0
- {csu-2.4.1 → csu-2.4.2}/AUTHORS.rst +0 -0
- {csu-2.4.1 → csu-2.4.2}/CHANGELOG.rst +0 -0
- {csu-2.4.1 → csu-2.4.2}/CONTRIBUTING.rst +0 -0
- {csu-2.4.1 → csu-2.4.2}/LICENSE +0 -0
- {csu-2.4.1 → csu-2.4.2}/MANIFEST.in +0 -0
- {csu-2.4.1 → csu-2.4.2}/ci/bootstrap.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/ci/requirements.txt +0 -0
- {csu-2.4.1 → csu-2.4.2}/ci/templates/.github/workflows/github-actions.yml +0 -0
- {csu-2.4.1 → csu-2.4.2}/pytest.ini +0 -0
- {csu-2.4.1 → csu-2.4.2}/setup.cfg +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/admin.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/conf.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/consts.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/__init__.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/auth.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/fields.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/forms.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/perms.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/phonenumber.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/serializers.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/test_auth.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/test_fields.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/test_forms.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/test_phonenumber.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/test_serializers.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/drf/views.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/enums.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/env.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/exceptions.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/export.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/fixups.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/forms/__init__.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/forms/crispy.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/forms/fields.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/gettext.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/gettext_lazy.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/locale/ro/LC_MESSAGES/django.mo +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/locale/ro/LC_MESSAGES/django.po +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/logging.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/management.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/models.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/query.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/routers.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/templates/api_exception.html +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/templates/forms/widgets/opaquewidget.html +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_consts.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_env.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_exceptions.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_logging.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_management.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_service.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_timezones.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_utils.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/test_xml.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/timezones.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/utils.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/views.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/__init__.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/admin.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/asgi.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/engine.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/enums.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/job.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/models.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/worker/registry.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/wsgi.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu/xml.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu.egg-info/SOURCES.txt +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu.egg-info/dependency_links.txt +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu.egg-info/requires.txt +0 -0
- {csu-2.4.1 → csu-2.4.2}/src/csu.egg-info/top_level.txt +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_custom_context.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_custom_context_0_retries.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_decoding.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_error.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_logging.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service/test_redirects.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service_auth/test_async.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service_auth/test_async_auth.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service_auth/test_sync.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/cassettes/test_service_auth/test_sync_auth.yaml +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/conftest.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/exampleworker.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/test_exampleworker.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/test_models.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/test_service_auth.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/test_views.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/test_worker.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/testproject/__init__.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/testproject/fixtures/testuser.json +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/testproject/models.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/testproject/settings.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tests/testproject/urls.py +0 -0
- {csu-2.4.1 → csu-2.4.2}/tox.ini +0 -0
{csu-2.4.1 → csu-2.4.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csu
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
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
|
|
@@ -69,9 +69,9 @@ Overview
|
|
|
69
69
|
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
|
|
70
70
|
:alt: Supported implementations
|
|
71
71
|
:target: https://pypi.org/project/csu
|
|
72
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.4.
|
|
72
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.4.2.svg
|
|
73
73
|
:alt: Commits since latest release
|
|
74
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.4.
|
|
74
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.4.2...main
|
|
75
75
|
.. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
|
|
76
76
|
:alt: Scrutinizer Status
|
|
77
77
|
: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.4.
|
|
37
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.4.2.svg
|
|
38
38
|
:alt: Commits since latest release
|
|
39
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.4.
|
|
39
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.4.2...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/
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from collections.abc import Iterable
|
|
3
|
-
from dataclasses import dataclass
|
|
4
3
|
from decimal import Decimal
|
|
5
4
|
from logging import Logger
|
|
6
5
|
from logging import getLogger
|
|
@@ -36,15 +35,25 @@ from .exceptions import UnexpectedStatusError
|
|
|
36
35
|
from .exceptions import get_event_id
|
|
37
36
|
|
|
38
37
|
|
|
39
|
-
@dataclass(kw_only=True)
|
|
40
38
|
class HTTPServiceResponse:
|
|
41
39
|
status: int
|
|
42
40
|
http_response: Response | AsyncResponse
|
|
43
41
|
event_id: str
|
|
44
42
|
json: None | list | dict = None
|
|
43
|
+
text: str
|
|
44
|
+
content: bytes
|
|
45
45
|
|
|
46
|
-
def
|
|
47
|
-
|
|
46
|
+
def __init__(self, http_response: Response, *, content: bytes, text: str, json=None, event_id=None):
|
|
47
|
+
assert http_response.status_code, f"{http_response=} doesn't have a status code"
|
|
48
|
+
self.status = http_response.status_code
|
|
49
|
+
self.http_response = http_response
|
|
50
|
+
self.event_id = event_id
|
|
51
|
+
self.content = content
|
|
52
|
+
self.text = text
|
|
53
|
+
self.json = json
|
|
54
|
+
|
|
55
|
+
def __repr__(self):
|
|
56
|
+
return f"HTTPServiceResponse({self.status}, {self.content if self.json is None else self.json})"
|
|
48
57
|
|
|
49
58
|
|
|
50
59
|
class HTTPServiceAuth(AuthBase):
|
|
@@ -223,12 +232,8 @@ class HTTPServiceContext[RTYPE = HTTPServiceResponse]:
|
|
|
223
232
|
raise DecodeError(response, exc, event_id=self.event_id) from exc
|
|
224
233
|
else:
|
|
225
234
|
json = None
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
http_response=response,
|
|
229
|
-
json=json,
|
|
230
|
-
event_id=self.event_id,
|
|
231
|
-
)
|
|
235
|
+
|
|
236
|
+
return HTTPServiceResponse(response, json=json, content=response.content, text=response.text, event_id=self.event_id)
|
|
232
237
|
|
|
233
238
|
def handle_prepare_request(
|
|
234
239
|
self,
|
|
@@ -343,18 +348,17 @@ class AsyncHTTPServiceContext[RTYPE = HTTPServiceResponse](HTTPServiceContext[RT
|
|
|
343
348
|
try:
|
|
344
349
|
if isinstance(response, AsyncResponse):
|
|
345
350
|
json = await response.json(parse_float=Decimal)
|
|
351
|
+
content = await response.content
|
|
352
|
+
text = await response.text
|
|
346
353
|
else:
|
|
347
354
|
json = response.json(parse_float=Decimal)
|
|
355
|
+
content = response.content
|
|
356
|
+
text = response.text
|
|
348
357
|
except Exception as exc:
|
|
349
358
|
raise DecodeError(response, exc, event_id=self.event_id) from exc
|
|
350
359
|
else:
|
|
351
360
|
json = None
|
|
352
|
-
return HTTPServiceResponse(
|
|
353
|
-
status=response.status_code,
|
|
354
|
-
http_response=response,
|
|
355
|
-
json=json,
|
|
356
|
-
event_id=self.event_id,
|
|
357
|
-
)
|
|
361
|
+
return HTTPServiceResponse(response, content=content, text=text, json=json, event_id=self.event_id)
|
|
358
362
|
|
|
359
363
|
async def request(
|
|
360
364
|
self,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csu
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
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
|
|
@@ -69,9 +69,9 @@ Overview
|
|
|
69
69
|
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
|
|
70
70
|
:alt: Supported implementations
|
|
71
71
|
:target: https://pypi.org/project/csu
|
|
72
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.4.
|
|
72
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.4.2.svg
|
|
73
73
|
:alt: Commits since latest release
|
|
74
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.4.
|
|
74
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.4.2...main
|
|
75
75
|
.. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
|
|
76
76
|
:alt: Scrutinizer Status
|
|
77
77
|
:target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
|
|
@@ -260,7 +260,7 @@ json.decoder.JSONDecodeError: Expecting value: line 2 column 5 (char 5)
|
|
|
260
260
|
During handling of the above exception, another exception occurred:
|
|
261
261
|
|
|
262
262
|
Traceback (most recent call last):
|
|
263
|
-
File "[&SERVICE_PATH]", line
|
|
263
|
+
File "[&SERVICE_PATH]", line 230, in handle_process_response
|
|
264
264
|
json = response.json(parse_float=Decimal)
|
|
265
265
|
File "[&MODELS_PATH]", line 1529, in json
|
|
266
266
|
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
|
|
@@ -275,10 +275,10 @@ Traceback (most recent call last):
|
|
|
275
275
|
File "[&TEST_PATH]", line 78, in json
|
|
276
276
|
return ctx.request("GET", "status/418", accept_statuses=[418]).json
|
|
277
277
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
278
|
-
File "[&SERVICE_PATH]", line
|
|
278
|
+
File "[&SERVICE_PATH]", line 308, in request
|
|
279
279
|
return self.handle_process_response(response, expect_json=expect_json)
|
|
280
280
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
281
|
-
File "[&SERVICE_PATH]", line
|
|
281
|
+
File "[&SERVICE_PATH]", line 232, in handle_process_response
|
|
282
282
|
raise DecodeError(response, exc, event_id=self.event_id) from exc
|
|
283
283
|
csu.exceptions.DecodeError: DecodeError(JSONDecodeError('Expecting value: line 2 column 5 (char 5)'), response=<Response Dummy [418]>)
|
|
284
284
|
(418, b'\\n -=[ teapot ]=-\\n\\n _...._\\n .\\' _ _ `.\\n | ."` ^ `". _,\\n \\\\_;`"---"`|//\\n | ;/\\n \\\\_ _/\\n `"""`\\n')
|
|
@@ -340,7 +340,7 @@ Traceback (most recent call last):
|
|
|
340
340
|
File "[&TEST_PATH]", line 47, in error
|
|
341
341
|
return ctx.request("GET", "status/599", expect_json=False)
|
|
342
342
|
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
343
|
-
File "[&SERVICE_PATH]", line
|
|
343
|
+
File "[&SERVICE_PATH]", line 307, in request
|
|
344
344
|
raise UnexpectedStatusError(response, accept_statuses, event_id=self.event_id)
|
|
345
345
|
csu.exceptions.UnexpectedStatusError: UnexpectedStatusError(<Response Dummy [599]>, accept_statuses=[200])
|
|
346
346
|
(599, b'')
|
|
@@ -540,7 +540,7 @@ INFO | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999
|
|
|
540
540
|
"""\
|
|
541
541
|
ERROR | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999%7D&expect_json=true&follow_redirects=false&retries_left=3&retry_count=0&retry_statuses=%7B200%7D !> RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"3","retry_count":"0","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=3&retry_count=0&retry_statuses={200}"}\\n', event_id=241212:01:000000.00) (will retry 3 more times)
|
|
542
542
|
Traceback (most recent call last):
|
|
543
|
-
File "[&SERVICE_PATH]", line
|
|
543
|
+
File "[&SERVICE_PATH]", line 305, in request
|
|
544
544
|
raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
545
545
|
csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
546
546
|
(200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"3","retry_count":"0","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=3&retry_count=0&retry_statuses={200}"}\\n')
|
|
@@ -574,7 +574,7 @@ INFO | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999
|
|
|
574
574
|
"""\
|
|
575
575
|
ERROR | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999%7D&expect_json=true&follow_redirects=false&retries_left=2&retry_count=1&retry_statuses=%7B200%7D !> RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"2","retry_count":"1","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=2&retry_count=1&retry_statuses={200}"}\\n', event_id=241212:01:000000.00) (will retry 2 more times)
|
|
576
576
|
Traceback (most recent call last):
|
|
577
|
-
File "[&SERVICE_PATH]", line
|
|
577
|
+
File "[&SERVICE_PATH]", line 305, in request
|
|
578
578
|
raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
579
579
|
csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
580
580
|
(200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"2","retry_count":"1","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=2&retry_count=1&retry_statuses={200}"}\\n')
|
|
@@ -608,7 +608,7 @@ INFO | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999
|
|
|
608
608
|
"""\
|
|
609
609
|
ERROR | [01:000000.00] POST [&HTTPBIN]/anything?foo=bar&accept_statuses=%7B999%7D&expect_json=true&follow_redirects=false&retries_left=1&retry_count=2&retry_statuses=%7B200%7D !> RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"1","retry_count":"2","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=1&retry_count=2&retry_statuses={200}"}\\n', event_id=241212:01:000000.00) (will retry 1 more times)
|
|
610
610
|
Traceback (most recent call last):
|
|
611
|
-
File "[&SERVICE_PATH]", line
|
|
611
|
+
File "[&SERVICE_PATH]", line 305, in request
|
|
612
612
|
raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
613
613
|
csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
614
614
|
(200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"1","retry_count":"2","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=1&retry_count=2&retry_statuses={200}"}\\n')
|
|
@@ -656,31 +656,31 @@ ERROR | (renderer: NoneType)
|
|
|
656
656
|
| ...<6 lines>...
|
|
657
657
|
| accept_statuses=[999],
|
|
658
658
|
| )
|
|
659
|
-
| File "[&SERVICE_PATH]", line
|
|
659
|
+
| File "[&SERVICE_PATH]", line 319, in request
|
|
660
660
|
| raise ExhaustedRetriesError(retry_budget, retry_failures, event_id=self.event_id)
|
|
661
661
|
| csu.exceptions.ExhaustedRetriesError: ExhaustedRetriesError(3)
|
|
662
662
|
| ([RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"3","retry_count":"0","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=3&retry_count=0&retry_statuses={200}"}\\n', event_id=241212:01:000000.00), RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"2","retry_count":"1","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=2&retry_count=1&retry_statuses={200}"}\\n', event_id=241212:01:000000.00), RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"1","retry_count":"2","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=1&retry_count=2&retry_statuses={200}"}\\n', event_id=241212:01:000000.00), RetryableStatusError('200 not in [999] but in [200]', 200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"0","retry_count":"3","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=0&retry_count=3&retry_statuses={200}"}\\n', event_id=241212:01:000000.00)],)
|
|
663
663
|
+-+---------------- 1 ----------------
|
|
664
664
|
| Traceback (most recent call last):
|
|
665
|
-
| File "[&SERVICE_PATH]", line
|
|
665
|
+
| File "[&SERVICE_PATH]", line 305, in request
|
|
666
666
|
| raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
667
667
|
| csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
668
668
|
| (200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"3","retry_count":"0","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=3&retry_count=0&retry_statuses={200}"}\\n')
|
|
669
669
|
+---------------- 2 ----------------
|
|
670
670
|
| Traceback (most recent call last):
|
|
671
|
-
| File "[&SERVICE_PATH]", line
|
|
671
|
+
| File "[&SERVICE_PATH]", line 305, in request
|
|
672
672
|
| raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
673
673
|
| csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
674
674
|
| (200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"2","retry_count":"1","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=2&retry_count=1&retry_statuses={200}"}\\n')
|
|
675
675
|
+---------------- 3 ----------------
|
|
676
676
|
| Traceback (most recent call last):
|
|
677
|
-
| File "[&SERVICE_PATH]", line
|
|
677
|
+
| File "[&SERVICE_PATH]", line 305, in request
|
|
678
678
|
| raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
679
679
|
| csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
680
680
|
| (200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"1","retry_count":"2","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=1&retry_count=2&retry_statuses={200}"}\\n')
|
|
681
681
|
+---------------- 4 ----------------
|
|
682
682
|
| Traceback (most recent call last):
|
|
683
|
-
| File "[&SERVICE_PATH]", line
|
|
683
|
+
| File "[&SERVICE_PATH]", line 305, in request
|
|
684
684
|
| raise RetryableStatusError(response, accept_statuses, retry_statuses, event_id=self.event_id)
|
|
685
685
|
| csu.exceptions.RetryableStatusError: RetryableStatusError(<Response Dummy [200]>, accept_statuses=[999], retry_statuses=[200])
|
|
686
686
|
| (200, b'{"args":{"accept_statuses":"{999}","expect_json":"true","follow_redirects":"false","foo":"bar","retries_left":"0","retry_count":"3","retry_statuses":"{200}"},"data":"config={\\'custom\\': \\'config\\'}","files":{},"form":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate, br","Connection":"keep-alive","Content-Length":"27","Host":"127.0.0.1:12345","User-Agent":"python-httpx/0.X.X"},"json":null,"method":"POST","origin":"127.0.0.1","url":"http://127.0.0.1:12345/anything?foo=bar&accept_statuses={999}&expect_json=true&follow_redirects=false&retries_left=0&retry_count=3&retry_statuses={200}"}\\n')
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csu-2.4.1 → csu-2.4.2}/LICENSE
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csu-2.4.1 → csu-2.4.2}/tox.ini
RENAMED
|
File without changes
|