tlpytools 0.2.3__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.
Files changed (60) hide show
  1. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/copilot-instructions.md +2 -2
  2. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/workflows/deploy.yml +1 -1
  3. {tlpytools-0.2.3 → tlpytools-0.2.4}/CHANGELOG.md +5 -0
  4. {tlpytools-0.2.3 → tlpytools-0.2.4}/DEVELOPER_GUIDE.md +2 -7
  5. {tlpytools-0.2.3 → tlpytools-0.2.4}/PKG-INFO +1 -1
  6. {tlpytools-0.2.3 → tlpytools-0.2.4}/pyproject.toml +1 -1
  7. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/__init__.py +1 -1
  8. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/orchestrator.py +38 -10
  9. {tlpytools-0.2.3 → tlpytools-0.2.4}/uv.lock +80 -37
  10. {tlpytools-0.2.3 → tlpytools-0.2.4}/.env.example +0 -0
  11. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/skills/README.md +0 -0
  12. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/skills/prepare-official-release/SKILL.md +0 -0
  13. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/workflows/code-formatting-pr.yml +0 -0
  14. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/workflows/code-formatting.yml +0 -0
  15. {tlpytools-0.2.3 → tlpytools-0.2.4}/.github/workflows/test.yml +0 -0
  16. {tlpytools-0.2.3 → tlpytools-0.2.4}/.gitignore +0 -0
  17. {tlpytools-0.2.3 → tlpytools-0.2.4}/.pre-commit-config.yaml +0 -0
  18. {tlpytools-0.2.3 → tlpytools-0.2.4}/.python-version +0 -0
  19. {tlpytools-0.2.3 → tlpytools-0.2.4}/ENVIRONMENT_VARIABLES.md +0 -0
  20. {tlpytools-0.2.3 → tlpytools-0.2.4}/Makefile +0 -0
  21. {tlpytools-0.2.3 → tlpytools-0.2.4}/README.md +0 -0
  22. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/adls_server.md +0 -0
  23. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/azure_credential_manager.md +0 -0
  24. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/README.md +0 -0
  25. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/orca_cloud_workflow.drawio +0 -0
  26. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/orca_detailed_steps.drawio +0 -0
  27. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/orca_file_structure.drawio +0 -0
  28. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/orca_local_workflow.drawio +0 -0
  29. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/diagrams/orca_main_features.drawio +0 -0
  30. {tlpytools-0.2.3 → tlpytools-0.2.4}/docs/unified_logging.md +0 -0
  31. {tlpytools-0.2.3 → tlpytools-0.2.4}/requirements.txt +0 -0
  32. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/examples/batchtask.py +0 -0
  33. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/examples/data_files/example.csv +0 -0
  34. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/examples/mydataproject.py +0 -0
  35. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/examples/readwritedata.py +0 -0
  36. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/examples/unified_logging.py +0 -0
  37. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/adls_server.py +0 -0
  38. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/azure_credential.py +0 -0
  39. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/config.py +0 -0
  40. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/data.py +0 -0
  41. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/data_store.py +0 -0
  42. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/env_config.py +0 -0
  43. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/log.py +0 -0
  44. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/README.md +0 -0
  45. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/__init__.py +0 -0
  46. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/__main__.py +0 -0
  47. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/batch_task_runner.py +0 -0
  48. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/cli.py +0 -0
  49. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/orca_model_config_barebone.yaml +0 -0
  50. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/orca/orca_model_config_example.yaml +0 -0
  51. {tlpytools-0.2.3 → tlpytools-0.2.4}/src/tlpytools/sql_server.py +0 -0
  52. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/README.md +0 -0
  53. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/__init__.py +0 -0
  54. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/conftest.py +0 -0
  55. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/run_tests.py +0 -0
  56. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/test_azure_credential.py +0 -0
  57. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/test_basic.py +0 -0
  58. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/test_core.py +0 -0
  59. {tlpytools-0.2.3 → tlpytools-0.2.4}/tests/test_orca_integration.py +0 -0
  60. {tlpytools-0.2.3 → 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.3.tar.gz`
102
- - `dist/tlpytools-0.2.3-py3-none-any.whl`
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):
@@ -4,7 +4,7 @@ on:
4
4
  workflow_dispatch:
5
5
  inputs:
6
6
  version:
7
- description: 'Version number to release (e.g., 0.2.3)'
7
+ description: 'Version number to release (e.g., 0.2.4)'
8
8
  required: true
9
9
  type: string
10
10
  prerelease:
@@ -2,6 +2,11 @@
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
+
5
10
  ## [0.2.3]
6
11
 
7
12
  ### 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.3`)
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.3 # Replace with your version
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.3` (minor release)
239
- - `0.2.3` → `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
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.3"
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"
@@ -2,7 +2,7 @@
2
2
  TLPyTools - A set of tools for building models at the TransLink Forecasting Team
3
3
  """
4
4
 
5
- __version__ = "0.2.3"
5
+ __version__ = "0.2.4"
6
6
 
7
7
  # Core modules that should always be available (minimal dependencies)
8
8
  from . import log
@@ -4062,18 +4062,46 @@ class OrcaOrchestrator:
4062
4062
  "Failed to delete existing archive %s: %s", zip_filename, e
4063
4063
  )
4064
4064
 
4065
- # Use the zip_directory utility function to create the archive
4066
- # Note: zip_directory now logs its own summary
4067
- self.scenario.zip_directory(
4068
- dir_path=step_dir,
4069
- zip_path=archive_path,
4070
- # Skip everything except the specified patterns
4071
- skip_patterns=["*"] + [f"!{pattern}" for pattern in patterns],
4072
- include_empty_dirs=False,
4073
- compression_type=compression_type,
4074
- 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]
4075
4072
  )
4076
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
+
4077
4105
  # Register the archive in state for future retrieval
4078
4106
  self._register_output_archive(
4079
4107
  step_name, archive_name, zip_filename, display_iteration
@@ -337,7 +337,7 @@ resolution-markers = [
337
337
  dependencies = [
338
338
  { name = "msgpack", marker = "python_full_version < '3.11'" },
339
339
  { name = "ndindex", marker = "python_full_version < '3.11'" },
340
- { name = "numexpr", marker = "python_full_version < '3.11' and platform_machine != 'wasm32'" },
340
+ { name = "numexpr", version = "2.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' and platform_machine != 'wasm32'" },
341
341
  { name = "numpy", marker = "python_full_version < '3.11'" },
342
342
  { name = "pydantic", marker = "python_full_version < '3.11'" },
343
343
  { name = "requests", marker = "python_full_version < '3.11'" },
@@ -378,7 +378,7 @@ dependencies = [
378
378
  { name = "httpx", extra = ["http2"], marker = "python_full_version >= '3.11'" },
379
379
  { name = "msgpack", marker = "python_full_version >= '3.11'" },
380
380
  { name = "ndindex", marker = "python_full_version >= '3.11'" },
381
- { name = "numexpr", marker = "python_full_version >= '3.11' and platform_machine != 'wasm32'" },
381
+ { name = "numexpr", version = "2.14.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'wasm32'" },
382
382
  { name = "numpy", marker = "python_full_version >= '3.11'" },
383
383
  { name = "pydantic", marker = "python_full_version >= '3.11'" },
384
384
  { name = "rich", marker = "python_full_version >= '3.11'" },
@@ -446,7 +446,7 @@ version = "0.25.0"
446
446
  source = { registry = "https://pypi.org/simple" }
447
447
  dependencies = [
448
448
  { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
449
- { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
449
+ { name = "matplotlib", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
450
450
  { name = "numpy" },
451
451
  { name = "packaging" },
452
452
  { name = "pyproj", version = "3.7.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
@@ -674,7 +674,7 @@ dependencies = [
674
674
  { name = "geopy" },
675
675
  { name = "joblib" },
676
676
  { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
677
- { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
677
+ { name = "matplotlib", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
678
678
  { name = "mercantile" },
679
679
  { name = "pillow" },
680
680
  { name = "rasterio" },
@@ -1250,11 +1250,11 @@ wheels = [
1250
1250
 
1251
1251
  [[package]]
1252
1252
  name = "filelock"
1253
- version = "3.30.3"
1253
+ version = "3.31.1"
1254
1254
  source = { registry = "https://pypi.org/simple" }
1255
- sdist = { url = "https://files.pythonhosted.org/packages/d6/01/9256cbe36eb2a84501920adad7d0e86738ab0ad60e64f4f5c38d7dd94dc1/filelock-3.30.3.tar.gz", hash = "sha256:6575420cd497ed15fc43a7ac46c48f6b6371c733fc40cf5a4e216871397bc1e2", size = 177706, upload-time = "2026-07-17T15:17:45.342Z" }
1255
+ sdist = { url = "https://files.pythonhosted.org/packages/53/55/1e19b2b56a24a4b94624f7e819e1bb87fa6c5609dbaf621df3aa6568a761/filelock-3.31.1.tar.gz", hash = "sha256:9e0c4e88ebe90833c1beafd3a547ccbc0bf7f491cd3858c3ec7aed63efe02163", size = 196656, upload-time = "2026-07-20T03:14:32.414Z" }
1256
1256
  wheels = [
1257
- { url = "https://files.pythonhosted.org/packages/e7/20/b0d6da41a08b30faef4f20302f5d826a9d39073750cd9100b463eb840cf4/filelock-3.30.3-py3-none-any.whl", hash = "sha256:06e1c6d5e12277022172b7f8d090affe0e8f940f1a37ca45f548855ee51a6b86", size = 94544, upload-time = "2026-07-17T15:17:44.129Z" },
1257
+ { url = "https://files.pythonhosted.org/packages/88/61/df1d9db18f188d0ae648956a1decadc0e3b77d0571474370fd01f28a82b1/filelock-3.31.1-py3-none-any.whl", hash = "sha256:9ea33146c780161bf67cb20c7cb26b651566820d65ad8dfdd79422602a2dcfc0", size = 97189, upload-time = "2026-07-20T03:14:31.307Z" },
1258
1258
  ]
1259
1259
 
1260
1260
  [[package]]
@@ -2351,7 +2351,7 @@ wheels = [
2351
2351
 
2352
2352
  [[package]]
2353
2353
  name = "matplotlib"
2354
- version = "3.11.0"
2354
+ version = "3.11.1"
2355
2355
  source = { registry = "https://pypi.org/simple" }
2356
2356
  resolution-markers = [
2357
2357
  "python_full_version >= '3.12' and sys_platform == 'win32'",
@@ -2372,25 +2372,25 @@ dependencies = [
2372
2372
  { name = "pyparsing", marker = "python_full_version >= '3.11'" },
2373
2373
  { name = "python-dateutil", marker = "python_full_version >= '3.11'" },
2374
2374
  ]
2375
- sdist = { url = "https://files.pythonhosted.org/packages/1f/24/080c99d223d158d3a8902769269ab6da5b50f7a0e6e072513907e02b7a6c/matplotlib-3.11.0.tar.gz", hash = "sha256:68c0c7be01b30dcca3638934f7f591df73401235cbdbf0d1ab1c71e7db7f8b57", size = 33251176, upload-time = "2026-06-12T02:29:15.508Z" }
2375
+ sdist = { url = "https://files.pythonhosted.org/packages/49/64/f9a391af28f518b11ad45a8a712353c94a0aefce09d3703200e5c54b610a/matplotlib-3.11.1.tar.gz", hash = "sha256:69647db5746941c793d6e445a4cd349323ffb87d9cc958c2ad84a659b4832d30", size = 32612045, upload-time = "2026-07-18T03:39:46.63Z" }
2376
2376
  wheels = [
2377
- { url = "https://files.pythonhosted.org/packages/ce/a2/78f662f1b18968531f67d3fcde1b7ea8496920bacd4f16ddb5b79d112e46/matplotlib-3.11.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f857524b442f0f36e641868ce2171aafa88cb0bc0644f4e1d8a5df9b32649fef", size = 9436261, upload-time = "2026-06-12T02:27:34.161Z" },
2378
- { url = "https://files.pythonhosted.org/packages/5e/92/044f1de43901310202f4c79acf4f141be53b2ca8d8380e2fcefb3d523a75/matplotlib-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:57baa92fdc82948ed716eae6d2579d4d6f40965cd8d2f416755b4a72580a3233", size = 9264669, upload-time = "2026-06-12T02:27:37.413Z" },
2379
- { url = "https://files.pythonhosted.org/packages/53/f4/f0b4f9ba7ec14a7af8151f3ad71ecfe3561e6ba38cfab1db3681ba4ca112/matplotlib-3.11.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:630eee0e67d35cce2019a0e670719f4816e3b86aff0fa72729f6c69786fceb45", size = 10021076, upload-time = "2026-06-12T02:27:39.926Z" },
2380
- { url = "https://files.pythonhosted.org/packages/d7/33/4d679c6dcd594a156542080ac907ddccf7b09ca11655c4b28eca8e9ee5da/matplotlib-3.11.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5106c444d0bf966eee2853548c03772af4ab7199118e086c62fbac8ccb07c055", size = 10828999, upload-time = "2026-06-12T02:27:42.433Z" },
2381
- { url = "https://files.pythonhosted.org/packages/07/74/0a3683802037d8cd013144d77c247219b47f2aabace6fdde74faa12bacf7/matplotlib-3.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d7aea652b58e686444079be3376ef546bffa1eee9b9bb9c472b9fcf6cf410d3", size = 10913103, upload-time = "2026-06-12T02:27:44.827Z" },
2382
- { url = "https://files.pythonhosted.org/packages/d0/9f/970fcbf381e82ec66fdf5da8ea76e2e9240f61a24011ce9fd1d42c37ac2d/matplotlib-3.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:70a5b3e9a5dab708c0f039709ae7c68d5b4d254e291ef76492cdba230c8bb5e4", size = 9310945, upload-time = "2026-06-12T02:27:46.867Z" },
2383
- { url = "https://files.pythonhosted.org/packages/14/4e/6e7cfed23611265ded53806852343b5c59339e506e84c474a9b5afc3b249/matplotlib-3.11.0-cp311-cp311-win_arm64.whl", hash = "sha256:3d68266213e73823ac3be90615bab0cf31f88851e114cdb1dd25dacf3b01e1a7", size = 8999304, upload-time = "2026-06-12T02:27:48.798Z" },
2384
- { url = "https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918", size = 9449976, upload-time = "2026-06-12T02:27:50.989Z" },
2385
- { url = "https://files.pythonhosted.org/packages/82/34/bdd77418adb2178a1d59f044bd67bfebb115896e91b840b8a197eb3f4f4e/matplotlib-3.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0515d495124be3124340e59f164d901ed4484e2246a5b74cfa483cac3b80bd97", size = 9279307, upload-time = "2026-06-12T02:27:53.247Z" },
2386
- { url = "https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be5f93a1d21981bfb802ded0d77a0caa92d4342a47d45754fac77e314a506344", size = 10031353, upload-time = "2026-06-12T02:27:55.215Z" },
2387
- { url = "https://files.pythonhosted.org/packages/87/ce/8f25a0e3186aefd61913e7467d1b999465bcd0d0c03ac695c1b26ca559b7/matplotlib-3.11.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41635d7909d19e52e924a521dde6d8f670b0f53ab1d0e8c331fa831554f681d1", size = 10839232, upload-time = "2026-06-12T02:27:57.746Z" },
2388
- { url = "https://files.pythonhosted.org/packages/85/c2/db15da2bbdf9e3ca66df7db8e2c33a1dfed67be24a24d2c878efaaff01d6/matplotlib-3.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:94f5000f67ca9faa300863ea17f8bce9175cb67b88bec4bc7780502d53dd7c9e", size = 10923899, upload-time = "2026-06-12T02:28:00.223Z" },
2389
- { url = "https://files.pythonhosted.org/packages/e5/2f/a58a4443a4d052a4ea77557478336aefc26c7981f6408d37adba763aa758/matplotlib-3.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ac6f1ef39f3d0f9e2463303013094992cdbe0f85f43bc54155bc472b2042768e", size = 9329528, upload-time = "2026-06-12T02:28:02.27Z" },
2390
- { url = "https://files.pythonhosted.org/packages/61/0f/4b669589d47733b97ab9df4b58d6fc1e68acb5ea42a928dc7cbdd6bf5871/matplotlib-3.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:9dd11fb612ce7bc60b1de5b4fc87ff959d22317b5de42aabf392f66f97af22eb", size = 9003413, upload-time = "2026-06-12T02:28:04.49Z" },
2391
- { url = "https://files.pythonhosted.org/packages/0f/c2/f5da6cd37ed6871f5c9b3c0507ddb69f14d6c36fac4541e4e0c60cb8cdfc/matplotlib-3.11.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81ae77077a1e16d37a5b61096ccb07c8d90a99b518fa8256b8f21578932f2f62", size = 9434094, upload-time = "2026-06-12T02:29:09.135Z" },
2392
- { url = "https://files.pythonhosted.org/packages/f8/07/56f66906e0f87a0c6d0d0acbd34dbc9432b1931d8f26ef618bd6f92932a9/matplotlib-3.11.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ddef37840695f5eef65f9f070fe2d2f510f584c2156203f9f622a5b0584efffd", size = 9262183, upload-time = "2026-06-12T02:29:11.283Z" },
2393
- { url = "https://files.pythonhosted.org/packages/0c/d8/c4ecab06b7ea36a570c4f3bd2d48d1799fd5d9174470e45c2194199431e7/matplotlib-3.11.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf662e5ac5707658cb931e19972c4bd99f7b4f8b7bf79d3c821d239fa6b71e64", size = 10015653, upload-time = "2026-06-12T02:29:13.251Z" },
2377
+ { url = "https://files.pythonhosted.org/packages/6e/d0/791aa183dd88491555cf7d4be0b52b0bcf6c3c2a2c22c815a2e819bf53e2/matplotlib-3.11.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b7cf158e7add54a8d51ac9b5a84abd6d4e13ed4951b4f25f1c5139f41c2addb2", size = 9440302, upload-time = "2026-07-18T03:38:03.844Z" },
2378
+ { url = "https://files.pythonhosted.org/packages/35/74/82bbdf683a301f4478384c8aaba6903631a2ca18294b2d7655c9a542bffb/matplotlib-3.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d2ace7273b9a5061a3b420918a16fae1f2dc5dfee1abcc13aba71b5d94b1820c", size = 9268549, upload-time = "2026-07-18T03:38:06.144Z" },
2379
+ { url = "https://files.pythonhosted.org/packages/f0/f0/9b4298911303f74e6d83e64a81d996c0616405ec95046fac7f17e4258b9e/matplotlib-3.11.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aee55e9041211bf84302ab55ec3965df18dd90ae19f8b58332a7feaf208bfe83", size = 10024922, upload-time = "2026-07-18T03:38:08.236Z" },
2380
+ { url = "https://files.pythonhosted.org/packages/84/6f/0bc3c3d05b021db44c14bc379a7c0df7d57302aa15380c16fd4e63fd6a9b/matplotlib-3.11.1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f4bdeea33a8d15a071dbfe6d119451b1d719c733ac666d65357082901a9099", size = 10832170, upload-time = "2026-07-18T03:38:10.276Z" },
2381
+ { url = "https://files.pythonhosted.org/packages/db/4d/e375f39acdb2af5a9342730618608e39790ec842e6f1b392863028781459/matplotlib-3.11.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b4c78ceb2f11bcac7389d305cda17aeb1f4586a857854ab5780bd3dd8dbfc407", size = 10916701, upload-time = "2026-07-18T03:38:12.512Z" },
2382
+ { url = "https://files.pythonhosted.org/packages/bc/be/fa26ed085b41298f64a8f9b7592c671bbf1acc8b0df124c1c5de96b859f8/matplotlib-3.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:7f33a781e12b1e53b278deb2f5373c2e55ec4f10727be3440c0cfb5cda9f944f", size = 9315331, upload-time = "2026-07-18T03:38:14.949Z" },
2383
+ { url = "https://files.pythonhosted.org/packages/b6/f3/eb5bdf3b6e191b200db298b08bbc1638b7f3c82cdc8680f9d88bf72559ae/matplotlib-3.11.1-cp311-cp311-win_arm64.whl", hash = "sha256:67e4c3cd578c65ebd81bdc09a1b6592ceafee6dfafe116dc85dfcb647b5bbb18", size = 9003475, upload-time = "2026-07-18T03:38:17.205Z" },
2384
+ { url = "https://files.pythonhosted.org/packages/f2/6c/7ef7ebcb2bd9739b2b66b18b076e077f44bb46fdbe28ca0506edb3c62c79/matplotlib-3.11.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e15ef41507f3d525f46154ac9e3ae785dacde9f20e593a25de8986267892ef74", size = 9453849, upload-time = "2026-07-18T03:38:19.593Z" },
2385
+ { url = "https://files.pythonhosted.org/packages/eb/f8/6d0c312c8d9738e7d9677f09fe5c986b3239e651a7b73a2deb38b65e4a71/matplotlib-3.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:21a67b961a6d597bca54fae826cd20695ba4a6e4d05424a08da6e13e3176fd6b", size = 9283113, upload-time = "2026-07-18T03:38:21.95Z" },
2386
+ { url = "https://files.pythonhosted.org/packages/c9/cf/b4ad2cc81b6672ea29ea04e64e350a9f9b493b0908ccd884c67eeff8f7b2/matplotlib-3.11.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba8f811b8ddfac493734d6af0b2dff96919d0c28ca0d641858dab4262777c6ea", size = 10035615, upload-time = "2026-07-18T03:38:24.315Z" },
2387
+ { url = "https://files.pythonhosted.org/packages/88/90/4e10e033d9b66589d8ed98b84c95cdbb57033d57c1f41339d7393dbd2f2e/matplotlib-3.11.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c52f7ad20ef476806ed212380b1d54d20310c8b86bdc2c9a68b51f0024a44472", size = 10842559, upload-time = "2026-07-18T03:38:26.285Z" },
2388
+ { url = "https://files.pythonhosted.org/packages/88/eb/799612d0f8cd3e816a10fec59329fca52cd2353264df80378dfc541ae855/matplotlib-3.11.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b14eb22961fe865efb0e4ff167e333e428908b00115a8d800ccb65ee108e481", size = 10927532, upload-time = "2026-07-18T03:38:28.532Z" },
2389
+ { url = "https://files.pythonhosted.org/packages/88/89/56649bbaa2fd12e20f3be03dbcc135b0c8676d88bac17977599e3eb442a0/matplotlib-3.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:88a2a27dd9691ae448dfae4b26f59036be90c3c28757edd3553a29559d00859f", size = 9333886, upload-time = "2026-07-18T03:38:30.477Z" },
2390
+ { url = "https://files.pythonhosted.org/packages/c1/11/4d124efbbad677b7b7552f6f85a3bd432d4232f95400cea98fcd2ae36ef3/matplotlib-3.11.1-cp312-cp312-win_arm64.whl", hash = "sha256:480194afceca4df2f137c2721227d3cba67121fbf4397b69cee7f83714b0a58a", size = 9007545, upload-time = "2026-07-18T03:38:32.833Z" },
2391
+ { url = "https://files.pythonhosted.org/packages/ee/38/ceb1d637c4db6d06141f3739e93af3321e7caaabe69b57ae48ffe3ee95b1/matplotlib-3.11.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:427258425f9a3fc4ed79a91f9e9b9aaf5a82cb6571e85dc14063cc6fbb993741", size = 9438045, upload-time = "2026-07-18T03:39:39.491Z" },
2392
+ { url = "https://files.pythonhosted.org/packages/89/25/72ad8b58602d3a6ef1dfc4b65ecd01634ab65a2bdf494c9fe0e966dbf081/matplotlib-3.11.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:1ac697e591c11b6ad04679a73c2d2f9980fe9d9f0311fb414a2e329706343dfb", size = 9266127, upload-time = "2026-07-18T03:39:41.597Z" },
2393
+ { url = "https://files.pythonhosted.org/packages/8a/6d/69552382fcc8e93d1f2763ef2665980a900a48b7f3a4c57ed290726d1cbc/matplotlib-3.11.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e4b9ac2f1f607ecda2af90a5232beee2af7582fce1cc30c4b6a1b012dc21ee99", size = 10019439, upload-time = "2026-07-18T03:39:43.78Z" },
2394
2394
  ]
2395
2395
 
2396
2396
  [[package]]
@@ -2804,8 +2804,14 @@ wheels = [
2804
2804
  name = "numexpr"
2805
2805
  version = "2.14.1"
2806
2806
  source = { registry = "https://pypi.org/simple" }
2807
+ resolution-markers = [
2808
+ "python_full_version < '3.11' and sys_platform == 'win32'",
2809
+ "python_full_version < '3.11' and sys_platform == 'darwin'",
2810
+ "python_full_version < '3.11' and sys_platform == 'linux'",
2811
+ "python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32'",
2812
+ ]
2807
2813
  dependencies = [
2808
- { name = "numpy" },
2814
+ { name = "numpy", marker = "python_full_version < '3.11'" },
2809
2815
  ]
2810
2816
  sdist = { url = "https://files.pythonhosted.org/packages/cb/2f/fdba158c9dbe5caca9c3eca3eaffffb251f2fb8674bf8e2d0aed5f38d319/numexpr-2.14.1.tar.gz", hash = "sha256:4be00b1086c7b7a5c32e31558122b7b80243fe098579b170967da83f3152b48b", size = 119400, upload-time = "2025-10-13T16:17:27.351Z" }
2811
2817
  wheels = [
@@ -2835,6 +2841,43 @@ wheels = [
2835
2841
  { url = "https://files.pythonhosted.org/packages/1f/67/ffe750b5452eb66de788c34e7d21ec6d886abb4d7c43ad1dc88ceb3d998f/numexpr-2.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:fdd886f4b7dbaf167633ee396478f0d0aa58ea2f9e7ccc3c6431019623e8d68f", size = 160187, upload-time = "2025-10-13T16:17:11.974Z" },
2836
2842
  ]
2837
2843
 
2844
+ [[package]]
2845
+ name = "numexpr"
2846
+ version = "2.14.2"
2847
+ source = { registry = "https://pypi.org/simple" }
2848
+ resolution-markers = [
2849
+ "python_full_version >= '3.12' and sys_platform == 'win32'",
2850
+ "python_full_version == '3.11.*' and sys_platform == 'win32'",
2851
+ "python_full_version >= '3.11' and sys_platform == 'emscripten'",
2852
+ "python_full_version >= '3.11' and sys_platform == 'darwin'",
2853
+ "python_full_version >= '3.11' and sys_platform == 'linux'",
2854
+ "python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'linux' and sys_platform != 'win32'",
2855
+ ]
2856
+ dependencies = [
2857
+ { name = "numpy", marker = "python_full_version >= '3.11'" },
2858
+ ]
2859
+ sdist = { url = "https://files.pythonhosted.org/packages/79/c4/27ea7849eb4a7e3b51db446b0414254326dba8c6bdee09b9f2abf963e55d/numexpr-2.14.2.tar.gz", hash = "sha256:e7144e83ea9e581f2273e0304f15836736c4e470e2bd2e378ce617662a1ca278", size = 121744, upload-time = "2026-07-18T10:52:43.185Z" }
2860
+ wheels = [
2861
+ { url = "https://files.pythonhosted.org/packages/b9/a3/1904a5928de2c16935172a54772082e6a64efa4e763ed829c2e9f23d8eb1/numexpr-2.14.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2aa65ddc2243f19c6915f34ee0978b4a2df20f297230a793c4ee6d55f3472599", size = 164944, upload-time = "2026-07-18T10:51:37.875Z" },
2862
+ { url = "https://files.pythonhosted.org/packages/fb/03/533659d9c05c0aee359f29c6e1bb80f0b91848b75522bd9809861b0b0f25/numexpr-2.14.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf959e6df6cb603611c034b6cba7b03a361be0ad0b80b73f163fab95f5ccbb7f", size = 153218, upload-time = "2026-07-18T10:51:39.429Z" },
2863
+ { url = "https://files.pythonhosted.org/packages/cd/34/e20830b6388568c1a6fd1529953ccac09d7ed57eb79dacfd298646bd95c8/numexpr-2.14.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d534ecb456a4ae3995f99c8a5deb469bfff05d4ec610a7885c175c881d12f710", size = 453750, upload-time = "2026-07-18T10:51:40.735Z" },
2864
+ { url = "https://files.pythonhosted.org/packages/d6/15/9a7bf92b7c8047157fd96bc42ff6b0a20351f43aa58b9f61eb8f5ff3048b/numexpr-2.14.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f41170e9d0dbba76851e35d80cfa9f4ca5fe78628c5bf24d941cf3364940ab7a", size = 443546, upload-time = "2026-07-18T10:51:41.95Z" },
2865
+ { url = "https://files.pythonhosted.org/packages/86/ed/a2aaca2a65d5aa04379d3bcc8360c067aa2503fbad2c88c0709f1b3e1e6c/numexpr-2.14.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6acafb2fdbeaaa6681a8f1a1d8b3f7dcd33704baace7057b950754b258be7c43", size = 1418879, upload-time = "2026-07-18T10:51:43.315Z" },
2866
+ { url = "https://files.pythonhosted.org/packages/62/6d/dde6da68ef817d9aa0995a0ecdfb9b0ba5745688fb324b96b2250bb00131/numexpr-2.14.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7ca9e71195b36cc7aeafe97347549e1e1c1e889ff700238782ef6447651ec26d", size = 1465942, upload-time = "2026-07-18T10:51:44.609Z" },
2867
+ { url = "https://files.pythonhosted.org/packages/96/2f/5b352550476d10b85e4198bd045c155ca63a55853aeb11861996f05707a0/numexpr-2.14.2-cp311-cp311-win32.whl", hash = "sha256:779129d50974e7d6d6581d322f75b8f8375e96215b6861a2d5460347997ef649", size = 161260, upload-time = "2026-07-18T10:51:45.861Z" },
2868
+ { url = "https://files.pythonhosted.org/packages/44/5e/00d696bca8bb9cad9c8a775ae5c1559e4a7cc083029f274c14cae5bc52fa/numexpr-2.14.2-cp311-cp311-win_amd64.whl", hash = "sha256:2f132777d7d425471c458af5617e023402f13f5006301eacf8a1a6e7118ea70c", size = 157406, upload-time = "2026-07-18T10:51:47.065Z" },
2869
+ { url = "https://files.pythonhosted.org/packages/23/00/fd8caf2a08304e4d2bc64031ef11da3ccd863853d277f424adf91d44371f/numexpr-2.14.2-cp311-cp311-win_arm64.whl", hash = "sha256:f1de5c88515ed9fbcad42699a0e2b5821b4d0f0adb0da6fb7e009e5cb19d8493", size = 148781, upload-time = "2026-07-18T10:51:48.1Z" },
2870
+ { url = "https://files.pythonhosted.org/packages/09/fd/3e7ca4328c22b28717cfe05cd23ca35ffd84e4ca36c3da004323528e9e20/numexpr-2.14.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:606ceaf5722e295ef965ca591736fc26d9e5f13ad950a479e64cead1947f8a3d", size = 164757, upload-time = "2026-07-18T10:51:49.05Z" },
2871
+ { url = "https://files.pythonhosted.org/packages/ed/5c/9780d48c4d5effcf55fc7ab7c5651ed82b43250ac8410cce4ef1e97583ed/numexpr-2.14.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:790da022539fe7c37dc893acf530a91c2ca6964d7ba11f464131383729d058f3", size = 153507, upload-time = "2026-07-18T10:51:50.273Z" },
2872
+ { url = "https://files.pythonhosted.org/packages/41/13/ed5efda74ace9a7e2e933476b85bba6d00f2ebf6b833ef59a796ec9af88c/numexpr-2.14.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:327be9ee62251c173236dc620147ff2d0e732a32f5bad918d78a10082f502f63", size = 455373, upload-time = "2026-07-18T10:51:51.466Z" },
2873
+ { url = "https://files.pythonhosted.org/packages/ea/11/e8953226d658ae67e3e002abaa60a101c693f9c57d74974001729afab5ef/numexpr-2.14.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6a5d8fc7016bf6f6e1808b011510aa7c3bd75ec1407f7650874ec591db59f5e", size = 445187, upload-time = "2026-07-18T10:51:52.849Z" },
2874
+ { url = "https://files.pythonhosted.org/packages/b2/f7/f51b7e10c312bd9617df829e063c87a6d443fd97af54688282ba2b11b1fd/numexpr-2.14.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4b1ff261c3e69c4c59578d3a9ca6132603619d38ae1abe73325563bed3b9bbaf", size = 1420426, upload-time = "2026-07-18T10:51:54.079Z" },
2875
+ { url = "https://files.pythonhosted.org/packages/14/bf/21b4e362039ba52f9033a3f57d68160c0829c9c8d66fa7b443b82491322c/numexpr-2.14.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8b8384592c49cb15a91caa54e2cd84d1ce18edb7af030bb76cd29b52e5dc155d", size = 1467554, upload-time = "2026-07-18T10:51:55.391Z" },
2876
+ { url = "https://files.pythonhosted.org/packages/2b/75/0856b1add4e5a7741b80b615f3faace8e3cfffe11e22b6a940ebf25443aa/numexpr-2.14.2-cp312-cp312-win32.whl", hash = "sha256:41cdeacf1b4e51c1143983ea61fcee68139ca47222b55a9265b4fa73826c4260", size = 161441, upload-time = "2026-07-18T10:51:56.503Z" },
2877
+ { url = "https://files.pythonhosted.org/packages/a3/78/c87a88b8e63b5f78c67d555afebefafe81f6e3d98640b4bc1c125d76c9d3/numexpr-2.14.2-cp312-cp312-win_amd64.whl", hash = "sha256:8fc55d14bcf17b3fe69213bea14f999451892b4690717008c66f2edfd6a085ce", size = 157563, upload-time = "2026-07-18T10:51:57.521Z" },
2878
+ { url = "https://files.pythonhosted.org/packages/15/37/eea56d5ed1ae5252447f45bb461930eab66338eeab32e533aceb080db0bb/numexpr-2.14.2-cp312-cp312-win_arm64.whl", hash = "sha256:806a4471310fe20aa7cb1b2816a6f5e508073a1ad1c2e18041b83e57066fad6a", size = 148820, upload-time = "2026-07-18T10:51:58.536Z" },
2879
+ ]
2880
+
2838
2881
  [[package]]
2839
2882
  name = "numpy"
2840
2883
  version = "1.26.4"
@@ -3204,11 +3247,11 @@ wheels = [
3204
3247
 
3205
3248
  [[package]]
3206
3249
  name = "platformdirs"
3207
- version = "4.10.0"
3250
+ version = "4.10.1"
3208
3251
  source = { registry = "https://pypi.org/simple" }
3209
- sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7", size = 31224, upload-time = "2026-05-28T03:32:53.587Z" }
3252
+ sdist = { url = "https://files.pythonhosted.org/packages/52/cd/4f25b2f95b23f5d2c9c1fe43e49841bff5800562149b2666afc09309aa8f/platformdirs-4.10.1.tar.gz", hash = "sha256:ceab4084426fe6319ce18e86deada8ab1b7487c7aee7040c55e277c9ae793695", size = 31678, upload-time = "2026-07-18T03:53:43.808Z" }
3210
3253
  wheels = [
3211
- { url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a", size = 22743, upload-time = "2026-05-28T03:32:52.175Z" },
3254
+ { url = "https://files.pythonhosted.org/packages/ec/73/6fd0bb9ce84138c3857f12e9de63bc901852975a092d545f18087a204aa2/platformdirs-4.10.1-py3-none-any.whl", hash = "sha256:0e4eff26be2d75293977f7cddc153fd9b8eaa7fb0c7b64ffe4076cb443117443", size = 22906, upload-time = "2026-07-18T03:53:42.576Z" },
3212
3255
  ]
3213
3256
 
3214
3257
  [[package]]
@@ -4378,7 +4421,7 @@ version = "0.13.2"
4378
4421
  source = { registry = "https://pypi.org/simple" }
4379
4422
  dependencies = [
4380
4423
  { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
4381
- { name = "matplotlib", version = "3.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
4424
+ { name = "matplotlib", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
4382
4425
  { name = "numpy" },
4383
4426
  { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
4384
4427
  { name = "pandas", version = "3.0.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
@@ -4452,11 +4495,11 @@ wheels = [
4452
4495
 
4453
4496
  [[package]]
4454
4497
  name = "soupsieve"
4455
- version = "2.8.4"
4498
+ version = "2.9"
4456
4499
  source = { registry = "https://pypi.org/simple" }
4457
- sdist = { url = "https://files.pythonhosted.org/packages/47/2c/0a5f6f8ee0d5589e48c7640213ed5175d52cf540a06725b628cc1a45d6ce/soupsieve-2.8.4.tar.gz", hash = "sha256:e121fd02e975c695e4e9e8774a5ee35d74714b59307868dcc5319ad2d9e3328e", size = 121110, upload-time = "2026-05-24T13:55:57.154Z" }
4500
+ sdist = { url = "https://files.pythonhosted.org/packages/80/f1/93422647dd7e461f23d254e6b2bfa687a85b53aeb4903fcdbb74474d4584/soupsieve-2.9.tar.gz", hash = "sha256:acee8417325c5653e1377dc31eccad59eb82cbc65942afe6174c53b3aaad63fc", size = 122122, upload-time = "2026-07-19T01:35:18.425Z" }
4458
4501
  wheels = [
4459
- { url = "https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl", hash = "sha256:e7e6b0769c8f51ed59acab6e994b00621096cfb1c640a7509295987388fbaf65", size = 37304, upload-time = "2026-05-24T13:55:55.406Z" },
4502
+ { url = "https://files.pythonhosted.org/packages/7b/d6/3185ab5ad1280319b31986898f3206dd7227cd75e293d4dba2a5e6bf27a0/soupsieve-2.9-py3-none-any.whl", hash = "sha256:a2b2c76d67df2382d245409fd71e321a571717e58463efa32ace87dcadac2c12", size = 37387, upload-time = "2026-07-19T01:35:17.106Z" },
4460
4503
  ]
4461
4504
 
4462
4505
  [[package]]
@@ -4519,7 +4562,7 @@ resolution-markers = [
4519
4562
  ]
4520
4563
  dependencies = [
4521
4564
  { name = "blosc2", version = "4.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
4522
- { name = "numexpr", marker = "python_full_version < '3.11'" },
4565
+ { name = "numexpr", version = "2.14.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
4523
4566
  { name = "numpy", marker = "python_full_version < '3.11'" },
4524
4567
  { name = "packaging", marker = "python_full_version < '3.11'" },
4525
4568
  { name = "py-cpuinfo", marker = "python_full_version < '3.11'" },
@@ -4558,7 +4601,7 @@ resolution-markers = [
4558
4601
  ]
4559
4602
  dependencies = [
4560
4603
  { name = "blosc2", version = "4.9.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
4561
- { name = "numexpr", marker = "python_full_version >= '3.11'" },
4604
+ { name = "numexpr", version = "2.14.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
4562
4605
  { name = "numpy", marker = "python_full_version >= '3.11'" },
4563
4606
  { name = "packaging", marker = "python_full_version >= '3.11'" },
4564
4607
  { name = "py-cpuinfo", marker = "python_full_version >= '3.11'" },
@@ -4609,7 +4652,7 @@ wheels = [
4609
4652
 
4610
4653
  [[package]]
4611
4654
  name = "tlpytools"
4612
- version = "0.2.3"
4655
+ version = "0.2.4"
4613
4656
  source = { editable = "." }
4614
4657
  dependencies = [
4615
4658
  { name = "azure-core" },
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