onecdc 1.0.2__tar.gz → 1.2.0__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.
- {onecdc-1.0.2 → onecdc-1.2.0}/.env.example +3 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/.github/workflows/ci.yml +6 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/CHANGELOG.md +179 -68
- {onecdc-1.0.2 → onecdc-1.2.0}/DESIGN.md +293 -329
- {onecdc-1.0.2 → onecdc-1.2.0}/Dockerfile +6 -6
- {onecdc-1.0.2 → onecdc-1.2.0}/PKG-INFO +144 -117
- onecdc-1.2.0/PLAN.md +38 -0
- onecdc-1.2.0/README.md +398 -0
- onecdc-1.2.0/README_API.md +258 -0
- onecdc-1.2.0/README_DB.md +381 -0
- onecdc-1.2.0/README_ENV.md +142 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/README.md +11 -12
- onecdc-1.2.0/attic/subconto_export.py +458 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/audit/audit_0.2.1.html +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/audit/audit_status_0.2.1.md +62 -61
- onecdc-1.2.0/config/handlers/__init__.py +16 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/config/handlers/zakazy_klientov.py +33 -39
- onecdc-1.2.0/config/handlers/zakazy_klientov_clickhouse.py +170 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/config/handlers/zakazy_klientov_grouped.py +34 -34
- onecdc-1.2.0/config/handlers/zakazy_klientov_grouped_clickhouse.py +200 -0
- onecdc-1.2.0/config/runner.py +163 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/docker-compose.yml +11 -14
- {onecdc-1.0.2 → onecdc-1.2.0}/examples/full_load_once.py +5 -6
- onecdc-1.2.0/examples/replicate_forever.py +53 -0
- onecdc-1.0.2/onecdc-form-module.txt → onecdc-1.2.0/onecdc-form-module.bsl +67 -22
- onecdc-1.0.2/onecdc-throttle-module.txt → onecdc-1.2.0/onecdc-throttle-module.bsl +6 -4
- onecdc-1.2.0/onecdc.epf +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/pyproject.toml +25 -16
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/__main__.py +29 -32
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/change_reader.py +30 -50
- onecdc-1.2.0/src/onecdc/common_functions.py +441 -0
- onecdc-1.2.0/src/onecdc/cron_runner.py +210 -0
- onecdc-1.2.0/src/onecdc/data_reader.py +920 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/db_logs.py +49 -72
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/db_writer.py +32 -43
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/full_load_claim.py +39 -59
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/full_load_keys.py +35 -51
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/handlers.py +161 -275
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/lease.py +48 -77
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/logging_config.py +10 -11
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/metadata_reader.py +61 -87
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/name_mapper.py +21 -30
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/replicator.py +213 -234
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/stop_signal.py +18 -22
- onecdc-1.2.0/src/onecdc/write_tracker.py +348 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/conftest.py +3 -3
- onecdc-1.2.0/tests/debug_config.py +88 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/debug_docker.sh +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/debug_run_forever.py +1 -1
- onecdc-1.2.0/tests/env_latest.sh +8 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/fake_1c.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/record_1c.py +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_cdc_run_once.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_cleared_attributes.py +4 -4
- onecdc-1.2.0/tests/test_clickhouse_handlers.py +292 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_composite_values.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_concurrent_merge.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_config_validation.py +7 -7
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_cron_runner.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_debug_config.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_documentation.py +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_emptied_record_set.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_empty_table_part.py +9 -8
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_entrypoint.py +27 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_examples.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_exclusivity.py +34 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_full_load.py +21 -21
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_full_load_claim.py +6 -6
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_handlers.py +16 -16
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_log_retention.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_mark_missing.py +150 -16
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_metadata_concurrency.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_metadata_objects.py +12 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_name_mapper.py +4 -4
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_number_precision.py +4 -11
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_object_classes.py +6 -42
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_packaging.py +9 -9
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_parameter_validation.py +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_register_metadata_classes.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_register_recorder_key.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_response_size_limit.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_response_trust.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_runner_template.py +32 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_schema_migration.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_secrets_in_logs.py +6 -6
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_signal_delivery.py +4 -4
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_snapshot_guard.py +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_sql_and_url_building.py +63 -6
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_stop_behaviour.py +5 -5
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_temp_schema.py +1 -1
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_timestamptz_migration.py +10 -10
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_type_change.py +2 -2
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_unknown_types.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_unparseable_object.py +3 -3
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_version_guard.py +7 -7
- onecdc-1.2.0/uv.lock +1317 -0
- onecdc-1.0.2/PLAN.md +0 -39
- onecdc-1.0.2/README.md +0 -374
- onecdc-1.0.2/README_API.md +0 -245
- onecdc-1.0.2/README_DB.md +0 -387
- onecdc-1.0.2/README_ENV.md +0 -132
- onecdc-1.0.2/config/handlers/__init__.py +0 -12
- onecdc-1.0.2/config/runner.py +0 -172
- onecdc-1.0.2/examples/replicate_forever.py +0 -56
- onecdc-1.0.2/onecdc.epf +0 -0
- onecdc-1.0.2/src/onecdc/common_functions.py +0 -447
- onecdc-1.0.2/src/onecdc/cron_runner.py +0 -247
- onecdc-1.0.2/src/onecdc/data_reader.py +0 -1401
- onecdc-1.0.2/src/onecdc/write_tracker.py +0 -329
- onecdc-1.0.2/tests/debug_config.py +0 -90
- onecdc-1.0.2/tests/env_latest.sh +0 -6
- onecdc-1.0.2/tests/test_accounting_ext_dimensions.py +0 -415
- onecdc-1.0.2/tests/test_json_export.py +0 -101
- onecdc-1.0.2/uv.lock +0 -754
- {onecdc-1.0.2 → onecdc-1.2.0}/.dockerignore +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/.gitignore +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/LICENSE +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/clear-all-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/clear-all-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/clear-object-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/clear-object-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/init-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/init-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/logo_dark.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/logo_light.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/make-icons.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/menu-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/menu-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/modes.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/modes.svg +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/odata-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/odata-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/refresh-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/refresh-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/scheme.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/scheme.svg +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/service-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/service-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/upload-all-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/upload-all-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/upload-object-32.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/assets/upload-object-64.png +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/doc/developer_guide_xml.pdf +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/docker-entrypoint.sh +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/__init__.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/src/onecdc/py.typed +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/buh_demo1.env +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/debug_buh.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/debug_trade.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/manifest.json +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg001_metadata.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg002_nomenklatura.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg003_zakaz_klienta.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg004_kontragenti.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg005_zakaz_klienta_2.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/responses/trade_demo_8.5/msg006_realizatsiya.xml +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_empty_set_line_number.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_error_handling.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_logging.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_noise_and_tombstones.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/test_pipeline_replay.py +0 -0
- {onecdc-1.0.2 → onecdc-1.2.0}/tests/trade_demo1.env +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Значения для docker compose: скопируйте в .env рядом (он в .gitignore) и заполните.
|
|
2
2
|
# cp .env.example .env
|
|
3
3
|
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
4
|
+
# Docker Compose подставляет отсюда только значения, указанные в compose-файле как ${ИМЯ};
|
|
5
|
+
# остальные настройки в примере docker-compose.yml заданы явно. `uv run --env-file .env …`
|
|
6
|
+
# передаёт весь файл в окружение. Тестовые стенды описаны отдельно: tests/debug_config.py.
|
|
6
7
|
|
|
7
8
|
# --- обязательные ---
|
|
8
9
|
ONECDC_ODATA_URL=http://server/base/odata/standard.odata
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
# бы каждый раз из «последних» версий.
|
|
40
40
|
- run: uv sync --extra dev --locked
|
|
41
41
|
# Тесты, которым нужна живая 1С, помечены integration и отсеиваются addopts из pyproject.
|
|
42
|
-
#
|
|
42
|
+
# PostgreSQL для тестов с фикстурой db запускается в services выше.
|
|
43
43
|
- run: uv run pytest -q
|
|
44
44
|
env:
|
|
45
45
|
ONECDC_TEST_DB_URL: postgresql+psycopg2://postgres:postgres@localhost:5432/onecdc
|
|
@@ -51,3 +51,8 @@ jobs:
|
|
|
51
51
|
#
|
|
52
52
|
# Маска обязательна: в dist/ копятся артефакты прошлых версий, и публикация без неё спотыкается
|
|
53
53
|
# об уже выложенное.
|
|
54
|
+
#
|
|
55
|
+
# Не `twine upload` из PATH. Системный twine бывает старым (5.0.0 с pkginfo 1.9.6 знает метаданные
|
|
56
|
+
# до 2.2), а hatchling собирает с Metadata-Version 2.5 — и такой twine падает с «Metadata is
|
|
57
|
+
# missing required fields: Name, Version», хотя оба поля на месте. Ловушка срабатывала дважды.
|
|
58
|
+
# Нужен twine — берите его отдельным окружением: `uvx twine upload dist/onecdc-<версия>*`.
|