amsdal_crm 0.1.5__tar.gz → 0.1.7__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.
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/PKG-INFO +1 -1
- amsdal_crm-0.1.7/amsdal_crm/__about__.py +1 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/errors.py +1 -1
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/lifecycle/consumer.py +8 -1
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/migrations/0000_initial.py +0 -1
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/stage.py +0 -4
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/custom_field_service.py +2 -2
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/test_custom_field_service.py +2 -2
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/uv.lock +44 -44
- amsdal_crm-0.1.5/amsdal_crm/__about__.py +0 -1
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.amsdal/.environment +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.amsdal-cli +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.github/workflows/ci.yml +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.github/workflows/release.yml +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.github/workflows/tag_check.yml +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/.gitignore +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/CLAUDE.md +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/README.md +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/RELEASE.md +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/Third-Party Materials - AMSDAL Dependencies - License Notices.md +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/app.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/constants.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/fixtures/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/fixtures/permissions.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/fixtures/pipelines.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/lifecycle/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/account.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/activity.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/attachment.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/contact.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/custom_field_definition.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/deal.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/pipeline.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/models/workflow_rule.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/activity_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/deal_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/email_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/services/workflow_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/amsdal_crm/settings.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/config.yml +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/license_check.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/pyproject.toml +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/scripts/release.sh +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/scripts/tag_check.sh +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/conftest.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/conftest.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/services/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/services/test_deal_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/services/test_email_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/integration/services/test_workflow_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/conftest.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/lifecycle/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/lifecycle/test_consumer.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_account.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_activity.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_contact.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_deal.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_pipeline.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_remaining.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/models/test_stage.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/__init__.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/test_activity_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/test_deal_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/test_email_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/services/test_workflow_service.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/test_app.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/test_constants.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/test_errors.py +0 -0
- {amsdal_crm-0.1.5 → amsdal_crm-0.1.7}/tests/unit/test_settings.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.1.7'
|
|
@@ -126,7 +126,7 @@ def _add_custom_fields_to_control(control: dict[str, Any], custom_field_controls
|
|
|
126
126
|
)
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
def
|
|
129
|
+
def _get_values_from_response(response: dict[str, Any] | list[dict[str, Any]]) -> dict[str, Any]:
|
|
130
130
|
"""
|
|
131
131
|
Extracts values from a response dictionary or list of dictionaries.
|
|
132
132
|
|
|
@@ -150,6 +150,13 @@ def get_values_from_response(response: dict[str, Any] | list[dict[str, Any]]) ->
|
|
|
150
150
|
return response['rows'][0]
|
|
151
151
|
|
|
152
152
|
|
|
153
|
+
def get_values_from_response(response: dict[str, Any] | list[dict[str, Any]]) -> dict[str, Any]:
|
|
154
|
+
_values = _get_values_from_response(response)
|
|
155
|
+
if 'custom_fields' in _values:
|
|
156
|
+
return _values['custom_fields']
|
|
157
|
+
return {}
|
|
158
|
+
|
|
159
|
+
|
|
153
160
|
class CustomAttributesFrontendConfigConsumer(LifecycleConsumer):
|
|
154
161
|
"""Consumer that propagates custom attributes into frontend config.
|
|
155
162
|
|
|
@@ -430,7 +430,6 @@ class Migration(migrations.Migration):
|
|
|
430
430
|
"db_fields": {"pipeline": ["pipeline_partition_key"]},
|
|
431
431
|
"primary_key": ["partition_key"],
|
|
432
432
|
"indexed": [["order"]],
|
|
433
|
-
"unique": [["pipeline", "name"]],
|
|
434
433
|
"foreign_keys": {"pipeline": [{"pipeline_partition_key": "string"}, "Pipeline", ["partition_key"]]},
|
|
435
434
|
},
|
|
436
435
|
"description": "Pipeline stage model.\n\nRepresents a stage within a sales pipeline with win probability\nand closed status indicators.",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import ClassVar
|
|
4
4
|
|
|
5
|
-
from amsdal_models.classes.data_models.constraints import UniqueConstraint
|
|
6
5
|
from amsdal_models.classes.data_models.indexes import IndexInfo
|
|
7
6
|
from amsdal_models.classes.model import Model
|
|
8
7
|
from amsdal_utils.models.enums import ModuleType
|
|
@@ -20,9 +19,6 @@ class Stage(Model):
|
|
|
20
19
|
model_config: ClassVar[ConfigDict] = ConfigDict(arbitrary_types_allowed=True)
|
|
21
20
|
|
|
22
21
|
__module_type__: ClassVar[ModuleType] = ModuleType.CONTRIB
|
|
23
|
-
__constraints__: ClassVar[list[UniqueConstraint]] = [
|
|
24
|
-
UniqueConstraint(name='unq_stage_pipeline_name', fields=['pipeline', 'name'])
|
|
25
|
-
]
|
|
26
22
|
__indexes__: ClassVar[list[IndexInfo]] = [
|
|
27
23
|
IndexInfo(name='idx_stage_order', field='order'),
|
|
28
24
|
]
|
|
@@ -126,10 +126,10 @@ class CustomFieldService:
|
|
|
126
126
|
|
|
127
127
|
elif definition.field_type == 'date':
|
|
128
128
|
if isinstance(value, datetime):
|
|
129
|
-
return value
|
|
129
|
+
return value.isoformat()
|
|
130
130
|
# Try parsing ISO format
|
|
131
131
|
try:
|
|
132
|
-
return datetime.fromisoformat(value)
|
|
132
|
+
return datetime.fromisoformat(value).isoformat()
|
|
133
133
|
except (ValueError, AttributeError) as exc:
|
|
134
134
|
msg = f'Invalid date for field {definition.field_name}: {value}'
|
|
135
135
|
raise CustomFieldValidationError(msg) from exc
|
|
@@ -169,11 +169,11 @@ def test_validate_date_field():
|
|
|
169
169
|
# datetime object
|
|
170
170
|
dt = datetime(2026, 1, 15, tzinfo=UTC)
|
|
171
171
|
result = CustomFieldService._validate_field_value(field_def, dt)
|
|
172
|
-
assert result == dt
|
|
172
|
+
assert result == dt.isoformat()
|
|
173
173
|
|
|
174
174
|
# ISO format string
|
|
175
175
|
result = CustomFieldService._validate_field_value(field_def, '2026-01-15T10:30:00')
|
|
176
|
-
assert isinstance(result,
|
|
176
|
+
assert isinstance(result, str)
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
def test_validate_date_field_invalid():
|
|
@@ -107,7 +107,7 @@ wheels = [
|
|
|
107
107
|
|
|
108
108
|
[[package]]
|
|
109
109
|
name = "amsdal"
|
|
110
|
-
version = "0.5.
|
|
110
|
+
version = "0.5.41"
|
|
111
111
|
source = { registry = "https://pypi.org/simple" }
|
|
112
112
|
dependencies = [
|
|
113
113
|
{ name = "amsdal-data" },
|
|
@@ -124,15 +124,15 @@ dependencies = [
|
|
|
124
124
|
{ name = "pyotp" },
|
|
125
125
|
]
|
|
126
126
|
wheels = [
|
|
127
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
128
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
129
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
130
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
131
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
132
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
133
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
134
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
127
|
+
{ url = "https://files.pythonhosted.org/packages/a8/b4/6671fe6c368a81248687cf8b9bc39ef41f85c88359175096b5026fa8f470/amsdal-0.5.41-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:389b96b990fbd00e5824f4763ac614cf83b5fbcd053c2b1ac781ba88ccbb49be", size = 2778916, upload-time = "2026-01-22T22:33:59.542Z" },
|
|
128
|
+
{ url = "https://files.pythonhosted.org/packages/02/ee/d4b08c4a280ac03f1d4df890c22d5924a0021c601e02a5951369ec972e8d/amsdal-0.5.41-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97d82f59de2d364ccb032258bc40d1077d8a4d8ac5d91f86a7cd61c4f209c5ec", size = 7709837, upload-time = "2026-01-22T22:34:01.191Z" },
|
|
129
|
+
{ url = "https://files.pythonhosted.org/packages/a7/2a/cf97bc6dde475c71833080e54da75c9d31fd5d03b1abf952e7f979fe3f7c/amsdal-0.5.41-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1a197c7b1ac713f97c432ff9ad64e925d5a1d3972f759e936c78b68c5a3079fe", size = 7375364, upload-time = "2026-01-22T22:34:14.762Z" },
|
|
130
|
+
{ url = "https://files.pythonhosted.org/packages/4f/87/f6c818e6cbe13b5338facf0e289a36fa6089f74659b23398801b0cb7de2e/amsdal-0.5.41-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3d0acfad85c765eac6eb1f56ec8fdbbcc06a5243e67fb545cc67769f29a59e14", size = 2775803, upload-time = "2026-01-22T22:34:11.306Z" },
|
|
131
|
+
{ url = "https://files.pythonhosted.org/packages/83/f5/4b7b93656bb08e2a52ecef3052fdec0eac75f1dbf2ded2d382d938258337/amsdal-0.5.41-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a501c88a28a947f997a2405a421ee9a11677a6884e33c4e9631b1ddd89880bcc", size = 8030669, upload-time = "2026-01-22T22:33:57.644Z" },
|
|
132
|
+
{ url = "https://files.pythonhosted.org/packages/ee/64/74961a94d7fedeb537ad0ff1f6cd1fd23b2e7c2633f8f08a8da8f2f858cd/amsdal-0.5.41-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39ac2c21a387cd9ddf57a2fd19da9af4e35905fc06bc7c64018bf3badea4a98c", size = 7707164, upload-time = "2026-01-22T22:34:07.198Z" },
|
|
133
|
+
{ url = "https://files.pythonhosted.org/packages/b5/a2/ba04a3d9a77a80120a50c0fbbf5545b313ff4501a9b8290f1e26d4d0f10c/amsdal-0.5.41-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:695aa28e27e8cc1c251f5580bbff6953373823bd34273ab0e57c72813dd504eb", size = 2676231, upload-time = "2026-01-22T22:34:13.18Z" },
|
|
134
|
+
{ url = "https://files.pythonhosted.org/packages/69/54/1d48e17e14d5754eda046082e297eb1b7c98e8c6a0351c3703af5b00f5cd/amsdal-0.5.41-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4216a65712c527d79fa044c8ac3c79ebeef7c0c7245ab82f6f554fd5ce9760ed", size = 7654861, upload-time = "2026-01-22T22:34:03.162Z" },
|
|
135
|
+
{ url = "https://files.pythonhosted.org/packages/99/bb/e345fc5e2c8a9e36555dec5e946e1723ba7e48ab391d1c897c0fb63719a4/amsdal-0.5.41-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9742ea09909ab2872f615c514a340b64258250dcb5951cc75335960faf98de2c", size = 7317493, upload-time = "2026-01-22T22:34:05.174Z" },
|
|
136
136
|
]
|
|
137
137
|
|
|
138
138
|
[[package]]
|
|
@@ -332,7 +332,7 @@ wheels = [
|
|
|
332
332
|
|
|
333
333
|
[[package]]
|
|
334
334
|
name = "amsdal-server"
|
|
335
|
-
version = "0.5.
|
|
335
|
+
version = "0.5.16"
|
|
336
336
|
source = { registry = "https://pypi.org/simple" }
|
|
337
337
|
dependencies = [
|
|
338
338
|
{ name = "amsdal" },
|
|
@@ -345,9 +345,9 @@ dependencies = [
|
|
|
345
345
|
{ name = "pydantic-settings" },
|
|
346
346
|
{ name = "uvicorn" },
|
|
347
347
|
]
|
|
348
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
348
|
+
sdist = { url = "https://files.pythonhosted.org/packages/09/b4/46f0f78735ecca4ee0d97b59060e4b90eaf35f7551801468effeea2a9432/amsdal_server-0.5.16.tar.gz", hash = "sha256:0b32b3ca80c2e6401edc6b5973cbd35a4fa3b81db26128505ab964287a73f3fe", size = 182577, upload-time = "2026-01-23T10:57:48.351Z" }
|
|
349
349
|
wheels = [
|
|
350
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
350
|
+
{ url = "https://files.pythonhosted.org/packages/c3/18/5a1e03019694e34240c23d51823ea2c1e7b9c528a4a648781e4877907f5f/amsdal_server-0.5.16-py3-none-any.whl", hash = "sha256:7a839a60c53c7335ef178e84a414063837427fccf124f757d1a17f49aa157294", size = 99424, upload-time = "2026-01-23T10:57:46.366Z" },
|
|
351
351
|
]
|
|
352
352
|
|
|
353
353
|
[[package]]
|
|
@@ -1988,11 +1988,11 @@ wheels = [
|
|
|
1988
1988
|
|
|
1989
1989
|
[[package]]
|
|
1990
1990
|
name = "packaging"
|
|
1991
|
-
version = "
|
|
1991
|
+
version = "26.0"
|
|
1992
1992
|
source = { registry = "https://pypi.org/simple" }
|
|
1993
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1993
|
+
sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
|
|
1994
1994
|
wheels = [
|
|
1995
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1995
|
+
{ url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
|
|
1996
1996
|
]
|
|
1997
1997
|
|
|
1998
1998
|
[[package]]
|
|
@@ -2520,11 +2520,11 @@ wheels = [
|
|
|
2520
2520
|
|
|
2521
2521
|
[[package]]
|
|
2522
2522
|
name = "pycparser"
|
|
2523
|
-
version = "
|
|
2523
|
+
version = "3.0"
|
|
2524
2524
|
source = { registry = "https://pypi.org/simple" }
|
|
2525
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
2525
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" }
|
|
2526
2526
|
wheels = [
|
|
2527
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2527
|
+
{ url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" },
|
|
2528
2528
|
]
|
|
2529
2529
|
|
|
2530
2530
|
[[package]]
|
|
@@ -3139,28 +3139,28 @@ wheels = [
|
|
|
3139
3139
|
|
|
3140
3140
|
[[package]]
|
|
3141
3141
|
name = "ruff"
|
|
3142
|
-
version = "0.14.
|
|
3143
|
-
source = { registry = "https://pypi.org/simple" }
|
|
3144
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
3145
|
-
wheels = [
|
|
3146
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3147
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3148
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3149
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3150
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3151
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3152
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3153
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3154
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3155
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3156
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3157
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3158
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3159
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3160
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3161
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3162
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3163
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3142
|
+
version = "0.14.14"
|
|
3143
|
+
source = { registry = "https://pypi.org/simple" }
|
|
3144
|
+
sdist = { url = "https://files.pythonhosted.org/packages/2e/06/f71e3a86b2df0dfa2d2f72195941cd09b44f87711cb7fa5193732cb9a5fc/ruff-0.14.14.tar.gz", hash = "sha256:2d0f819c9a90205f3a867dbbd0be083bee9912e170fd7d9704cc8ae45824896b", size = 4515732, upload-time = "2026-01-22T22:30:17.527Z" }
|
|
3145
|
+
wheels = [
|
|
3146
|
+
{ url = "https://files.pythonhosted.org/packages/d2/89/20a12e97bc6b9f9f68343952da08a8099c57237aef953a56b82711d55edd/ruff-0.14.14-py3-none-linux_armv6l.whl", hash = "sha256:7cfe36b56e8489dee8fbc777c61959f60ec0f1f11817e8f2415f429552846aed", size = 10467650, upload-time = "2026-01-22T22:30:08.578Z" },
|
|
3147
|
+
{ url = "https://files.pythonhosted.org/packages/a3/b1/c5de3fd2d5a831fcae21beda5e3589c0ba67eec8202e992388e4b17a6040/ruff-0.14.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6006a0082336e7920b9573ef8a7f52eec837add1265cc74e04ea8a4368cd704c", size = 10883245, upload-time = "2026-01-22T22:30:04.155Z" },
|
|
3148
|
+
{ url = "https://files.pythonhosted.org/packages/b8/7c/3c1db59a10e7490f8f6f8559d1db8636cbb13dccebf18686f4e3c9d7c772/ruff-0.14.14-py3-none-macosx_11_0_arm64.whl", hash = "sha256:026c1d25996818f0bf498636686199d9bd0d9d6341c9c2c3b62e2a0198b758de", size = 10231273, upload-time = "2026-01-22T22:30:34.642Z" },
|
|
3149
|
+
{ url = "https://files.pythonhosted.org/packages/a1/6e/5e0e0d9674be0f8581d1f5e0f0a04761203affce3232c1a1189d0e3b4dad/ruff-0.14.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f666445819d31210b71e0a6d1c01e24447a20b85458eea25a25fe8142210ae0e", size = 10585753, upload-time = "2026-01-22T22:30:31.781Z" },
|
|
3150
|
+
{ url = "https://files.pythonhosted.org/packages/23/09/754ab09f46ff1884d422dc26d59ba18b4e5d355be147721bb2518aa2a014/ruff-0.14.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c0f18b922c6d2ff9a5e6c3ee16259adc513ca775bcf82c67ebab7cbd9da5bc8", size = 10286052, upload-time = "2026-01-22T22:30:24.827Z" },
|
|
3151
|
+
{ url = "https://files.pythonhosted.org/packages/c8/cc/e71f88dd2a12afb5f50733851729d6b571a7c3a35bfdb16c3035132675a0/ruff-0.14.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1629e67489c2dea43e8658c3dba659edbfd87361624b4040d1df04c9740ae906", size = 11043637, upload-time = "2026-01-22T22:30:13.239Z" },
|
|
3152
|
+
{ url = "https://files.pythonhosted.org/packages/67/b2/397245026352494497dac935d7f00f1468c03a23a0c5db6ad8fc49ca3fb2/ruff-0.14.14-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:27493a2131ea0f899057d49d303e4292b2cae2bb57253c1ed1f256fbcd1da480", size = 12194761, upload-time = "2026-01-22T22:30:22.542Z" },
|
|
3153
|
+
{ url = "https://files.pythonhosted.org/packages/5b/06/06ef271459f778323112c51b7587ce85230785cd64e91772034ddb88f200/ruff-0.14.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01ff589aab3f5b539e35db38425da31a57521efd1e4ad1ae08fc34dbe30bd7df", size = 12005701, upload-time = "2026-01-22T22:30:20.499Z" },
|
|
3154
|
+
{ url = "https://files.pythonhosted.org/packages/41/d6/99364514541cf811ccc5ac44362f88df66373e9fec1b9d1c4cc830593fe7/ruff-0.14.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cc12d74eef0f29f51775f5b755913eb523546b88e2d733e1d701fe65144e89b", size = 11282455, upload-time = "2026-01-22T22:29:59.679Z" },
|
|
3155
|
+
{ url = "https://files.pythonhosted.org/packages/ca/71/37daa46f89475f8582b7762ecd2722492df26421714a33e72ccc9a84d7a5/ruff-0.14.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb8481604b7a9e75eff53772496201690ce2687067e038b3cc31aaf16aa0b974", size = 11215882, upload-time = "2026-01-22T22:29:57.032Z" },
|
|
3156
|
+
{ url = "https://files.pythonhosted.org/packages/2c/10/a31f86169ec91c0705e618443ee74ede0bdd94da0a57b28e72db68b2dbac/ruff-0.14.14-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:14649acb1cf7b5d2d283ebd2f58d56b75836ed8c6f329664fa91cdea19e76e66", size = 11180549, upload-time = "2026-01-22T22:30:27.175Z" },
|
|
3157
|
+
{ url = "https://files.pythonhosted.org/packages/fd/1e/c723f20536b5163adf79bdd10c5f093414293cdf567eed9bdb7b83940f3f/ruff-0.14.14-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8058d2145566510790eab4e2fad186002e288dec5e0d343a92fe7b0bc1b3e13", size = 10543416, upload-time = "2026-01-22T22:30:01.964Z" },
|
|
3158
|
+
{ url = "https://files.pythonhosted.org/packages/3e/34/8a84cea7e42c2d94ba5bde1d7a4fae164d6318f13f933d92da6d7c2041ff/ruff-0.14.14-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e651e977a79e4c758eb807f0481d673a67ffe53cfa92209781dfa3a996cf8412", size = 10285491, upload-time = "2026-01-22T22:30:29.51Z" },
|
|
3159
|
+
{ url = "https://files.pythonhosted.org/packages/55/ef/b7c5ea0be82518906c978e365e56a77f8de7678c8bb6651ccfbdc178c29f/ruff-0.14.14-py3-none-musllinux_1_2_i686.whl", hash = "sha256:cc8b22da8d9d6fdd844a68ae937e2a0adf9b16514e9a97cc60355e2d4b219fc3", size = 10733525, upload-time = "2026-01-22T22:30:06.499Z" },
|
|
3160
|
+
{ url = "https://files.pythonhosted.org/packages/6a/5b/aaf1dfbcc53a2811f6cc0a1759de24e4b03e02ba8762daabd9b6bd8c59e3/ruff-0.14.14-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:16bc890fb4cc9781bb05beb5ab4cd51be9e7cb376bf1dd3580512b24eb3fda2b", size = 11315626, upload-time = "2026-01-22T22:30:36.848Z" },
|
|
3161
|
+
{ url = "https://files.pythonhosted.org/packages/2c/aa/9f89c719c467dfaf8ad799b9bae0df494513fb21d31a6059cb5870e57e74/ruff-0.14.14-py3-none-win32.whl", hash = "sha256:b530c191970b143375b6a68e6f743800b2b786bbcf03a7965b06c4bf04568167", size = 10502442, upload-time = "2026-01-22T22:30:38.93Z" },
|
|
3162
|
+
{ url = "https://files.pythonhosted.org/packages/87/44/90fa543014c45560cae1fffc63ea059fb3575ee6e1cb654562197e5d16fb/ruff-0.14.14-py3-none-win_amd64.whl", hash = "sha256:3dde1435e6b6fe5b66506c1dff67a421d0b7f6488d466f651c07f4cab3bf20fd", size = 11630486, upload-time = "2026-01-22T22:30:10.852Z" },
|
|
3163
|
+
{ url = "https://files.pythonhosted.org/packages/9e/6a/40fee331a52339926a92e17ae748827270b288a35ef4a15c9c8f2ec54715/ruff-0.14.14-py3-none-win_arm64.whl", hash = "sha256:56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c", size = 10920448, upload-time = "2026-01-22T22:30:15.417Z" },
|
|
3164
3164
|
]
|
|
3165
3165
|
|
|
3166
3166
|
[[package]]
|
|
@@ -3550,11 +3550,11 @@ wheels = [
|
|
|
3550
3550
|
|
|
3551
3551
|
[[package]]
|
|
3552
3552
|
name = "wcwidth"
|
|
3553
|
-
version = "0.
|
|
3553
|
+
version = "0.3.1"
|
|
3554
3554
|
source = { registry = "https://pypi.org/simple" }
|
|
3555
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
3555
|
+
sdist = { url = "https://files.pythonhosted.org/packages/25/6f/e1ea6dcb21da43d581284d8d5a715c2affb906aa3ed301f77f7f5ae0e7d5/wcwidth-0.3.1.tar.gz", hash = "sha256:5aedb626a9c0d941b990cfebda848d538d45c9493a3384d080aff809143bd3be", size = 233057, upload-time = "2026-01-22T22:08:25.231Z" }
|
|
3556
3556
|
wheels = [
|
|
3557
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
3557
|
+
{ url = "https://files.pythonhosted.org/packages/d7/9c/9d951691bf1224772f6082d3b2e8c110edfd9622627908ad75bb0f691979/wcwidth-0.3.1-py3-none-any.whl", hash = "sha256:b2d355df3ec5d51bfc973a22fb4ea9a03b12fdcbf00d0abd22a2c78b12ccc177", size = 85746, upload-time = "2026-01-22T22:08:23.564Z" },
|
|
3558
3558
|
]
|
|
3559
3559
|
|
|
3560
3560
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.1.5'
|
|
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
|