tlpytools 0.2.2__tar.gz → 0.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.
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/copilot-instructions.md +2 -2
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/workflows/deploy.yml +1 -1
- {tlpytools-0.2.2 → tlpytools-0.2.4}/CHANGELOG.md +10 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/DEVELOPER_GUIDE.md +2 -7
- {tlpytools-0.2.2 → tlpytools-0.2.4}/PKG-INFO +1 -1
- {tlpytools-0.2.2 → tlpytools-0.2.4}/pyproject.toml +1 -1
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/__init__.py +1 -1
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/orchestrator.py +45 -12
- {tlpytools-0.2.2 → tlpytools-0.2.4}/uv.lock +842 -790
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.env.example +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/skills/README.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/skills/prepare-official-release/SKILL.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/workflows/code-formatting-pr.yml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/workflows/code-formatting.yml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.github/workflows/test.yml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.gitignore +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.pre-commit-config.yaml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/.python-version +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/ENVIRONMENT_VARIABLES.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/Makefile +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/README.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/adls_server.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/azure_credential_manager.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/README.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/orca_cloud_workflow.drawio +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/orca_detailed_steps.drawio +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/orca_file_structure.drawio +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/orca_local_workflow.drawio +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/diagrams/orca_main_features.drawio +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/docs/unified_logging.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/requirements.txt +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/examples/batchtask.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/examples/data_files/example.csv +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/examples/mydataproject.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/examples/readwritedata.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/examples/unified_logging.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/adls_server.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/azure_credential.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/config.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/data.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/data_store.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/env_config.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/log.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/README.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/__init__.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/__main__.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/batch_task_runner.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/cli.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/orca_model_config_barebone.yaml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/orca/orca_model_config_example.yaml +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/src/tlpytools/sql_server.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/README.md +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/__init__.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/conftest.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/run_tests.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/test_azure_credential.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/test_basic.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/test_core.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/test_orca_integration.py +0 -0
- {tlpytools-0.2.2 → tlpytools-0.2.4}/tests/test_orca_unit.py +0 -0
|
@@ -98,8 +98,8 @@ Interpretation for agent PRs:
|
|
|
98
98
|
|
|
99
99
|
Observed result:
|
|
100
100
|
- Build succeeds and produces:
|
|
101
|
-
- `dist/tlpytools-0.2.
|
|
102
|
-
- `dist/tlpytools-0.2.
|
|
101
|
+
- `dist/tlpytools-0.2.4.tar.gz`
|
|
102
|
+
- `dist/tlpytools-0.2.4-py3-none-any.whl`
|
|
103
103
|
|
|
104
104
|
### 5) Run
|
|
105
105
|
- ORCA CLI (module form):
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to TLPyTools will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.2.4]
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
* Optimize archive creation by copying single zip files directly and enhancing logging
|
|
9
|
+
|
|
10
|
+
## [0.2.3]
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
* Fix python cmd syntax issue introduced in 0.2.2
|
|
14
|
+
|
|
5
15
|
## [0.2.2]
|
|
6
16
|
|
|
7
17
|
### Fixed
|
|
@@ -200,7 +200,7 @@ make check-all
|
|
|
200
200
|
4. Click **"Run workflow"** button
|
|
201
201
|
5. Fill in the required information:
|
|
202
202
|
- **Branch**: Select `main` (or your release branch)
|
|
203
|
-
- **Version number**: Enter the new version (e.g., `0.2.
|
|
203
|
+
- **Version number**: Enter the new version (e.g., `0.2.4`)
|
|
204
204
|
- **Is this a pre-release?**: Check if this is a pre-release version
|
|
205
205
|
|
|
206
206
|
#### 3. Monitor the Release
|
|
@@ -219,7 +219,7 @@ After the workflow completes:
|
|
|
219
219
|
|
|
220
220
|
```bash
|
|
221
221
|
# Verify the package is available on PyPI
|
|
222
|
-
pip install tlpytools==0.2.
|
|
222
|
+
pip install tlpytools==0.2.4 # Replace with your version
|
|
223
223
|
|
|
224
224
|
# Test installation in a fresh environment
|
|
225
225
|
python -c "import tlpytools; print(tlpytools.__version__)"
|
|
@@ -233,11 +233,6 @@ TLPyTools follows semantic versioning (SemVer):
|
|
|
233
233
|
- **Minor** (0.x.0): New features, backwards compatible
|
|
234
234
|
- **Patch** (0.0.x): Bug fixes, backwards compatible
|
|
235
235
|
|
|
236
|
-
Examples:
|
|
237
|
-
- `0.1.7` → `0.1.8` (patch release)
|
|
238
|
-
- `0.1.8` → `0.2.2` (minor release)
|
|
239
|
-
- `0.2.2` → `1.0.0` (major release)
|
|
240
|
-
|
|
241
236
|
### Pre-releases
|
|
242
237
|
|
|
243
238
|
For testing purposes, you can create pre-release versions:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tlpytools
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: TransLink's Python Tools - A comprehensive toolkit for transportation modeling and forecasting
|
|
5
5
|
Project-URL: Homepage, https://github.com/TransLinkForecasting/tlpytools
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/TransLinkForecasting/tlpytools/issues
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tlpytools"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.4"
|
|
8
8
|
description = "TransLink's Python Tools - A comprehensive toolkit for transportation modeling and forecasting"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10.0, <3.13"
|
|
@@ -3741,8 +3741,13 @@ class OrcaOrchestrator:
|
|
|
3741
3741
|
# Python process (e.g. Jupyter/tlpytools env) from leaking its
|
|
3742
3742
|
# library paths into the component subprocess
|
|
3743
3743
|
if os.name == "nt": # Windows
|
|
3744
|
-
#
|
|
3745
|
-
|
|
3744
|
+
# Use quoted SET form to clear PYTHONHOME without risk of
|
|
3745
|
+
# capturing trailing whitespace (bare "set VAR= " would set
|
|
3746
|
+
# VAR to a space, breaking the Python stdlib path lookup).
|
|
3747
|
+
pythonpath_cmd = (
|
|
3748
|
+
f'set "PYTHONHOME=" && '
|
|
3749
|
+
f'set "PYTHONPATH={ORCA_DIR};{step_directory}" && '
|
|
3750
|
+
)
|
|
3746
3751
|
else: # Unix/Linux/Mac
|
|
3747
3752
|
# On Unix-like systems, use export command
|
|
3748
3753
|
pythonpath_cmd = f"unset PYTHONHOME && export PYTHONPATH={ORCA_DIR}:{step_directory} && "
|
|
@@ -4057,18 +4062,46 @@ class OrcaOrchestrator:
|
|
|
4057
4062
|
"Failed to delete existing archive %s: %s", zip_filename, e
|
|
4058
4063
|
)
|
|
4059
4064
|
|
|
4060
|
-
#
|
|
4061
|
-
#
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
include_empty_dirs=False,
|
|
4068
|
-
compression_type=compression_type,
|
|
4069
|
-
compresslevel=compresslevel,
|
|
4065
|
+
# Optimisation: if patterns is a single zip file with no wildcards,
|
|
4066
|
+
# copy and rename it directly instead of wrapping it in another zip.
|
|
4067
|
+
single_zip_pattern = (
|
|
4068
|
+
len(patterns) == 1
|
|
4069
|
+
and patterns[0].endswith(".zip")
|
|
4070
|
+
and "*" not in patterns[0]
|
|
4071
|
+
and "?" not in patterns[0]
|
|
4070
4072
|
)
|
|
4071
4073
|
|
|
4074
|
+
if single_zip_pattern:
|
|
4075
|
+
source_zip = os.path.join(step_dir, patterns[0])
|
|
4076
|
+
if os.path.exists(source_zip):
|
|
4077
|
+
os.makedirs(os.path.dirname(archive_path), exist_ok=True)
|
|
4078
|
+
shutil.copy2(source_zip, archive_path)
|
|
4079
|
+
self.logger.info(
|
|
4080
|
+
"Copied single zip file %s -> %s",
|
|
4081
|
+
os.path.basename(source_zip),
|
|
4082
|
+
zip_filename,
|
|
4083
|
+
)
|
|
4084
|
+
else:
|
|
4085
|
+
self.logger.warning(
|
|
4086
|
+
"Single zip pattern '%s' not found at %s, skipping archive: %s",
|
|
4087
|
+
patterns[0],
|
|
4088
|
+
source_zip,
|
|
4089
|
+
archive_name,
|
|
4090
|
+
)
|
|
4091
|
+
continue
|
|
4092
|
+
else:
|
|
4093
|
+
# Use the zip_directory utility function to create the archive
|
|
4094
|
+
# Note: zip_directory now logs its own summary
|
|
4095
|
+
self.scenario.zip_directory(
|
|
4096
|
+
dir_path=step_dir,
|
|
4097
|
+
zip_path=archive_path,
|
|
4098
|
+
# Skip everything except the specified patterns
|
|
4099
|
+
skip_patterns=["*"] + [f"!{pattern}" for pattern in patterns],
|
|
4100
|
+
include_empty_dirs=False,
|
|
4101
|
+
compression_type=compression_type,
|
|
4102
|
+
compresslevel=compresslevel,
|
|
4103
|
+
)
|
|
4104
|
+
|
|
4072
4105
|
# Register the archive in state for future retrieval
|
|
4073
4106
|
self._register_output_archive(
|
|
4074
4107
|
step_name, archive_name, zip_filename, display_iteration
|