idfkit 0.6.4__tar.gz → 0.7.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.
- {idfkit-0.6.4 → idfkit-0.7.0}/.vscode/settings.json +7 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/AGENTS.md +1 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/PKG-INFO +1 -1
- idfkit-0.7.0/docs/api/migration.md +119 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/results.md +1 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/version-compatibility.md +9 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/getting-started/quick-start.md +1 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/index.md +2 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/async.md +10 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/errors.md +23 -0
- idfkit-0.7.0/docs/simulation/migrating-versions.md +86 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/running.md +13 -0
- idfkit-0.7.0/docs/snippets/migration_versions/auto_migrate_simulate.py +20 -0
- idfkit-0.7.0/docs/snippets/migration_versions/quick_start.py +22 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/troubleshooting/errors.md +34 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/mkdocs.yml +2 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/pyproject.toml +3 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/__init__.py +10 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/exceptions.py +95 -14
- idfkit-0.7.0/src/idfkit/migration/__init__.py +64 -0
- idfkit-0.7.0/src/idfkit/migration/async_runner.py +308 -0
- idfkit-0.7.0/src/idfkit/migration/async_subprocess_backend.py +140 -0
- idfkit-0.7.0/src/idfkit/migration/chain.py +72 -0
- idfkit-0.7.0/src/idfkit/migration/diff.py +126 -0
- idfkit-0.7.0/src/idfkit/migration/progress.py +45 -0
- idfkit-0.7.0/src/idfkit/migration/protocol.py +95 -0
- idfkit-0.7.0/src/idfkit/migration/report.py +151 -0
- idfkit-0.7.0/src/idfkit/migration/runner.py +322 -0
- idfkit-0.7.0/src/idfkit/migration/subprocess_backend.py +174 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/_common.py +87 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/async_runner.py +22 -3
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/config.py +60 -3
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/result.py +5 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/runner.py +24 -3
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_compact.py +305 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_day.py +238 -4
- idfkit-0.7.0/tests/schedules/test_evaluate.py +681 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_file.py +202 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_holidays.py +161 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_series.py +13 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_week.py +130 -38
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_basic.py +61 -1
- idfkit-0.7.0/tests/test_codegen.py +634 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_compat_cli.py +314 -3
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_compat_diff.py +81 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_compat_extract.py +90 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_docs.py +57 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_document.py +493 -1
- idfkit-0.7.0/tests/test_download.py +323 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_exceptions.py +159 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_expand.py +12 -0
- idfkit-0.7.0/tests/test_geometry.py +2500 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_geometry_builders.py +223 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_idf_roundtrip.py +339 -1
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_introspection.py +138 -5
- idfkit-0.7.0/tests/test_migration_async_runner.py +268 -0
- idfkit-0.7.0/tests/test_migration_chain.py +47 -0
- idfkit-0.7.0/tests/test_migration_config.py +80 -0
- idfkit-0.7.0/tests/test_migration_diff.py +66 -0
- idfkit-0.7.0/tests/test_migration_e2e.py +74 -0
- idfkit-0.7.0/tests/test_migration_exceptions.py +59 -0
- idfkit-0.7.0/tests/test_migration_report.py +59 -0
- idfkit-0.7.0/tests/test_migration_runner.py +205 -0
- idfkit-0.7.0/tests/test_migration_subprocess_backend.py +139 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_objects.py +224 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_parsers.py +103 -0
- idfkit-0.7.0/tests/test_schema.py +720 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_async.py +345 -2
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_batch.py +31 -2
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_cache.py +23 -0
- idfkit-0.7.0/tests/test_simulation_config.py +353 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_csv_parser.py +25 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_err_parser.py +59 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_fs.py +312 -1
- idfkit-0.7.0/tests/test_simulation_html_parser.py +309 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_plotting.py +482 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_progress.py +34 -2
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_progress_bars.py +23 -2
- idfkit-0.7.0/tests/test_simulation_result.py +620 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_runner.py +59 -11
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_sql_parser.py +110 -0
- idfkit-0.7.0/tests/test_simulation_version_mismatch.py +80 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_thermal.py +87 -0
- idfkit-0.7.0/tests/test_validation.py +515 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_visualization.py +178 -0
- idfkit-0.7.0/tests/test_visualization_model.py +1509 -0
- idfkit-0.7.0/tests/test_weather_designday.py +518 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_weather_download.py +108 -25
- idfkit-0.7.0/tests/test_weather_index.py +767 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_weather_station.py +12 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_writers.py +315 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_zoning.py +210 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/uv.lock +2 -0
- idfkit-0.6.4/tests/schedules/test_evaluate.py +0 -292
- idfkit-0.6.4/tests/test_geometry.py +0 -571
- idfkit-0.6.4/tests/test_schema.py +0 -265
- idfkit-0.6.4/tests/test_simulation_config.py +0 -189
- idfkit-0.6.4/tests/test_simulation_result.py +0 -278
- idfkit-0.6.4/tests/test_validation.py +0 -213
- idfkit-0.6.4/tests/test_visualization_model.py +0 -532
- idfkit-0.6.4/tests/test_weather_designday.py +0 -278
- idfkit-0.6.4/tests/test_weather_index.py +0 -415
- {idfkit-0.6.4 → idfkit-0.7.0}/.devcontainer/devcontainer.json +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.devcontainer/postCreateCommand.sh +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/actions/setup-python-env/action.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/workflows/deploy-docs.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/workflows/deploy-pr-docs.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/workflows/main.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/workflows/on-release-main.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.github/workflows/validate-codecov-config.yml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.gitignore +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.pre-commit-config.yaml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.pre-commit-hooks.yaml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.python-version +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/.vscode/extensions.json +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/CLAUDE.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/CONTRIBUTING.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/LICENSE +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/Makefile +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/README.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/bench.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/bench_progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/bench_typecheckers.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/profile_overloads.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/profile_stubs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/benchmarks/progress_benchmark_results.json +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/codecov.yaml +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/document.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/exceptions.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/geometry.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/geometry_builders.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/io.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/objects.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/references.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/schedules/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/schema.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/async.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/batch.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/cache.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/expand.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/fs.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/plotting.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/runner.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/simulation/sql.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/thermal.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/validation.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/versions.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/visualization.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/weather/designday.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/weather/download.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/weather/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/weather/station.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/api/zoning.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_add_objects.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_add_objects_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_get_by_name.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_get_by_name_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_get_by_type.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_get_by_type_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_load_idf.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_load_idf_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_modify_fields.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_modify_fields_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_write_idf.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/benchmark_write_idf_dark.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/assets/construction-svg-example.svg +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/benchmarks.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/caching.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/cloud-storage.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/logging.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/simulation-architecture.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/type-safety.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/concepts/weather-pipeline.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/design/schedule-evaluator.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/examples/celery-integration.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/examples/cloud-simulations.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/examples/parametric-study.ipynb +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/examples/scythe.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/examples/sizing-workflow.ipynb +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/getting-started/core-tutorial.ipynb +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/getting-started/installation.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/idfkit-dev-guide.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/migration.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/overrides/.gitkeep +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/overrides/main.html +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/robots.txt +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/schedules/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/batch.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/caching.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/output-discovery.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/plotting.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/progress.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/results.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/simulation/sql-queries.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/cache_location.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/cache_management.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/disabling_caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/parallel_safety.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/simulation_cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/caching/weather_file_cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/1_local_preparation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/2_cloud_execution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/3_result_collection.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/authentication.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/implementing_custom_backends.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/key_prefixes.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/lazy_loading.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/local_caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/localfilesystem.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/s3_compatible_services.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/s3filesystem.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/cloud-storage/the_filesystem_protocol.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/app_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/basic_setup.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/debug_simulation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/django_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/file_handler.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/silence.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/structured_logging.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/logging/targeted_loggers.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/concurrent_execution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/energyplus_discovery.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/lazy_loading.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/model_immutability.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/sqlite_over_eso.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/streaming.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/simulation-architecture/subprocess_execution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/type-safety/autocomplete.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/type-safety/get_collection.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/type-safety/strict_fields.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/type-safety/version_info.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/ashrae_standards.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/bundled_index_no_dependencies.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/live_refresh_requires_openpyxl.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/spatial_search.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/spatial_search_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/concepts/weather-pipeline/wmo_numbers.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/1_holidays.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/2_design_days.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/4_schedulefile_support.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/4_schedulefile_support_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/4_schedulefile_support_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/batch_evaluation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/convenience_on_idfdocument.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/core_function.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/example_test.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/filesystem_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/hierarchical_schedule_resolution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/pandas_integration_optional.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/parsing_strategy.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/scheduledayhourly.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/design/schedule-evaluator/scheduledayinterval.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/celeryconfig.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/chain_workflow.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/docker_compose.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/dockerfile.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/poll_progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/project_layout.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/submit_batch.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/submit_parametric.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/submit_single.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_basic.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_parametric.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_with_cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_with_progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_with_retry.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/celery-integration/tasks_with_s3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/basic_s3_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/batch_downloads.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/batch_processing_with_s3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/digitalocean_spaces.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/localstack.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/minimize_s3_round_trips.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/minio.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/step_1_create_jobs_locally.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/step_2_run_on_cloud_workers.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/step_3_collect_results.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/cloud-simulations/weather_file_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/allocate.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/docker_worker.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/experiment_function.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/input_output_specs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/weather_prep.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/examples/scythe/worker.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/installation/verify_installation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/apply_design_days.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/create_a_new_model.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/discover_available_fields.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/discover_available_fields_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/find_weather_stations.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/load_a_model.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/lossless_roundtrip.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/modify_fields.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/query_objects.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/query_results.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/run_a_simulation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/getting-started/quick-start/write_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/index/find_weather_stations.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/index/quick_example.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/index/run_simulations.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/accessing_fields.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/accessing_fields_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/batch_updates.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/batch_updates_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/building_transforms.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/creating_objects.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/creating_objects_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/creating_objects_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/finding_referring_objects.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/finding_referring_objects_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/following_references.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/following_references_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/geometry.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/html_tabular_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/html_tabular_output_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/html_tabular_output_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/intersect_match.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/intersect_match_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/loading_a_file.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/loading_a_file_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/loading_a_file_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/output_formatting_modes.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/output_formatting_modes_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/range_checking.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/range_checking_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/reference_tracking_new_in_idfkit.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/removing_objects_by_index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/removing_objects_by_index_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/renaming_with_cascading_updates_new_in_idfkit.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/running_a_simulation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/running_a_simulation_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/running_a_simulation_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/saving_files.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/saving_files_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/saving_files_3.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/set_wwr.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/set_wwr_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/strict_mode.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/migration/validation_new_in_idfkit.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/design_day_evaluation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/example_analyze_office_occupancy.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/holiday_support.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/interpolation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/pandas_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/quick_start.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/schedulefile_with_remote_storage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/schedules/index/sub_hourly_timesteps.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/async_batch_processing.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/cancellation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/collecting_streaming_results.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/early_termination.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/fastapi_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/parametric_study.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/running_simulations_alongside_other_async_work.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/async/streaming_progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/batchresult.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/cloud_storage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/parametric_studies.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/progress_callbacks.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/rich_progress_bar.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/simulationjob.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/batch/worker_count.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/batch_processing.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/cache_key_computation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/check_for_hit.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/cleanup.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/clear_cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/custom_location.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/disabling_caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/manual_getput.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/caching/thread_and_process_safety.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/1_check_the_error_report_first.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/2_examine_raw_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/3_run_design_day_first.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/4_validate_before_simulation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/batch_error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/by_severity.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/error_counts.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/error_report.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/error_report_from_file.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/error_report_from_file_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/non_exception_failures.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/simulation_exceptions.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/summary.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/errors/timeout_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/index/lazy_loading.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/index/model_safety.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/index/parallel_execution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/index/quick_start.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/index/requirements.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/add_all_matching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/creating_an_index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/creating_an_index_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/filter_by_units.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/list_all_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/reporting_frequencies.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/search_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/selective_addition.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/output-discovery/workflow_discover_then_request.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/auto_detection.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/basic_usage_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/comfort_hours.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/customization.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/customization_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/dataframe_integration.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/different_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/energy_balance.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/explicit_backend.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/matplotlib.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/plotbackend_protocol.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/plotly.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/quick_start.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/same_variable_multiple_keys.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/temperature_profile.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/plotting/time_series_plotting.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/async_batch_with_stream_progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/async_callbacks.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/batch_progress_bar_with_tqdm.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/cloud_execution.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/cloud_execution_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/cloud_logging_aws_cloudwatch_gcp_cloud_logging.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/cloud_logging_aws_cloudwatch_gcp_cloud_logging_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/customising_the_tqdm_bar.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/dual_progress_tracking.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/fastapi_websocket.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/jupyter_ipywidgets.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/one_liner.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/quick_start.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/quick_start_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/rich_console.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/rich_console_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/server_sent_events_sse.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/simple_console_log.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/structured_logging.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/using_progressparser_directly.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/progress/websocket_forwarding.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/csv_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/error_report.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/html_tabular_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/html_tabular_output_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/lazy_loading.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/output_file_paths.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/output_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/reconstructing_from_directory.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/simulationresult_overview.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/results/sql_database.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/annual_simulation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/automatic_temporary_directory.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/checking_success.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/cloud_storage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/default_mode.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/design_day_only.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/energyplus_discovery.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/expanding_hvac_templates.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/explicit_directory.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/extra_arguments.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/ground_heat_transfer_slab_basement.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/model_safety.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/output_suffix_modes.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/simulation_errors.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/running/timeout.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/basic_query.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/context_manager.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/converting_to_dataframe.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/energyplus_time_convention.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/filter_by_table.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/filtering_by_environment.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/list_available_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/list_environments.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/opening_the_database_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/plotting_time_series.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/query_tabular_reports.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/simulation/sql-queries/search_variables.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/all_design_days.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/ashrae_621_ventilation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/ashrae_901_energy_standard.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/basic_application.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/by_type.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/complete_workflow.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/location_object.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/quick_apply.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/skip_site_location_update.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/summary_output.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/design-days/with_wet_bulb_design_day.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/batch_downloads.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/caching.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/clear_cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/custom_cache_directory.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/download_by_filename.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/integration_example.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/offline_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/downloads/weatherfiles.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/address_formats.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/alternative_direct_coordinates.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/basic_usage.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/caching_results.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/complete_workflow.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/error_handling.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/rate_limiting.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/geocoding/with_station_search.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/address_based_search.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/ashrae_design_days.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/installation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/installation_2.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/quick_start.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/index/workflow_example.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/filter_by_coordinates.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/filter_by_country.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/get_by_filename.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/get_by_wmo_number.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/listing_countries.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/loading_the_index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/refreshing_the_index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/search_by_address.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/search_by_coordinates.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/search_by_filename.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/search_by_name.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/snippets/weather/station-search/search_tips.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/stylesheets/extra.css +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/troubleshooting/energyplus.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/weather/design-days.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/weather/downloads.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/weather/geocoding.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/weather/index.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/docs/weather/station-search.md +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/scripts/build_docs.sh +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/scripts/build_weather_index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/_compat.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/_compat_object.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/_generated_types.pyi +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/codegen/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/codegen/generate_doc_locations.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/codegen/generate_stubs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_checker.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_cli.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_diff.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_extract.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_models.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/compat/_sarif.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/cst.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/docs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/document.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/document.pyi +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/download.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/epjson_parser.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/geometry.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/geometry_builders.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/idf_parser.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/introspection.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/objects.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/py.typed +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/references.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/builder.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/compact.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/day.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/day_types.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/evaluate.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/file.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/holidays.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/series.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/time_utils.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/types.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/week.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schedules/year.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schema.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V22-1-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V22-2-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V23-1-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V23-2-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V24-1-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V24-2-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V25-1-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V25-2-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V8-9-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-0-1/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-1-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-2-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-3-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-4-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-5-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/V9-6-0/Energy+.schema.epJSON.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/schemas/doc_locations.json +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/async_batch.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/batch.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/cache.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/expand.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/fs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/outputs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/csv.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/err.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/html.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/rdd.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/parsers/sql.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/plotting/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/plotting/matplotlib.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/plotting/plotly.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/plotting/visualizations.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/progress.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/simulation/progress_bars.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/thermal/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/thermal/gas.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/thermal/properties.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/validation.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/versions.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/visualization/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/visualization/model.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/visualization/svg.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/data/stations.json.gz +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/designday.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/download.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/geocode.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/index.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/spatial.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/weather/station.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/writers.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/src/idfkit/zoning.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/conftest.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/simulation/sample.csv +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/simulation/sample.err +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/simulation/sample.mdd +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/simulation/sample.rdd +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/simulation/sample_fatal.err +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/weather/empty.ddy +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/fixtures/weather/sample.ddy +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/__init__.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_day_types.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_time_utils.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_types.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/schedules/test_year.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_epjson_roundtrip.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_eppy_compat.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_logging.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_references.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_roundtrip.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_schedule_builder.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_e2e.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_outputs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_prep_outputs.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_simulation_rdd_parser.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_strict_typing.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_versions.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_weather_geocode.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tests/test_weather_spatial.py +0 -0
- {idfkit-0.6.4 → idfkit-0.7.0}/tox.ini +0 -0
|
@@ -22,5 +22,12 @@
|
|
|
22
22
|
"tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji",
|
|
23
23
|
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format",
|
|
24
24
|
"tag:yaml.org,2002:python/object/apply:pymdownx.slugs.slugify mapping"
|
|
25
|
+
],
|
|
26
|
+
"python-envs.pythonProjects": [
|
|
27
|
+
{
|
|
28
|
+
"path": ".",
|
|
29
|
+
"envManager": "ms-python.python:venv",
|
|
30
|
+
"packageManager": "ms-python.python:pip"
|
|
31
|
+
}
|
|
25
32
|
]
|
|
26
33
|
}
|
|
@@ -177,7 +177,7 @@ idfkit searches for EnergyPlus in this order (see `src/idfkit/simulation/config.
|
|
|
177
177
|
4. Platform default directories (newest version first):
|
|
178
178
|
- Linux: `~/.local/EnergyPlus-*`, `~/EnergyPlus-*`, `/usr/local/EnergyPlus-*`, `/opt/EnergyPlus-*`
|
|
179
179
|
- macOS: `~/Applications/EnergyPlus-*`, `/Applications/EnergyPlus-*`
|
|
180
|
-
- Windows: `%ProgramFiles%/EnergyPlus
|
|
180
|
+
- Windows: `%ProgramFiles%/EnergyPlus-*`, `%SystemDrive%\EnergyPlusV*` (e.g. `C:\EnergyPlusV25-2-0`)
|
|
181
181
|
|
|
182
182
|
### Verifying the Installation
|
|
183
183
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: idfkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
4
4
|
Summary: A fast, modern EnergyPlus IDF/epJSON parser with O(1) lookups and reference tracking
|
|
5
5
|
Project-URL: Homepage, https://py.idfkit.com/
|
|
6
6
|
Project-URL: Repository, https://github.com/idfkit/idfkit
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Migration API
|
|
2
|
+
|
|
3
|
+
Forward-migrate IDF models across EnergyPlus versions by orchestrating the
|
|
4
|
+
`Transition-VX-to-VY` binaries shipped in `PreProcess/IDFVersionUpdater`.
|
|
5
|
+
|
|
6
|
+
## migrate
|
|
7
|
+
|
|
8
|
+
::: idfkit.migration.runner.migrate
|
|
9
|
+
options:
|
|
10
|
+
show_root_heading: true
|
|
11
|
+
show_source: true
|
|
12
|
+
|
|
13
|
+
## async_migrate
|
|
14
|
+
|
|
15
|
+
::: idfkit.migration.async_runner.async_migrate
|
|
16
|
+
options:
|
|
17
|
+
show_root_heading: true
|
|
18
|
+
show_source: true
|
|
19
|
+
|
|
20
|
+
## MigrationReport
|
|
21
|
+
|
|
22
|
+
::: idfkit.migration.report.MigrationReport
|
|
23
|
+
options:
|
|
24
|
+
show_root_heading: true
|
|
25
|
+
show_source: true
|
|
26
|
+
members:
|
|
27
|
+
- migrated_model
|
|
28
|
+
- source_version
|
|
29
|
+
- target_version
|
|
30
|
+
- requested_target
|
|
31
|
+
- steps
|
|
32
|
+
- diff
|
|
33
|
+
- success
|
|
34
|
+
- completed_steps
|
|
35
|
+
- failed_step
|
|
36
|
+
- summary
|
|
37
|
+
|
|
38
|
+
## MigrationStep
|
|
39
|
+
|
|
40
|
+
::: idfkit.migration.report.MigrationStep
|
|
41
|
+
options:
|
|
42
|
+
show_root_heading: true
|
|
43
|
+
show_source: true
|
|
44
|
+
|
|
45
|
+
## MigrationDiff
|
|
46
|
+
|
|
47
|
+
::: idfkit.migration.report.MigrationDiff
|
|
48
|
+
options:
|
|
49
|
+
show_root_heading: true
|
|
50
|
+
show_source: true
|
|
51
|
+
members:
|
|
52
|
+
- added_object_types
|
|
53
|
+
- removed_object_types
|
|
54
|
+
- object_count_delta
|
|
55
|
+
- field_changes
|
|
56
|
+
- is_empty
|
|
57
|
+
|
|
58
|
+
## FieldDelta
|
|
59
|
+
|
|
60
|
+
::: idfkit.migration.report.FieldDelta
|
|
61
|
+
options:
|
|
62
|
+
show_root_heading: true
|
|
63
|
+
show_source: true
|
|
64
|
+
|
|
65
|
+
## MigrationProgress
|
|
66
|
+
|
|
67
|
+
::: idfkit.migration.progress.MigrationProgress
|
|
68
|
+
options:
|
|
69
|
+
show_root_heading: true
|
|
70
|
+
show_source: true
|
|
71
|
+
|
|
72
|
+
## Migrator
|
|
73
|
+
|
|
74
|
+
::: idfkit.migration.protocol.Migrator
|
|
75
|
+
options:
|
|
76
|
+
show_root_heading: true
|
|
77
|
+
show_source: true
|
|
78
|
+
|
|
79
|
+
## AsyncMigrator
|
|
80
|
+
|
|
81
|
+
::: idfkit.migration.protocol.AsyncMigrator
|
|
82
|
+
options:
|
|
83
|
+
show_root_heading: true
|
|
84
|
+
show_source: true
|
|
85
|
+
|
|
86
|
+
## MigrationStepResult
|
|
87
|
+
|
|
88
|
+
::: idfkit.migration.protocol.MigrationStepResult
|
|
89
|
+
options:
|
|
90
|
+
show_root_heading: true
|
|
91
|
+
show_source: true
|
|
92
|
+
|
|
93
|
+
## SubprocessMigrator
|
|
94
|
+
|
|
95
|
+
::: idfkit.migration.subprocess_backend.SubprocessMigrator
|
|
96
|
+
options:
|
|
97
|
+
show_root_heading: true
|
|
98
|
+
show_source: true
|
|
99
|
+
|
|
100
|
+
## AsyncSubprocessMigrator
|
|
101
|
+
|
|
102
|
+
::: idfkit.migration.async_subprocess_backend.AsyncSubprocessMigrator
|
|
103
|
+
options:
|
|
104
|
+
show_root_heading: true
|
|
105
|
+
show_source: true
|
|
106
|
+
|
|
107
|
+
## plan_migration_chain
|
|
108
|
+
|
|
109
|
+
::: idfkit.migration.chain.plan_migration_chain
|
|
110
|
+
options:
|
|
111
|
+
show_root_heading: true
|
|
112
|
+
show_source: true
|
|
113
|
+
|
|
114
|
+
## document_diff
|
|
115
|
+
|
|
116
|
+
::: idfkit.migration.diff.document_diff
|
|
117
|
+
options:
|
|
118
|
+
show_root_heading: true
|
|
119
|
+
show_source: true
|
|
@@ -9,6 +9,15 @@ The linter parses Python source files using the AST (no code execution) and
|
|
|
9
9
|
compares extracted string literals against the bundled epJSON schemas for
|
|
10
10
|
different EnergyPlus versions.
|
|
11
11
|
|
|
12
|
+
!!! tip "Static linting vs. runtime migration"
|
|
13
|
+
The compatibility linter described here flags cross-version breakage
|
|
14
|
+
*statically* — it tells you which lines of your code reference object
|
|
15
|
+
types or choice values that won't exist in another EnergyPlus version.
|
|
16
|
+
To actually upgrade an existing IDF model, see
|
|
17
|
+
[Migrating Versions](../simulation/migrating-versions.md), which uses
|
|
18
|
+
`idfkit.migrate()` to forward-migrate models through the
|
|
19
|
+
`IDFVersionUpdater` transition binaries.
|
|
20
|
+
|
|
12
21
|
## What it detects
|
|
13
22
|
|
|
14
23
|
| Code | Description |
|
|
@@ -105,5 +105,6 @@ unmodified objects:
|
|
|
105
105
|
|
|
106
106
|
- [Core Tutorial](core-tutorial.ipynb) - Complete interactive walkthrough
|
|
107
107
|
- [Simulation Guide](../simulation/index.md) - Deep dive into simulation features
|
|
108
|
+
- [Migrating Versions](../simulation/migrating-versions.md) - Move models forward across EnergyPlus releases
|
|
108
109
|
- [Weather Guide](../weather/index.md) - Weather station search and design days
|
|
109
110
|
- [API Reference](../api/document.md) - Full API documentation
|
|
@@ -49,6 +49,7 @@ pip install idfkit
|
|
|
49
49
|
<span class="chip">:material-play-circle-outline: Simulation</span>
|
|
50
50
|
<span class="chip">:material-weather-cloudy: Weather data</span>
|
|
51
51
|
<span class="chip">:material-history: v8.9 -- v25.2</span>
|
|
52
|
+
<span class="chip">:material-update: Version migration</span>
|
|
52
53
|
|
|
53
54
|
</div>
|
|
54
55
|
|
|
@@ -134,5 +135,6 @@ pip install idfkit
|
|
|
134
135
|
|------|-------------|
|
|
135
136
|
| [Core Tutorial](getting-started/core-tutorial.ipynb) | Interactive notebook covering basic, advanced, and expert usage |
|
|
136
137
|
| [Migrating from eppy](migration.md) | Side-by-side comparison of eppy and idfkit APIs |
|
|
138
|
+
| [Migrating Versions](simulation/migrating-versions.md) | Forward-migrate IDF models across EnergyPlus releases |
|
|
137
139
|
| [Benchmarks](benchmarks.md) | Performance comparison against eppy and other tools |
|
|
138
140
|
| [Troubleshooting](troubleshooting/errors.md) | Common errors and solutions |
|
|
@@ -27,6 +27,10 @@ returns the same `SimulationResult`. The only difference is that EnergyPlus
|
|
|
27
27
|
runs as an `asyncio` subprocess, so the event loop is free to do other work
|
|
28
28
|
while waiting.
|
|
29
29
|
|
|
30
|
+
The `auto_migrate` flag and `result.migration_report` work identically to
|
|
31
|
+
the sync API. For pure async migration without simulating, see
|
|
32
|
+
[`async_migrate()`][idfkit.migration.async_runner.async_migrate].
|
|
33
|
+
|
|
30
34
|
## Async Batch Processing
|
|
31
35
|
|
|
32
36
|
`async_simulate_batch()` mirrors `simulate_batch()` but uses an
|
|
@@ -194,10 +198,14 @@ don't block the event loop. This is transparent — no user action required.
|
|
|
194
198
|
Error handling is identical to the sync API:
|
|
195
199
|
|
|
196
200
|
```python
|
|
197
|
-
from idfkit.exceptions import SimulationError
|
|
201
|
+
from idfkit.exceptions import SimulationError, VersionMismatchError
|
|
198
202
|
|
|
199
203
|
try:
|
|
200
204
|
result = await async_simulate(model, weather, timeout=60)
|
|
205
|
+
except VersionMismatchError as e:
|
|
206
|
+
# Retry with auto_migrate, or migrate explicitly first.
|
|
207
|
+
print(f"Model is {e.current}, need {e.target}")
|
|
208
|
+
result = await async_simulate(model, weather, timeout=60, auto_migrate=True)
|
|
201
209
|
except SimulationError as e:
|
|
202
210
|
if e.exit_code is None:
|
|
203
211
|
print("Simulation timed out")
|
|
@@ -212,4 +220,5 @@ never raises due to a single job failing.
|
|
|
212
220
|
|
|
213
221
|
- [Running Simulations](running.md) — Sync simulation guide
|
|
214
222
|
- [Batch Processing](batch.md) — Sync batch guide
|
|
223
|
+
- [Migrating Versions](migrating-versions.md) — Forward-migrate models with `auto_migrate` or `async_migrate`
|
|
215
224
|
- [Simulation Architecture](../concepts/simulation-architecture.md) — Design decisions
|
|
@@ -67,6 +67,28 @@ The `simulate()` function raises `SimulationError` for certain failures:
|
|
|
67
67
|
| EnergyPlus not found | `EnergyPlusNotFoundError` |
|
|
68
68
|
| Timeout exceeded | `SimulationError` (exit_code=None) |
|
|
69
69
|
| OS error starting process | `SimulationError` |
|
|
70
|
+
| Model version differs from installed EnergyPlus | `VersionMismatchError` |
|
|
71
|
+
|
|
72
|
+
### Version Mismatch
|
|
73
|
+
|
|
74
|
+
By default `simulate()` refuses to run when `model.version` doesn't match
|
|
75
|
+
the installed EnergyPlus version, raising
|
|
76
|
+
[`VersionMismatchError`][idfkit.exceptions.VersionMismatchError] with a
|
|
77
|
+
suggested migration chain. Two ways to resolve it:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
# Option A: let simulate() forward-migrate transparently
|
|
81
|
+
result = simulate(model, weather, auto_migrate=True)
|
|
82
|
+
print(result.migration_report.summary())
|
|
83
|
+
|
|
84
|
+
# Option B: migrate explicitly first, inspect the report, then simulate
|
|
85
|
+
from idfkit import migrate
|
|
86
|
+
report = migrate(model, target_version=(25, 2, 0))
|
|
87
|
+
result = simulate(report.migrated_model, weather)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Backward migration (installed EnergyPlus older than the model) is never
|
|
91
|
+
attempted and always raises. See [Migrating Versions](migrating-versions.md).
|
|
70
92
|
|
|
71
93
|
### Timeout Handling
|
|
72
94
|
|
|
@@ -179,4 +201,5 @@ Or from string:
|
|
|
179
201
|
|
|
180
202
|
- [Running Simulations](running.md) — Basic simulation guide
|
|
181
203
|
- [Parsing Results](results.md) — Working with SimulationResult
|
|
204
|
+
- [Migrating Versions](migrating-versions.md) — Resolving `VersionMismatchError`
|
|
182
205
|
- [Troubleshooting](../troubleshooting/errors.md) — Common error solutions
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Migrating Versions
|
|
2
|
+
|
|
3
|
+
EnergyPlus ships a new release roughly twice a year, and each release can
|
|
4
|
+
rename objects, drop fields, or alter defaults. idfkit's
|
|
5
|
+
[`migrate()`][idfkit.migration.runner.migrate] orchestrates the
|
|
6
|
+
`Transition-VX-to-VY` binaries shipped in `PreProcess/IDFVersionUpdater` to
|
|
7
|
+
forward-migrate an IDF model across one or more version steps in a single
|
|
8
|
+
call.
|
|
9
|
+
|
|
10
|
+
There are two ways to migrate a model:
|
|
11
|
+
|
|
12
|
+
| Approach | When to use |
|
|
13
|
+
|----------|-------------|
|
|
14
|
+
| Explicit `migrate(model, target_version=...)` | You want to inspect the migrated model, the structural diff, or per-step diagnostics before doing anything else. |
|
|
15
|
+
| `simulate(model, ..., auto_migrate=True)` | You want to run a simulation against the installed EnergyPlus and don't care about the intermediate steps. |
|
|
16
|
+
|
|
17
|
+
!!! note "Forward only"
|
|
18
|
+
EnergyPlus does not ship reverse transition binaries. Asking to migrate
|
|
19
|
+
*backwards* (target older than source) always raises
|
|
20
|
+
[`VersionMismatchError`][idfkit.exceptions.VersionMismatchError] with
|
|
21
|
+
`direction == "backward"`.
|
|
22
|
+
|
|
23
|
+
## Explicit Migration
|
|
24
|
+
|
|
25
|
+
Call [`migrate()`][idfkit.migration.runner.migrate] directly when you need
|
|
26
|
+
the migrated [`IDFDocument`][idfkit.document.IDFDocument] in hand:
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
--8<-- "docs/snippets/migration_versions/quick_start.py:example"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The returned [`MigrationReport`][idfkit.migration.report.MigrationReport]
|
|
33
|
+
exposes:
|
|
34
|
+
|
|
35
|
+
| Attribute | Description |
|
|
36
|
+
|-----------|-------------|
|
|
37
|
+
| `migrated_model` | The migrated `IDFDocument` (`None` on a no-op migration where source equals target). |
|
|
38
|
+
| `source_version` / `target_version` | The version range actually traversed. |
|
|
39
|
+
| `requested_target` | The version originally requested — differs from `target_version` only on partial failures. |
|
|
40
|
+
| `steps` | Ordered tuple of [`MigrationStep`][idfkit.migration.report.MigrationStep] records with stdout/stderr/audit per binary invocation. |
|
|
41
|
+
| `diff` | Structural [`MigrationDiff`][idfkit.migration.report.MigrationDiff] — added/removed object types, count deltas, and per-type field changes. |
|
|
42
|
+
| `success` | `True` only when every step succeeded. |
|
|
43
|
+
| `summary()` | Short human-readable summary suitable for logs or CLI. |
|
|
44
|
+
|
|
45
|
+
## Transparent Migration During `simulate()`
|
|
46
|
+
|
|
47
|
+
When you only want a simulation result, pass `auto_migrate=True` and
|
|
48
|
+
`simulate()` will forward-migrate the model on your behalf if the
|
|
49
|
+
installed EnergyPlus version differs:
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
--8<-- "docs/snippets/migration_versions/auto_migrate_simulate.py:example"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The resulting [`SimulationResult.migration_report`][idfkit.simulation.result.SimulationResult.migration_report]
|
|
56
|
+
is populated whenever a migration ran, and `None` otherwise. Without
|
|
57
|
+
`auto_migrate=True`, a version mismatch raises
|
|
58
|
+
[`VersionMismatchError`][idfkit.exceptions.VersionMismatchError] before the
|
|
59
|
+
simulation starts.
|
|
60
|
+
|
|
61
|
+
## Async Migration
|
|
62
|
+
|
|
63
|
+
Both APIs have async counterparts with identical semantics:
|
|
64
|
+
|
|
65
|
+
- [`async_migrate()`][idfkit.migration.async_runner.async_migrate] — non-blocking
|
|
66
|
+
equivalent of `migrate()`, useful inside FastAPI handlers or other async
|
|
67
|
+
contexts where you want only the migration.
|
|
68
|
+
- [`async_simulate(..., auto_migrate=True)`][idfkit.simulation.async_runner.async_simulate]
|
|
69
|
+
— accepts the same `auto_migrate` flag and populates `migration_report`
|
|
70
|
+
on the returned `SimulationResult`.
|
|
71
|
+
|
|
72
|
+
## Partial Failures
|
|
73
|
+
|
|
74
|
+
If a transition step fails midway,
|
|
75
|
+
[`MigrationError`][idfkit.exceptions.MigrationError] is raised. The
|
|
76
|
+
exception carries `from_version`, `to_version`, the binary's `exit_code`
|
|
77
|
+
and `stderr`, and `completed_steps` — the prefix of `(from, to)` pairs that
|
|
78
|
+
ran successfully — so you can recover partial progress or report exactly
|
|
79
|
+
which transition broke.
|
|
80
|
+
|
|
81
|
+
## See Also
|
|
82
|
+
|
|
83
|
+
- [Migration API](../api/migration.md) — full reference for `migrate`, `MigrationReport`, and the `Migrator` protocol.
|
|
84
|
+
- [Version Compatibility](../concepts/version-compatibility.md) — the *static* `idfkit check` linter for catching cross-version breakage in your code before you migrate.
|
|
85
|
+
- [Running Simulations](running.md) — full `simulate()` parameter reference.
|
|
86
|
+
- [Error Handling](errors.md) — handling `VersionMismatchError` from `simulate()`.
|
|
@@ -105,6 +105,7 @@ def simulate(
|
|
|
105
105
|
cache: SimulationCache | None = None,
|
|
106
106
|
fs: FileSystem | None = None,
|
|
107
107
|
on_progress: Callable[[SimulationProgress], Any] | Literal["tqdm"] | None = None,
|
|
108
|
+
auto_migrate: bool = False,
|
|
108
109
|
) -> SimulationResult:
|
|
109
110
|
```
|
|
110
111
|
|
|
@@ -134,6 +135,7 @@ def simulate(
|
|
|
134
135
|
| `cache` | `None` | Simulation cache for result reuse |
|
|
135
136
|
| `fs` | `None` | File system backend for cloud storage |
|
|
136
137
|
| `on_progress` | `None` | Callback or `"tqdm"` for real-time progress updates |
|
|
138
|
+
| `auto_migrate` | `False` | Forward-migrate the model when its version differs from the installed EnergyPlus (see [Migrating Versions](migrating-versions.md)) |
|
|
137
139
|
|
|
138
140
|
## EnergyPlus Discovery
|
|
139
141
|
|
|
@@ -240,8 +242,19 @@ Enable content-addressed caching to avoid redundant simulations:
|
|
|
240
242
|
|
|
241
243
|
See [Caching](caching.md) for details.
|
|
242
244
|
|
|
245
|
+
## Version Migration
|
|
246
|
+
|
|
247
|
+
When `model.version` differs from the installed EnergyPlus,
|
|
248
|
+
`simulate()` raises [`VersionMismatchError`][idfkit.exceptions.VersionMismatchError]
|
|
249
|
+
by default. Pass `auto_migrate=True` to forward-migrate the model
|
|
250
|
+
transparently before the run; the resulting
|
|
251
|
+
[`MigrationReport`][idfkit.migration.report.MigrationReport] is attached to
|
|
252
|
+
[`SimulationResult.migration_report`][idfkit.simulation.result.SimulationResult.migration_report].
|
|
253
|
+
See [Migrating Versions](migrating-versions.md) for the full workflow.
|
|
254
|
+
|
|
243
255
|
## See Also
|
|
244
256
|
|
|
257
|
+
- [Migrating Versions](migrating-versions.md) — Forward-migrate IDF models across EnergyPlus releases
|
|
245
258
|
- [Progress Tracking](progress.md) — Real-time progress with `on_progress`
|
|
246
259
|
- [Parsing Results](results.md) — Working with `SimulationResult`
|
|
247
260
|
- [Batch Processing](batch.md) — Running multiple simulations
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from idfkit import IDFDocument
|
|
4
|
+
from idfkit.simulation import SimulationResult
|
|
5
|
+
|
|
6
|
+
model: IDFDocument = ... # type: ignore[assignment]
|
|
7
|
+
result: SimulationResult = ... # type: ignore[assignment]
|
|
8
|
+
# --8<-- [start:example]
|
|
9
|
+
from idfkit import load_idf
|
|
10
|
+
from idfkit.simulation import simulate
|
|
11
|
+
|
|
12
|
+
# Forward-migrate the model transparently before running.
|
|
13
|
+
model = load_idf("old_building.idf")
|
|
14
|
+
result = simulate(model, "weather.epw", design_day=True, auto_migrate=True)
|
|
15
|
+
|
|
16
|
+
if result.migration_report is not None:
|
|
17
|
+
print(result.migration_report.summary())
|
|
18
|
+
|
|
19
|
+
print(f"Simulation success: {result.success}")
|
|
20
|
+
# --8<-- [end:example]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from idfkit import IDFDocument, MigrationReport
|
|
4
|
+
|
|
5
|
+
model: IDFDocument = ... # type: ignore[assignment]
|
|
6
|
+
report: MigrationReport = ... # type: ignore[assignment]
|
|
7
|
+
# --8<-- [start:example]
|
|
8
|
+
from idfkit import load_idf, migrate
|
|
9
|
+
from idfkit.simulation import find_energyplus
|
|
10
|
+
|
|
11
|
+
# Load an older IDF (e.g. v22.1.0) and migrate to the installed EnergyPlus.
|
|
12
|
+
model = load_idf("old_building.idf")
|
|
13
|
+
config = find_energyplus()
|
|
14
|
+
|
|
15
|
+
report = migrate(model, target_version=config.version, energyplus=config)
|
|
16
|
+
|
|
17
|
+
print(report.summary())
|
|
18
|
+
|
|
19
|
+
migrated = report.migrated_model
|
|
20
|
+
if migrated is not None:
|
|
21
|
+
print(f"Migrated model version: {migrated.version}")
|
|
22
|
+
# --8<-- [end:example]
|
|
@@ -216,7 +216,7 @@ types, invalid bytes, or extra fields on non-extensible objects).
|
|
|
216
216
|
doc = load_idf("file.idf", strict_parsing=False)
|
|
217
217
|
```
|
|
218
218
|
|
|
219
|
-
### Version
|
|
219
|
+
### Unsupported Schema Version
|
|
220
220
|
|
|
221
221
|
```
|
|
222
222
|
ValueError: Schema for version (99, 0, 0) not found
|
|
@@ -237,6 +237,39 @@ ValueError: Schema for version (99, 0, 0) not found
|
|
|
237
237
|
doc = load_idf("file.idf", version=(24, 1, 0))
|
|
238
238
|
```
|
|
239
239
|
|
|
240
|
+
### Simulation Version Mismatch
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
VersionMismatchError: Model version 22.1.0 does not match target EnergyPlus version 25.2.0.
|
|
244
|
+
Migration chain: 22.1.0->22.2.0 -> 22.2.0->23.1.0 -> ... -> 25.1.0->25.2.0
|
|
245
|
+
Call idfkit.migrate(model, target_version=...) to migrate explicitly.
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Cause:** `simulate()` was called with a model whose `version` differs
|
|
249
|
+
from the installed EnergyPlus, and `auto_migrate` is `False` (the default).
|
|
250
|
+
|
|
251
|
+
**Solutions:**
|
|
252
|
+
|
|
253
|
+
1. Forward-migrate transparently inside `simulate()`:
|
|
254
|
+
```python
|
|
255
|
+
result = simulate(model, weather, auto_migrate=True)
|
|
256
|
+
print(result.migration_report.summary())
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
2. Migrate explicitly first so you can inspect the diff:
|
|
260
|
+
```python
|
|
261
|
+
from idfkit import migrate
|
|
262
|
+
report = migrate(model, target_version=(25, 2, 0))
|
|
263
|
+
result = simulate(report.migrated_model, weather)
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
!!! warning "Backward migration is not supported"
|
|
267
|
+
EnergyPlus ships no reverse transition binaries, so a model *newer*
|
|
268
|
+
than the installed EnergyPlus cannot be downgraded. Install a newer
|
|
269
|
+
EnergyPlus or load the model explicitly at an older version.
|
|
270
|
+
|
|
271
|
+
See [Migrating Versions](../simulation/migrating-versions.md) for the full workflow.
|
|
272
|
+
|
|
240
273
|
## Performance Issues
|
|
241
274
|
|
|
242
275
|
### Slow Station Index Loading
|
|
@@ -38,6 +38,7 @@ nav:
|
|
|
38
38
|
- Plotting: simulation/plotting.md
|
|
39
39
|
- Output Discovery: simulation/output-discovery.md
|
|
40
40
|
- Error Handling: simulation/errors.md
|
|
41
|
+
- Migrating Versions: simulation/migrating-versions.md
|
|
41
42
|
|
|
42
43
|
- Schedules:
|
|
43
44
|
- Overview: schedules/index.md
|
|
@@ -82,6 +83,7 @@ nav:
|
|
|
82
83
|
- Cache: api/simulation/cache.md
|
|
83
84
|
- Plotting: api/simulation/plotting.md
|
|
84
85
|
- File Systems: api/simulation/fs.md
|
|
86
|
+
- Migration: api/migration.md
|
|
85
87
|
- Schedules:
|
|
86
88
|
- Overview: api/schedules/index.md
|
|
87
89
|
- Weather:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "idfkit"
|
|
3
|
-
version = "
|
|
3
|
+
version = "0.7.0"
|
|
4
4
|
description = "A fast, modern EnergyPlus IDF/epJSON parser with O(1) lookups and reference tracking"
|
|
5
5
|
authors = [{ name = "Samuel Letellier-Duchesne", email = "developers@idfkit.com" }]
|
|
6
6
|
readme = "README.md"
|
|
@@ -80,6 +80,7 @@ dev = [
|
|
|
80
80
|
"types-aiobotocore-s3>=2.5",
|
|
81
81
|
"boto3>=1.26",
|
|
82
82
|
"aiobotocore>=2.5",
|
|
83
|
+
"plotly>=5.0",
|
|
83
84
|
]
|
|
84
85
|
benchmark = [
|
|
85
86
|
"eppy>=0.5.63",
|
|
@@ -130,6 +131,7 @@ reportUnknownParameterType = false
|
|
|
130
131
|
reportOptionalMemberAccess = false
|
|
131
132
|
reportMissingParameterType = false
|
|
132
133
|
reportMissingImports = false
|
|
134
|
+
reportMissingTypeStubs = false
|
|
133
135
|
reportUntypedFunctionDecorator = false
|
|
134
136
|
reportUntypedBaseClass = false
|
|
135
137
|
reportMissingTypeArgument = false
|
|
@@ -46,6 +46,7 @@ from .exceptions import (
|
|
|
46
46
|
IdfKitError,
|
|
47
47
|
IDFParseError,
|
|
48
48
|
InvalidFieldError,
|
|
49
|
+
MigrationError,
|
|
49
50
|
NoDesignDaysError,
|
|
50
51
|
ParseError,
|
|
51
52
|
RangeError,
|
|
@@ -54,6 +55,7 @@ from .exceptions import (
|
|
|
54
55
|
UnknownObjectTypeError,
|
|
55
56
|
UnsupportedVersionError,
|
|
56
57
|
ValidationFailedError,
|
|
58
|
+
VersionMismatchError,
|
|
57
59
|
VersionNotFoundError,
|
|
58
60
|
)
|
|
59
61
|
|
|
@@ -95,6 +97,9 @@ from .idf_parser import IDFParser, get_idf_version, parse_idf
|
|
|
95
97
|
|
|
96
98
|
# Introspection
|
|
97
99
|
from .introspection import FieldDescription, ObjectDescription
|
|
100
|
+
|
|
101
|
+
# Migration
|
|
102
|
+
from .migration import MigrationReport, async_migrate, migrate
|
|
98
103
|
from .objects import IDFCollection, IDFObject
|
|
99
104
|
|
|
100
105
|
# Reference graph
|
|
@@ -398,6 +403,8 @@ __all__ = [
|
|
|
398
403
|
"IDFParser",
|
|
399
404
|
"IdfKitError",
|
|
400
405
|
"InvalidFieldError",
|
|
406
|
+
"MigrationError",
|
|
407
|
+
"MigrationReport",
|
|
401
408
|
"NoDesignDaysError",
|
|
402
409
|
"ObjectDescription",
|
|
403
410
|
"ParseError",
|
|
@@ -413,12 +420,14 @@ __all__ = [
|
|
|
413
420
|
"ValidationFailedError",
|
|
414
421
|
"ValidationResult",
|
|
415
422
|
"Vector3D",
|
|
423
|
+
"VersionMismatchError",
|
|
416
424
|
"VersionNotFoundError",
|
|
417
425
|
"ZoneFootprint",
|
|
418
426
|
"ZonedBlock",
|
|
419
427
|
"ZoningScheme",
|
|
420
428
|
"__version__",
|
|
421
429
|
"add_shading_block",
|
|
430
|
+
"async_migrate",
|
|
422
431
|
"bounding_box",
|
|
423
432
|
"calculate_surface_area",
|
|
424
433
|
"calculate_surface_azimuth",
|
|
@@ -451,6 +460,7 @@ __all__ = [
|
|
|
451
460
|
"link_horizontal_surfaces",
|
|
452
461
|
"load_epjson",
|
|
453
462
|
"load_idf",
|
|
463
|
+
"migrate",
|
|
454
464
|
"new_document",
|
|
455
465
|
"parse_epjson",
|
|
456
466
|
"parse_idf",
|