codex-services 0.1.0__tar.gz → 0.1.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.
- codex_services-0.1.2/.github/workflows/ci.yml +80 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/.github/workflows/docs.yml +15 -15
- {codex_services-0.1.0 → codex_services-0.1.2}/.github/workflows/publish.yml +7 -10
- {codex_services-0.1.0 → codex_services-0.1.2}/.gitignore +1 -0
- codex_services-0.1.2/.python-version +1 -0
- codex_services-0.1.2/CHANGELOG.md +53 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/PKG-INFO +15 -5
- {codex_services-0.1.0 → codex_services-0.1.2}/README.md +12 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/pyproject.toml +4 -6
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/modes.py +1 -9
- codex_services-0.1.2/tests/integration/test_booking_components_integration.py +593 -0
- codex_services-0.1.2/tests/integration/test_calendar_integration.py +165 -0
- codex_services-0.1.2/tests/integration/test_chain_finder_integration.py +928 -0
- codex_services-0.1.2/tools/dev/check.py +22 -0
- codex_services-0.1.2/uv.lock +1546 -0
- codex_services-0.1.0/.github/workflows/ci.yml +0 -76
- codex_services-0.1.0/CHANGELOG.md +0 -25
- codex_services-0.1.0/tests/integration/test_chain_finder_integration.py +0 -58
- codex_services-0.1.0/tools/dev/check.py +0 -28
- {codex_services-0.1.0 → codex_services-0.1.2}/.pre-commit-config.yaml +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/index.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/shared/calculator.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/shared/dto.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/shared/exceptions.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/shared/interfaces.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/shared/validators.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/api.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/chain_finder.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/dto.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/index.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/modes.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/booking/slot_master/scorer.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/calendar/engine.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/calendar/index.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/api/index.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/architecture/README.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/en/architecture/booking_engine.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/evolution/changelog.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/index.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/ru/architecture/README.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/ru/architecture/booking_engine.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/docs/stylesheets/extra.css +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/mkdocs.yml +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/project_structure.txt +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/scripts/generate_api_docs.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/calculator.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/dto.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/exceptions.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/interfaces.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/_shared/validators.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/room/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/api.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/chain_finder.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/dto.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/scorer.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/calendar/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/calendar/engine.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/py.typed +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/conftest.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/integration/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/integration/conftest.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/conftest.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_api.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_booking_validator.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_calendar_engine.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_chain_finder.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_dto.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_exceptions.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_scorer.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tests/unit/test_slot_calculator.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tools/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tools/dev/README.md +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tools/dev/__init__.py +0 -0
- {codex_services-0.1.0 → codex_services-0.1.2}/tools/dev/generate_project_tree.py +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: CI Pipeline
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [develop, main]
|
|
6
|
+
paths-ignore: ["**.md", "docs/**", ".gitignore"]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
quality-gate:
|
|
12
|
+
name: Quality Gate
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
env:
|
|
15
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
- uses: astral-sh/setup-uv@v7
|
|
22
|
+
with:
|
|
23
|
+
version: "0.10.7"
|
|
24
|
+
|
|
25
|
+
- name: Sync dev environment
|
|
26
|
+
run: uv sync --locked --extra dev
|
|
27
|
+
|
|
28
|
+
- name: Run pre-commit
|
|
29
|
+
run: uv run python tools/dev/check.py --lint
|
|
30
|
+
|
|
31
|
+
- name: Run pip-audit
|
|
32
|
+
run: uv run python tools/dev/check.py --security
|
|
33
|
+
|
|
34
|
+
- name: Run mypy
|
|
35
|
+
run: uv run python tools/dev/check.py --types
|
|
36
|
+
|
|
37
|
+
unit-tests:
|
|
38
|
+
name: Unit Tests (Python ${{ matrix.python-version }})
|
|
39
|
+
needs: quality-gate
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
strategy:
|
|
42
|
+
matrix:
|
|
43
|
+
python-version: ["3.12", "3.13"]
|
|
44
|
+
env:
|
|
45
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
- uses: actions/setup-python@v5
|
|
49
|
+
with:
|
|
50
|
+
python-version: ${{ matrix.python-version }}
|
|
51
|
+
- uses: astral-sh/setup-uv@v7
|
|
52
|
+
with:
|
|
53
|
+
version: "0.10.7"
|
|
54
|
+
|
|
55
|
+
- name: Sync dev environment
|
|
56
|
+
run: uv sync --locked --extra dev
|
|
57
|
+
|
|
58
|
+
- name: Run unit tests
|
|
59
|
+
run: uv run pytest tests/ -m "unit" -v --tb=short
|
|
60
|
+
|
|
61
|
+
integration-tests:
|
|
62
|
+
name: Integration Tests
|
|
63
|
+
needs: unit-tests
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
env:
|
|
66
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
67
|
+
steps:
|
|
68
|
+
- uses: actions/checkout@v4
|
|
69
|
+
- uses: actions/setup-python@v5
|
|
70
|
+
with:
|
|
71
|
+
python-version: "3.12"
|
|
72
|
+
- uses: astral-sh/setup-uv@v7
|
|
73
|
+
with:
|
|
74
|
+
version: "0.10.7"
|
|
75
|
+
|
|
76
|
+
- name: Sync dev environment
|
|
77
|
+
run: uv sync --locked --extra dev
|
|
78
|
+
|
|
79
|
+
- name: Run integration tests
|
|
80
|
+
run: uv run pytest tests/ -m "integration" -v --tb=short
|
|
@@ -3,16 +3,16 @@ name: Deploy Docs
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
-
|
|
6
|
+
- "v*"
|
|
7
7
|
workflow_dispatch:
|
|
8
8
|
inputs:
|
|
9
9
|
version:
|
|
10
|
-
description:
|
|
10
|
+
description: "Version alias to deploy (e.g. 0.x, 1.x)"
|
|
11
11
|
required: true
|
|
12
12
|
alias:
|
|
13
|
-
description:
|
|
13
|
+
description: "Alias (latest, stable, or leave empty)"
|
|
14
14
|
required: false
|
|
15
|
-
default:
|
|
15
|
+
default: "latest"
|
|
16
16
|
|
|
17
17
|
env:
|
|
18
18
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
@@ -39,33 +39,33 @@ jobs:
|
|
|
39
39
|
uses: actions/setup-python@v5
|
|
40
40
|
with:
|
|
41
41
|
python-version: "3.12"
|
|
42
|
-
|
|
42
|
+
- uses: astral-sh/setup-uv@v7
|
|
43
|
+
with:
|
|
44
|
+
version: "0.10.7"
|
|
43
45
|
|
|
44
|
-
- name:
|
|
45
|
-
run:
|
|
46
|
-
python -m pip install --upgrade pip
|
|
47
|
-
pip install -e ".[docs]"
|
|
46
|
+
- name: Sync docs environment
|
|
47
|
+
run: uv sync --locked --extra docs
|
|
48
48
|
|
|
49
49
|
- name: Resolve version alias (tag push)
|
|
50
50
|
if: github.event_name == 'push'
|
|
51
51
|
id: version
|
|
52
52
|
run: |
|
|
53
|
-
TAG="${GITHUB_REF_NAME}"
|
|
53
|
+
TAG="${GITHUB_REF_NAME}"
|
|
54
54
|
MAJOR=$(echo "$TAG" | sed 's/^v//' | cut -d. -f1)
|
|
55
55
|
echo "alias=${MAJOR}.x" >> "$GITHUB_OUTPUT"
|
|
56
56
|
|
|
57
57
|
- name: Deploy versioned docs (tag push)
|
|
58
58
|
if: github.event_name == 'push'
|
|
59
59
|
run: |
|
|
60
|
-
mike deploy --push --update-aliases "${{ steps.version.outputs.alias }}" latest
|
|
61
|
-
mike set-default --push latest
|
|
60
|
+
uv run mike deploy --push --update-aliases "${{ steps.version.outputs.alias }}" latest
|
|
61
|
+
uv run mike set-default --push latest
|
|
62
62
|
|
|
63
63
|
- name: Deploy versioned docs (manual)
|
|
64
64
|
if: github.event_name == 'workflow_dispatch'
|
|
65
65
|
run: |
|
|
66
66
|
if [ -n "${{ inputs.alias }}" ]; then
|
|
67
|
-
mike deploy --push --update-aliases "${{ inputs.version }}" "${{ inputs.alias }}"
|
|
67
|
+
uv run mike deploy --push --update-aliases "${{ inputs.version }}" "${{ inputs.alias }}"
|
|
68
68
|
else
|
|
69
|
-
mike deploy --push "${{ inputs.version }}"
|
|
69
|
+
uv run mike deploy --push "${{ inputs.version }}"
|
|
70
70
|
fi
|
|
71
|
-
mike set-default --push latest
|
|
71
|
+
uv run mike set-default --push latest
|
|
@@ -3,7 +3,7 @@ name: Publish to PyPI
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
-
|
|
6
|
+
- "v*"
|
|
7
7
|
|
|
8
8
|
jobs:
|
|
9
9
|
build-n-publish:
|
|
@@ -11,7 +11,7 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
environment:
|
|
13
13
|
name: pypi
|
|
14
|
-
url: https://pypi.org/project/codex-
|
|
14
|
+
url: https://pypi.org/project/codex-services/
|
|
15
15
|
permissions:
|
|
16
16
|
id-token: write
|
|
17
17
|
contents: read
|
|
@@ -26,18 +26,15 @@ jobs:
|
|
|
26
26
|
uses: actions/setup-python@v5
|
|
27
27
|
with:
|
|
28
28
|
python-version: "3.12"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
run: |
|
|
33
|
-
python -m pip install --upgrade pip
|
|
34
|
-
python -m pip install build twine hatchling
|
|
29
|
+
- uses: astral-sh/setup-uv@v7
|
|
30
|
+
with:
|
|
31
|
+
version: "0.10.7"
|
|
35
32
|
|
|
36
33
|
- name: Build sdist and wheel
|
|
37
|
-
run:
|
|
34
|
+
run: uv build --no-sources
|
|
38
35
|
|
|
39
36
|
- name: Check artifacts
|
|
40
|
-
run: twine check dist/*
|
|
37
|
+
run: uvx twine check dist/*
|
|
41
38
|
|
|
42
39
|
- name: Publish to PyPI
|
|
43
40
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- Type: TRACKING -->
|
|
2
|
+
|
|
3
|
+
# Changelog
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
All notable changes to this project will be documented in this file.
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.1.2] - 2026-03-29
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Development tooling**:
|
|
14
|
+
- Added `.python-version` for a consistent local Python baseline.
|
|
15
|
+
- Added committed `uv.lock` for reproducible dependency resolution in CI, docs, and local development.
|
|
16
|
+
- Adopted the new `BaseCheckRunner` stage flags so project quality-gate policy is declared through the shared `codex-core` runner contract.
|
|
17
|
+
- **README**:
|
|
18
|
+
- Documented the Python 3.12+ requirement and the recommended `uv` development workflow.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- **Python baseline**:
|
|
22
|
+
- Raised the minimum supported Python version to `3.12`.
|
|
23
|
+
- Updated static analysis targets (`ruff`, `mypy`) to Python 3.12.
|
|
24
|
+
- **CI / Docs / Publish pipelines**:
|
|
25
|
+
- Migrated GitHub Actions workflows to `uv`.
|
|
26
|
+
- Updated the PyPI publish workflow to use the correct `codex-services` project URL.
|
|
27
|
+
- **Core dependency**:
|
|
28
|
+
- Updated the supported `codex-core` dependency range to `>=0.2.0,<0.3.0` to align with the shared quality-gate runner behavior across the current `0.2.x` line.
|
|
29
|
+
- **Booking modes**:
|
|
30
|
+
- Simplified `BookingMode` to use the standard library `StrEnum` directly now that Python 3.12 is required.
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
- **Security checks**:
|
|
34
|
+
- Configured the project quality runner to ignore `CVE-2026-4539` for `pygments` because no upstream fix is available yet.
|
|
35
|
+
|
|
36
|
+
## [0.1.1] - 2026-03-20
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
- **Core Library Architecture**: Initial split from monolithic `codex_tools` repository.
|
|
40
|
+
- **CRM Booking Engine** (`codex_services.crm.booking`):
|
|
41
|
+
- Unified API for availability and reservations.
|
|
42
|
+
- Multi-mode support: `STRICT`, `FLEXIBLE`, and `OVERBOOK`.
|
|
43
|
+
- Interfaces and algorithms for finding overlapping or chained slots (`chain_finder`, `scorer`).
|
|
44
|
+
- Validation engines for business constraints (`validators`).
|
|
45
|
+
- Strict immutable DTOs and custom exceptions.
|
|
46
|
+
- **CRM Calculator Engine** (`codex_services.crm.calculator`):
|
|
47
|
+
- `SlotCalculator` for dynamically analyzing duration and capacity based on business constraints.
|
|
48
|
+
- **CRM Calendar Engine** (`codex_services.crm.calendar`):
|
|
49
|
+
- Complete engine for shift generation, schedule building, and timezone-aware recurring events.
|
|
50
|
+
- **Documentation**:
|
|
51
|
+
- Implemented standard 6-layer `DocArchitect` layout (API, Architecture, Tasks, Evolution, Landing, Planning).
|
|
52
|
+
- Structured API reference using `mkdocstrings`.
|
|
53
|
+
- Multi-language support structure designed (en/ru).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codex-services
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Reusable business logic engines for Codex platform (CRM, finance, HR, inventory)
|
|
5
5
|
Project-URL: Homepage, https://github.com/codexdlc/codex-services
|
|
6
6
|
Project-URL: Documentation, https://codexdlc.github.io/codex-services/
|
|
@@ -12,12 +12,10 @@ Keywords: booking,business,calculator,crm,scheduling,waas
|
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
-
Requires-Python: >=3.
|
|
20
|
-
Requires-Dist: codex-core
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
|
+
Requires-Dist: codex-core<0.3.0,>=0.2.0
|
|
21
19
|
Requires-Dist: pydantic<3.0,>=2.0
|
|
22
20
|
Provides-Extra: all
|
|
23
21
|
Requires-Dist: holidays>=0.40; extra == 'all'
|
|
@@ -65,6 +63,18 @@ pip install codex-services
|
|
|
65
63
|
pip install "codex-services[calendar]"
|
|
66
64
|
```
|
|
67
65
|
|
|
66
|
+
Requires Python 3.12 or newer.
|
|
67
|
+
|
|
68
|
+
## Development
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
uv sync --extra dev
|
|
72
|
+
uv run pytest
|
|
73
|
+
uv run mypy src/
|
|
74
|
+
uv run pre-commit run --all-files
|
|
75
|
+
uv build --no-sources
|
|
76
|
+
```
|
|
77
|
+
|
|
68
78
|
## Quick Start
|
|
69
79
|
|
|
70
80
|
```python
|
|
@@ -20,6 +20,18 @@ pip install codex-services
|
|
|
20
20
|
pip install "codex-services[calendar]"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
Requires Python 3.12 or newer.
|
|
24
|
+
|
|
25
|
+
## Development
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
uv sync --extra dev
|
|
29
|
+
uv run pytest
|
|
30
|
+
uv run mypy src/
|
|
31
|
+
uv run pre-commit run --all-files
|
|
32
|
+
uv build --no-sources
|
|
33
|
+
```
|
|
34
|
+
|
|
23
35
|
## Quick Start
|
|
24
36
|
|
|
25
37
|
```python
|
|
@@ -8,21 +8,19 @@ dynamic = ["version"]
|
|
|
8
8
|
description = "Reusable business logic engines for Codex platform (CRM, finance, HR, inventory)"
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
11
|
-
requires-python = ">=3.
|
|
11
|
+
requires-python = ">=3.12"
|
|
12
12
|
authors = [{ name = "CodexDLC" }]
|
|
13
13
|
keywords = ["booking", "scheduling", "calculator", "crm", "business", "waas"]
|
|
14
14
|
classifiers = [
|
|
15
15
|
"Development Status :: 3 - Alpha",
|
|
16
16
|
"Intended Audience :: Developers",
|
|
17
17
|
"License :: OSI Approved :: Apache Software License",
|
|
18
|
-
"Programming Language :: Python :: 3.10",
|
|
19
|
-
"Programming Language :: Python :: 3.11",
|
|
20
18
|
"Programming Language :: Python :: 3.12",
|
|
21
19
|
"Programming Language :: Python :: 3.13",
|
|
22
20
|
]
|
|
23
21
|
dependencies = [
|
|
24
22
|
"pydantic>=2.0,<3.0",
|
|
25
|
-
"codex-core", # Зависимость от ядра
|
|
23
|
+
"codex-core>=0.2.0,<0.3.0", # Зависимость от ядра
|
|
26
24
|
]
|
|
27
25
|
|
|
28
26
|
[project.urls]
|
|
@@ -66,7 +64,7 @@ source = "vcs"
|
|
|
66
64
|
packages = ["src/codex_services"]
|
|
67
65
|
|
|
68
66
|
[tool.ruff]
|
|
69
|
-
target-version = "
|
|
67
|
+
target-version = "py312"
|
|
70
68
|
line-length = 120
|
|
71
69
|
|
|
72
70
|
[tool.ruff.lint]
|
|
@@ -74,7 +72,7 @@ select = ["E", "F", "I", "UP", "B", "C4", "SIM"]
|
|
|
74
72
|
ignore = ["B008"]
|
|
75
73
|
|
|
76
74
|
[tool.mypy]
|
|
77
|
-
python_version = "3.
|
|
75
|
+
python_version = "3.12"
|
|
78
76
|
strict = true
|
|
79
77
|
plugins = ["pydantic.mypy"]
|
|
80
78
|
|
{codex_services-0.1.0 → codex_services-0.1.2}/src/codex_services/booking/slot_master/modes.py
RENAMED
|
@@ -7,15 +7,7 @@ Imports:
|
|
|
7
7
|
from codex_services.booking.slot_master import BookingMode
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
import
|
|
11
|
-
from enum import Enum
|
|
12
|
-
|
|
13
|
-
if sys.version_info >= (3, 11): # pragma: no cover
|
|
14
|
-
from enum import StrEnum # pragma: no cover
|
|
15
|
-
else:
|
|
16
|
-
|
|
17
|
-
class StrEnum(str, Enum):
|
|
18
|
-
pass
|
|
10
|
+
from enum import StrEnum
|
|
19
11
|
|
|
20
12
|
|
|
21
13
|
class BookingMode(StrEnum):
|