idfkit 0.1.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.
Files changed (538) hide show
  1. idfkit-0.1.0/.devcontainer/devcontainer.json +25 -0
  2. idfkit-0.1.0/.devcontainer/postCreateCommand.sh +15 -0
  3. idfkit-0.1.0/.github/actions/setup-python-env/action.yml +31 -0
  4. idfkit-0.1.0/.github/workflows/main.yml +71 -0
  5. idfkit-0.1.0/.github/workflows/on-release-main.yml +71 -0
  6. idfkit-0.1.0/.github/workflows/validate-codecov-config.yml +15 -0
  7. idfkit-0.1.0/.gitignore +215 -0
  8. idfkit-0.1.0/.pre-commit-config.yaml +23 -0
  9. idfkit-0.1.0/.python-version +1 -0
  10. idfkit-0.1.0/.vscode/extensions.json +7 -0
  11. idfkit-0.1.0/.vscode/settings.json +26 -0
  12. idfkit-0.1.0/CLAUDE.md +81 -0
  13. idfkit-0.1.0/CONTRIBUTING.md +180 -0
  14. idfkit-0.1.0/LICENSE +21 -0
  15. idfkit-0.1.0/Makefile +63 -0
  16. idfkit-0.1.0/PKG-INFO +232 -0
  17. idfkit-0.1.0/README.md +182 -0
  18. idfkit-0.1.0/benchmarks/bench.py +711 -0
  19. idfkit-0.1.0/benchmarks/bench_progress.py +340 -0
  20. idfkit-0.1.0/benchmarks/progress_benchmark_results.json +287 -0
  21. idfkit-0.1.0/codecov.yaml +9 -0
  22. idfkit-0.1.0/docs/api/document.md +7 -0
  23. idfkit-0.1.0/docs/api/exceptions.md +5 -0
  24. idfkit-0.1.0/docs/api/geometry.md +7 -0
  25. idfkit-0.1.0/docs/api/io.md +16 -0
  26. idfkit-0.1.0/docs/api/objects.md +9 -0
  27. idfkit-0.1.0/docs/api/references.md +7 -0
  28. idfkit-0.1.0/docs/api/schedules/index.md +138 -0
  29. idfkit-0.1.0/docs/api/schema.md +10 -0
  30. idfkit-0.1.0/docs/api/simulation/async.md +37 -0
  31. idfkit-0.1.0/docs/api/simulation/batch.md +43 -0
  32. idfkit-0.1.0/docs/api/simulation/cache.md +33 -0
  33. idfkit-0.1.0/docs/api/simulation/expand.md +89 -0
  34. idfkit-0.1.0/docs/api/simulation/fs.md +54 -0
  35. idfkit-0.1.0/docs/api/simulation/index.md +37 -0
  36. idfkit-0.1.0/docs/api/simulation/plotting.md +56 -0
  37. idfkit-0.1.0/docs/api/simulation/results.md +87 -0
  38. idfkit-0.1.0/docs/api/simulation/runner.md +29 -0
  39. idfkit-0.1.0/docs/api/simulation/sql.md +72 -0
  40. idfkit-0.1.0/docs/api/thermal.md +304 -0
  41. idfkit-0.1.0/docs/api/validation.md +6 -0
  42. idfkit-0.1.0/docs/api/versions.md +6 -0
  43. idfkit-0.1.0/docs/api/visualization.md +378 -0
  44. idfkit-0.1.0/docs/api/weather/designday.md +53 -0
  45. idfkit-0.1.0/docs/api/weather/download.md +23 -0
  46. idfkit-0.1.0/docs/api/weather/index.md +26 -0
  47. idfkit-0.1.0/docs/api/weather/station.md +72 -0
  48. idfkit-0.1.0/docs/assets/benchmark.svg +1722 -0
  49. idfkit-0.1.0/docs/assets/benchmark_add_objects.svg +1266 -0
  50. idfkit-0.1.0/docs/assets/benchmark_add_objects_dark.svg +1266 -0
  51. idfkit-0.1.0/docs/assets/benchmark_dark.svg +1722 -0
  52. idfkit-0.1.0/docs/assets/benchmark_get_by_name.svg +1543 -0
  53. idfkit-0.1.0/docs/assets/benchmark_get_by_name_dark.svg +1543 -0
  54. idfkit-0.1.0/docs/assets/benchmark_get_by_type.svg +1369 -0
  55. idfkit-0.1.0/docs/assets/benchmark_get_by_type_dark.svg +1369 -0
  56. idfkit-0.1.0/docs/assets/benchmark_load_idf.svg +1465 -0
  57. idfkit-0.1.0/docs/assets/benchmark_load_idf_dark.svg +1465 -0
  58. idfkit-0.1.0/docs/assets/benchmark_modify_fields.svg +1289 -0
  59. idfkit-0.1.0/docs/assets/benchmark_modify_fields_dark.svg +1289 -0
  60. idfkit-0.1.0/docs/assets/benchmark_write_idf.svg +1391 -0
  61. idfkit-0.1.0/docs/assets/benchmark_write_idf_dark.svg +1391 -0
  62. idfkit-0.1.0/docs/assets/construction-svg-example.svg +80 -0
  63. idfkit-0.1.0/docs/benchmarks.md +63 -0
  64. idfkit-0.1.0/docs/concepts/caching.md +151 -0
  65. idfkit-0.1.0/docs/concepts/cloud-storage.md +137 -0
  66. idfkit-0.1.0/docs/concepts/simulation-architecture.md +166 -0
  67. idfkit-0.1.0/docs/concepts/weather-pipeline.md +140 -0
  68. idfkit-0.1.0/docs/design/schedule-evaluator.md +306 -0
  69. idfkit-0.1.0/docs/examples/cloud-simulations.md +128 -0
  70. idfkit-0.1.0/docs/examples/parametric-study.ipynb +236 -0
  71. idfkit-0.1.0/docs/examples/sizing-workflow.ipynb +311 -0
  72. idfkit-0.1.0/docs/getting-started/core-tutorial.ipynb +1978 -0
  73. idfkit-0.1.0/docs/getting-started/installation.md +197 -0
  74. idfkit-0.1.0/docs/getting-started/quick-start.md +90 -0
  75. idfkit-0.1.0/docs/index.md +138 -0
  76. idfkit-0.1.0/docs/migration.md +262 -0
  77. idfkit-0.1.0/docs/overrides/.gitkeep +0 -0
  78. idfkit-0.1.0/docs/schedules/index.md +91 -0
  79. idfkit-0.1.0/docs/simulation/async.md +187 -0
  80. idfkit-0.1.0/docs/simulation/batch.md +145 -0
  81. idfkit-0.1.0/docs/simulation/caching.md +171 -0
  82. idfkit-0.1.0/docs/simulation/errors.md +182 -0
  83. idfkit-0.1.0/docs/simulation/index.md +109 -0
  84. idfkit-0.1.0/docs/simulation/output-discovery.md +162 -0
  85. idfkit-0.1.0/docs/simulation/plotting.md +149 -0
  86. idfkit-0.1.0/docs/simulation/progress.md +349 -0
  87. idfkit-0.1.0/docs/simulation/results.md +139 -0
  88. idfkit-0.1.0/docs/simulation/running.md +248 -0
  89. idfkit-0.1.0/docs/simulation/sql-queries.md +200 -0
  90. idfkit-0.1.0/docs/snippets/concepts/caching/cache_location.py +8 -0
  91. idfkit-0.1.0/docs/snippets/concepts/caching/cache_management.py +18 -0
  92. idfkit-0.1.0/docs/snippets/concepts/caching/disabling_caching.py +16 -0
  93. idfkit-0.1.0/docs/snippets/concepts/caching/parallel_safety.py +14 -0
  94. idfkit-0.1.0/docs/snippets/concepts/caching/simulation_cache.py +19 -0
  95. idfkit-0.1.0/docs/snippets/concepts/caching/weather_file_cache.py +8 -0
  96. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/1_local_preparation.py +24 -0
  97. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/2_cloud_execution.py +17 -0
  98. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/3_result_collection.py +17 -0
  99. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/authentication.py +15 -0
  100. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/implementing_custom_backends.py +29 -0
  101. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/key_prefixes.py +13 -0
  102. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/lazy_loading.py +15 -0
  103. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/local_caching.py +23 -0
  104. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/localfilesystem.py +13 -0
  105. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/s3_compatible_services.py +20 -0
  106. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/s3filesystem.py +18 -0
  107. idfkit-0.1.0/docs/snippets/concepts/cloud-storage/the_filesystem_protocol.py +20 -0
  108. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/concurrent_execution.py +18 -0
  109. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/energyplus_discovery.py +12 -0
  110. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/lazy_loading.py +16 -0
  111. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/model_immutability.py +13 -0
  112. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/sqlite_over_eso.py +15 -0
  113. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/streaming.py +11 -0
  114. idfkit-0.1.0/docs/snippets/concepts/simulation-architecture/subprocess_execution.py +13 -0
  115. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/ashrae_standards.py +21 -0
  116. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/bundled_index_no_dependencies.py +11 -0
  117. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/live_refresh_requires_openpyxl.py +10 -0
  118. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/spatial_search.py +14 -0
  119. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/spatial_search_2.py +13 -0
  120. idfkit-0.1.0/docs/snippets/concepts/weather-pipeline/wmo_numbers.py +13 -0
  121. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/1_holidays.py +29 -0
  122. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/2_design_days.py +32 -0
  123. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/4_schedulefile_support.py +28 -0
  124. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/4_schedulefile_support_2.py +28 -0
  125. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/4_schedulefile_support_3.py +23 -0
  126. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/batch_evaluation.py +33 -0
  127. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/convenience_on_idfdocument.py +28 -0
  128. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/core_function.py +36 -0
  129. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/error_handling.py +29 -0
  130. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/example_test.py +26 -0
  131. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/filesystem_integration.py +21 -0
  132. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/hierarchical_schedule_resolution.py +38 -0
  133. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/pandas_integration_optional.py +30 -0
  134. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/parsing_strategy.py +30 -0
  135. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/scheduledayhourly.py +18 -0
  136. idfkit-0.1.0/docs/snippets/design/schedule-evaluator/scheduledayinterval.py +31 -0
  137. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/basic_s3_usage.py +30 -0
  138. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/batch_downloads.py +24 -0
  139. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/batch_processing_with_s3.py +31 -0
  140. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/digitalocean_spaces.py +11 -0
  141. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/localstack.py +11 -0
  142. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/minimize_s3_round_trips.py +18 -0
  143. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/minio.py +12 -0
  144. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/step_1_create_jobs_locally.py +27 -0
  145. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/step_2_run_on_cloud_workers.py +25 -0
  146. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/step_3_collect_results.py +28 -0
  147. idfkit-0.1.0/docs/snippets/examples/cloud-simulations/weather_file_handling.py +30 -0
  148. idfkit-0.1.0/docs/snippets/getting-started/installation/verify_installation.py +12 -0
  149. idfkit-0.1.0/docs/snippets/getting-started/quick-start/apply_design_days.py +21 -0
  150. idfkit-0.1.0/docs/snippets/getting-started/quick-start/create_a_new_model.py +24 -0
  151. idfkit-0.1.0/docs/snippets/getting-started/quick-start/discover_available_fields.py +20 -0
  152. idfkit-0.1.0/docs/snippets/getting-started/quick-start/discover_available_fields_3.py +11 -0
  153. idfkit-0.1.0/docs/snippets/getting-started/quick-start/find_weather_stations.py +23 -0
  154. idfkit-0.1.0/docs/snippets/getting-started/quick-start/load_a_model.py +12 -0
  155. idfkit-0.1.0/docs/snippets/getting-started/quick-start/modify_fields.py +15 -0
  156. idfkit-0.1.0/docs/snippets/getting-started/quick-start/query_objects.py +16 -0
  157. idfkit-0.1.0/docs/snippets/getting-started/quick-start/query_results.py +25 -0
  158. idfkit-0.1.0/docs/snippets/getting-started/quick-start/run_a_simulation.py +24 -0
  159. idfkit-0.1.0/docs/snippets/getting-started/quick-start/write_output.py +17 -0
  160. idfkit-0.1.0/docs/snippets/index/find_weather_stations.py +14 -0
  161. idfkit-0.1.0/docs/snippets/index/quick_example.py +27 -0
  162. idfkit-0.1.0/docs/snippets/index/run_simulations.py +20 -0
  163. idfkit-0.1.0/docs/snippets/migration/accessing_fields.py +9 -0
  164. idfkit-0.1.0/docs/snippets/migration/accessing_fields_2.py +9 -0
  165. idfkit-0.1.0/docs/snippets/migration/batch_updates.py +10 -0
  166. idfkit-0.1.0/docs/snippets/migration/batch_updates_2.py +11 -0
  167. idfkit-0.1.0/docs/snippets/migration/building_transforms.py +17 -0
  168. idfkit-0.1.0/docs/snippets/migration/creating_objects.py +11 -0
  169. idfkit-0.1.0/docs/snippets/migration/creating_objects_2.py +8 -0
  170. idfkit-0.1.0/docs/snippets/migration/creating_objects_3.py +8 -0
  171. idfkit-0.1.0/docs/snippets/migration/finding_referring_objects.py +10 -0
  172. idfkit-0.1.0/docs/snippets/migration/finding_referring_objects_2.py +21 -0
  173. idfkit-0.1.0/docs/snippets/migration/following_references.py +10 -0
  174. idfkit-0.1.0/docs/snippets/migration/following_references_2.py +10 -0
  175. idfkit-0.1.0/docs/snippets/migration/geometry.py +26 -0
  176. idfkit-0.1.0/docs/snippets/migration/html_tabular_output.py +12 -0
  177. idfkit-0.1.0/docs/snippets/migration/html_tabular_output_2.py +26 -0
  178. idfkit-0.1.0/docs/snippets/migration/html_tabular_output_3.py +7 -0
  179. idfkit-0.1.0/docs/snippets/migration/loading_a_file.py +8 -0
  180. idfkit-0.1.0/docs/snippets/migration/loading_a_file_2.py +7 -0
  181. idfkit-0.1.0/docs/snippets/migration/loading_a_file_3.py +7 -0
  182. idfkit-0.1.0/docs/snippets/migration/output_formatting_modes.py +9 -0
  183. idfkit-0.1.0/docs/snippets/migration/output_formatting_modes_2.py +12 -0
  184. idfkit-0.1.0/docs/snippets/migration/range_checking.py +11 -0
  185. idfkit-0.1.0/docs/snippets/migration/range_checking_2.py +11 -0
  186. idfkit-0.1.0/docs/snippets/migration/reference_tracking_new_in_idfkit.py +15 -0
  187. idfkit-0.1.0/docs/snippets/migration/removing_objects_by_index.py +8 -0
  188. idfkit-0.1.0/docs/snippets/migration/removing_objects_by_index_2.py +8 -0
  189. idfkit-0.1.0/docs/snippets/migration/renaming_with_cascading_updates_new_in_idfkit.py +11 -0
  190. idfkit-0.1.0/docs/snippets/migration/saving_files.py +10 -0
  191. idfkit-0.1.0/docs/snippets/migration/saving_files_2.py +10 -0
  192. idfkit-0.1.0/docs/snippets/migration/saving_files_3.py +11 -0
  193. idfkit-0.1.0/docs/snippets/migration/validation_new_in_idfkit.py +15 -0
  194. idfkit-0.1.0/docs/snippets/schedules/index/design_day_evaluation.py +26 -0
  195. idfkit-0.1.0/docs/snippets/schedules/index/example_analyze_office_occupancy.py +30 -0
  196. idfkit-0.1.0/docs/snippets/schedules/index/holiday_support.py +18 -0
  197. idfkit-0.1.0/docs/snippets/schedules/index/interpolation.py +14 -0
  198. idfkit-0.1.0/docs/snippets/schedules/index/pandas_integration.py +16 -0
  199. idfkit-0.1.0/docs/snippets/schedules/index/quick_start.py +25 -0
  200. idfkit-0.1.0/docs/snippets/schedules/index/schedulefile_with_remote_storage.py +19 -0
  201. idfkit-0.1.0/docs/snippets/schedules/index/sub_hourly_timesteps.py +16 -0
  202. idfkit-0.1.0/docs/snippets/simulation/async/async_batch_processing.py +30 -0
  203. idfkit-0.1.0/docs/snippets/simulation/async/basic_usage.py +23 -0
  204. idfkit-0.1.0/docs/snippets/simulation/async/cancellation.py +20 -0
  205. idfkit-0.1.0/docs/snippets/simulation/async/collecting_streaming_results.py +37 -0
  206. idfkit-0.1.0/docs/snippets/simulation/async/early_termination.py +11 -0
  207. idfkit-0.1.0/docs/snippets/simulation/async/fastapi_integration.py +29 -0
  208. idfkit-0.1.0/docs/snippets/simulation/async/parametric_study.py +47 -0
  209. idfkit-0.1.0/docs/snippets/simulation/async/running_simulations_alongside_other_async_work.py +32 -0
  210. idfkit-0.1.0/docs/snippets/simulation/async/streaming_progress.py +25 -0
  211. idfkit-0.1.0/docs/snippets/simulation/batch/basic_usage.py +26 -0
  212. idfkit-0.1.0/docs/snippets/simulation/batch/batchresult.py +22 -0
  213. idfkit-0.1.0/docs/snippets/simulation/batch/caching.py +17 -0
  214. idfkit-0.1.0/docs/snippets/simulation/batch/cloud_storage.py +27 -0
  215. idfkit-0.1.0/docs/snippets/simulation/batch/error_handling.py +18 -0
  216. idfkit-0.1.0/docs/snippets/simulation/batch/parametric_studies.py +41 -0
  217. idfkit-0.1.0/docs/snippets/simulation/batch/progress_callbacks.py +15 -0
  218. idfkit-0.1.0/docs/snippets/simulation/batch/rich_progress_bar.py +16 -0
  219. idfkit-0.1.0/docs/snippets/simulation/batch/simulationjob.py +18 -0
  220. idfkit-0.1.0/docs/snippets/simulation/batch/worker_count.py +15 -0
  221. idfkit-0.1.0/docs/snippets/simulation/caching/basic_usage.py +22 -0
  222. idfkit-0.1.0/docs/snippets/simulation/caching/batch_processing.py +17 -0
  223. idfkit-0.1.0/docs/snippets/simulation/caching/cache_key_computation.py +17 -0
  224. idfkit-0.1.0/docs/snippets/simulation/caching/check_for_hit.py +17 -0
  225. idfkit-0.1.0/docs/snippets/simulation/caching/cleanup.py +14 -0
  226. idfkit-0.1.0/docs/snippets/simulation/caching/clear_cache.py +9 -0
  227. idfkit-0.1.0/docs/snippets/simulation/caching/custom_location.py +9 -0
  228. idfkit-0.1.0/docs/snippets/simulation/caching/disabling_caching.py +14 -0
  229. idfkit-0.1.0/docs/snippets/simulation/caching/manual_getput.py +26 -0
  230. idfkit-0.1.0/docs/snippets/simulation/caching/thread_and_process_safety.py +10 -0
  231. idfkit-0.1.0/docs/snippets/simulation/errors/1_check_the_error_report_first.py +12 -0
  232. idfkit-0.1.0/docs/snippets/simulation/errors/2_examine_raw_output.py +12 -0
  233. idfkit-0.1.0/docs/snippets/simulation/errors/3_run_design_day_first.py +15 -0
  234. idfkit-0.1.0/docs/snippets/simulation/errors/4_validate_before_simulation.py +14 -0
  235. idfkit-0.1.0/docs/snippets/simulation/errors/batch_error_handling.py +23 -0
  236. idfkit-0.1.0/docs/snippets/simulation/errors/by_severity.py +21 -0
  237. idfkit-0.1.0/docs/snippets/simulation/errors/error_counts.py +10 -0
  238. idfkit-0.1.0/docs/snippets/simulation/errors/error_report.py +25 -0
  239. idfkit-0.1.0/docs/snippets/simulation/errors/error_report_from_file.py +11 -0
  240. idfkit-0.1.0/docs/snippets/simulation/errors/error_report_from_file_2.py +9 -0
  241. idfkit-0.1.0/docs/snippets/simulation/errors/non_exception_failures.py +19 -0
  242. idfkit-0.1.0/docs/snippets/simulation/errors/simulation_exceptions.py +17 -0
  243. idfkit-0.1.0/docs/snippets/simulation/errors/summary.py +10 -0
  244. idfkit-0.1.0/docs/snippets/simulation/errors/timeout_handling.py +16 -0
  245. idfkit-0.1.0/docs/snippets/simulation/index/lazy_loading.py +13 -0
  246. idfkit-0.1.0/docs/snippets/simulation/index/model_safety.py +11 -0
  247. idfkit-0.1.0/docs/snippets/simulation/index/parallel_execution.py +14 -0
  248. idfkit-0.1.0/docs/snippets/simulation/index/quick_start.py +27 -0
  249. idfkit-0.1.0/docs/snippets/simulation/index/requirements.py +11 -0
  250. idfkit-0.1.0/docs/snippets/simulation/output-discovery/add_all_matching.py +15 -0
  251. idfkit-0.1.0/docs/snippets/simulation/output-discovery/basic_usage.py +21 -0
  252. idfkit-0.1.0/docs/snippets/simulation/output-discovery/creating_an_index.py +8 -0
  253. idfkit-0.1.0/docs/snippets/simulation/output-discovery/creating_an_index_2.py +10 -0
  254. idfkit-0.1.0/docs/snippets/simulation/output-discovery/filter_by_units.py +12 -0
  255. idfkit-0.1.0/docs/snippets/simulation/output-discovery/list_all_variables.py +14 -0
  256. idfkit-0.1.0/docs/snippets/simulation/output-discovery/reporting_frequencies.py +14 -0
  257. idfkit-0.1.0/docs/snippets/simulation/output-discovery/search_variables.py +15 -0
  258. idfkit-0.1.0/docs/snippets/simulation/output-discovery/selective_addition.py +23 -0
  259. idfkit-0.1.0/docs/snippets/simulation/output-discovery/workflow_discover_then_request.py +38 -0
  260. idfkit-0.1.0/docs/snippets/simulation/plotting/auto_detection.py +8 -0
  261. idfkit-0.1.0/docs/snippets/simulation/plotting/basic_usage.py +22 -0
  262. idfkit-0.1.0/docs/snippets/simulation/plotting/basic_usage_2.py +23 -0
  263. idfkit-0.1.0/docs/snippets/simulation/plotting/comfort_hours.py +14 -0
  264. idfkit-0.1.0/docs/snippets/simulation/plotting/customization.py +26 -0
  265. idfkit-0.1.0/docs/snippets/simulation/plotting/customization_2.py +34 -0
  266. idfkit-0.1.0/docs/snippets/simulation/plotting/dataframe_integration.py +17 -0
  267. idfkit-0.1.0/docs/snippets/simulation/plotting/different_variables.py +23 -0
  268. idfkit-0.1.0/docs/snippets/simulation/plotting/energy_balance.py +13 -0
  269. idfkit-0.1.0/docs/snippets/simulation/plotting/explicit_backend.py +14 -0
  270. idfkit-0.1.0/docs/snippets/simulation/plotting/matplotlib.py +10 -0
  271. idfkit-0.1.0/docs/snippets/simulation/plotting/plotbackend_protocol.py +34 -0
  272. idfkit-0.1.0/docs/snippets/simulation/plotting/plotly.py +10 -0
  273. idfkit-0.1.0/docs/snippets/simulation/plotting/quick_start.py +21 -0
  274. idfkit-0.1.0/docs/snippets/simulation/plotting/same_variable_multiple_keys.py +21 -0
  275. idfkit-0.1.0/docs/snippets/simulation/plotting/temperature_profile.py +14 -0
  276. idfkit-0.1.0/docs/snippets/simulation/plotting/time_series_plotting.py +23 -0
  277. idfkit-0.1.0/docs/snippets/simulation/progress/async_batch_with_stream_progress.py +37 -0
  278. idfkit-0.1.0/docs/snippets/simulation/progress/async_callbacks.py +25 -0
  279. idfkit-0.1.0/docs/snippets/simulation/progress/batch_progress_bar_with_tqdm.py +41 -0
  280. idfkit-0.1.0/docs/snippets/simulation/progress/cloud_execution.py +26 -0
  281. idfkit-0.1.0/docs/snippets/simulation/progress/cloud_execution_2.py +16 -0
  282. idfkit-0.1.0/docs/snippets/simulation/progress/cloud_logging_aws_cloudwatch_gcp_cloud_logging.py +22 -0
  283. idfkit-0.1.0/docs/snippets/simulation/progress/cloud_logging_aws_cloudwatch_gcp_cloud_logging_2.py +25 -0
  284. idfkit-0.1.0/docs/snippets/simulation/progress/customising_the_tqdm_bar.py +17 -0
  285. idfkit-0.1.0/docs/snippets/simulation/progress/dual_progress_tracking.py +33 -0
  286. idfkit-0.1.0/docs/snippets/simulation/progress/fastapi_websocket.py +47 -0
  287. idfkit-0.1.0/docs/snippets/simulation/progress/jupyter_ipywidgets.py +25 -0
  288. idfkit-0.1.0/docs/snippets/simulation/progress/one_liner.py +9 -0
  289. idfkit-0.1.0/docs/snippets/simulation/progress/quick_start.py +12 -0
  290. idfkit-0.1.0/docs/snippets/simulation/progress/quick_start_2.py +18 -0
  291. idfkit-0.1.0/docs/snippets/simulation/progress/rich_console.py +26 -0
  292. idfkit-0.1.0/docs/snippets/simulation/progress/rich_console_2.py +29 -0
  293. idfkit-0.1.0/docs/snippets/simulation/progress/server_sent_events_sse.py +49 -0
  294. idfkit-0.1.0/docs/snippets/simulation/progress/simple_console_log.py +22 -0
  295. idfkit-0.1.0/docs/snippets/simulation/progress/structured_logging.py +26 -0
  296. idfkit-0.1.0/docs/snippets/simulation/progress/using_progressparser_directly.py +14 -0
  297. idfkit-0.1.0/docs/snippets/simulation/progress/websocket_forwarding.py +41 -0
  298. idfkit-0.1.0/docs/snippets/simulation/results/csv_output.py +16 -0
  299. idfkit-0.1.0/docs/snippets/simulation/results/error_report.py +31 -0
  300. idfkit-0.1.0/docs/snippets/simulation/results/html_tabular_output.py +32 -0
  301. idfkit-0.1.0/docs/snippets/simulation/results/html_tabular_output_2.py +9 -0
  302. idfkit-0.1.0/docs/snippets/simulation/results/lazy_loading.py +18 -0
  303. idfkit-0.1.0/docs/snippets/simulation/results/output_file_paths.py +14 -0
  304. idfkit-0.1.0/docs/snippets/simulation/results/output_variables.py +19 -0
  305. idfkit-0.1.0/docs/snippets/simulation/results/reconstructing_from_directory.py +21 -0
  306. idfkit-0.1.0/docs/snippets/simulation/results/simulationresult_overview.py +26 -0
  307. idfkit-0.1.0/docs/snippets/simulation/results/sql_database.py +20 -0
  308. idfkit-0.1.0/docs/snippets/simulation/running/annual_simulation.py +10 -0
  309. idfkit-0.1.0/docs/snippets/simulation/running/automatic_temporary_directory.py +12 -0
  310. idfkit-0.1.0/docs/snippets/simulation/running/basic_usage.py +18 -0
  311. idfkit-0.1.0/docs/snippets/simulation/running/caching.py +19 -0
  312. idfkit-0.1.0/docs/snippets/simulation/running/checking_success.py +17 -0
  313. idfkit-0.1.0/docs/snippets/simulation/running/cloud_storage.py +19 -0
  314. idfkit-0.1.0/docs/snippets/simulation/running/default_mode.py +10 -0
  315. idfkit-0.1.0/docs/snippets/simulation/running/design_day_only.py +10 -0
  316. idfkit-0.1.0/docs/snippets/simulation/running/energyplus_discovery.py +22 -0
  317. idfkit-0.1.0/docs/snippets/simulation/running/expanding_hvac_templates.py +11 -0
  318. idfkit-0.1.0/docs/snippets/simulation/running/explicit_directory.py +10 -0
  319. idfkit-0.1.0/docs/snippets/simulation/running/extra_arguments.py +14 -0
  320. idfkit-0.1.0/docs/snippets/simulation/running/ground_heat_transfer_slab_basement.py +14 -0
  321. idfkit-0.1.0/docs/snippets/simulation/running/model_safety.py +17 -0
  322. idfkit-0.1.0/docs/snippets/simulation/running/output_suffix_modes.py +10 -0
  323. idfkit-0.1.0/docs/snippets/simulation/running/simulation_errors.py +17 -0
  324. idfkit-0.1.0/docs/snippets/simulation/running/timeout.py +14 -0
  325. idfkit-0.1.0/docs/snippets/simulation/sql-queries/basic_query.py +19 -0
  326. idfkit-0.1.0/docs/snippets/simulation/sql-queries/context_manager.py +10 -0
  327. idfkit-0.1.0/docs/snippets/simulation/sql-queries/converting_to_dataframe.py +14 -0
  328. idfkit-0.1.0/docs/snippets/simulation/sql-queries/energyplus_time_convention.py +16 -0
  329. idfkit-0.1.0/docs/snippets/simulation/sql-queries/error_handling.py +18 -0
  330. idfkit-0.1.0/docs/snippets/simulation/sql-queries/filter_by_table.py +11 -0
  331. idfkit-0.1.0/docs/snippets/simulation/sql-queries/filtering_by_environment.py +27 -0
  332. idfkit-0.1.0/docs/snippets/simulation/sql-queries/list_available_variables.py +12 -0
  333. idfkit-0.1.0/docs/snippets/simulation/sql-queries/list_environments.py +11 -0
  334. idfkit-0.1.0/docs/snippets/simulation/sql-queries/opening_the_database_2.py +7 -0
  335. idfkit-0.1.0/docs/snippets/simulation/sql-queries/plotting_time_series.py +8 -0
  336. idfkit-0.1.0/docs/snippets/simulation/sql-queries/query_tabular_reports.py +11 -0
  337. idfkit-0.1.0/docs/snippets/simulation/sql-queries/search_variables.py +12 -0
  338. idfkit-0.1.0/docs/snippets/weather/design-days/all_design_days.py +16 -0
  339. idfkit-0.1.0/docs/snippets/weather/design-days/ashrae_621_ventilation.py +14 -0
  340. idfkit-0.1.0/docs/snippets/weather/design-days/ashrae_901_energy_standard.py +18 -0
  341. idfkit-0.1.0/docs/snippets/weather/design-days/basic_application.py +14 -0
  342. idfkit-0.1.0/docs/snippets/weather/design-days/basic_usage.py +25 -0
  343. idfkit-0.1.0/docs/snippets/weather/design-days/by_type.py +22 -0
  344. idfkit-0.1.0/docs/snippets/weather/design-days/complete_workflow.py +48 -0
  345. idfkit-0.1.0/docs/snippets/weather/design-days/error_handling.py +16 -0
  346. idfkit-0.1.0/docs/snippets/weather/design-days/location_object.py +16 -0
  347. idfkit-0.1.0/docs/snippets/weather/design-days/quick_apply.py +17 -0
  348. idfkit-0.1.0/docs/snippets/weather/design-days/skip_site_location_update.py +15 -0
  349. idfkit-0.1.0/docs/snippets/weather/design-days/summary_output.py +9 -0
  350. idfkit-0.1.0/docs/snippets/weather/design-days/with_wet_bulb_design_day.py +15 -0
  351. idfkit-0.1.0/docs/snippets/weather/downloads/basic_usage.py +22 -0
  352. idfkit-0.1.0/docs/snippets/weather/downloads/batch_downloads.py +25 -0
  353. idfkit-0.1.0/docs/snippets/weather/downloads/caching.py +15 -0
  354. idfkit-0.1.0/docs/snippets/weather/downloads/clear_cache.py +10 -0
  355. idfkit-0.1.0/docs/snippets/weather/downloads/custom_cache_directory.py +9 -0
  356. idfkit-0.1.0/docs/snippets/weather/downloads/error_handling.py +16 -0
  357. idfkit-0.1.0/docs/snippets/weather/downloads/integration_example.py +45 -0
  358. idfkit-0.1.0/docs/snippets/weather/downloads/offline_usage.py +17 -0
  359. idfkit-0.1.0/docs/snippets/weather/downloads/weatherfiles.py +22 -0
  360. idfkit-0.1.0/docs/snippets/weather/geocoding/address_formats.py +17 -0
  361. idfkit-0.1.0/docs/snippets/weather/geocoding/alternative_direct_coordinates.py +9 -0
  362. idfkit-0.1.0/docs/snippets/weather/geocoding/basic_usage.py +11 -0
  363. idfkit-0.1.0/docs/snippets/weather/geocoding/caching_results.py +17 -0
  364. idfkit-0.1.0/docs/snippets/weather/geocoding/complete_workflow.py +49 -0
  365. idfkit-0.1.0/docs/snippets/weather/geocoding/error_handling.py +10 -0
  366. idfkit-0.1.0/docs/snippets/weather/geocoding/rate_limiting.py +13 -0
  367. idfkit-0.1.0/docs/snippets/weather/geocoding/with_station_search.py +20 -0
  368. idfkit-0.1.0/docs/snippets/weather/index/address_based_search.py +16 -0
  369. idfkit-0.1.0/docs/snippets/weather/index/ashrae_design_days.py +15 -0
  370. idfkit-0.1.0/docs/snippets/weather/index/installation.py +7 -0
  371. idfkit-0.1.0/docs/snippets/weather/index/installation_2.py +9 -0
  372. idfkit-0.1.0/docs/snippets/weather/index/quick_start.py +28 -0
  373. idfkit-0.1.0/docs/snippets/weather/index/workflow_example.py +48 -0
  374. idfkit-0.1.0/docs/snippets/weather/station-search/filter_by_coordinates.py +14 -0
  375. idfkit-0.1.0/docs/snippets/weather/station-search/filter_by_country.py +13 -0
  376. idfkit-0.1.0/docs/snippets/weather/station-search/get_by_wmo_number.py +15 -0
  377. idfkit-0.1.0/docs/snippets/weather/station-search/listing_countries.py +13 -0
  378. idfkit-0.1.0/docs/snippets/weather/station-search/loading_the_index.py +14 -0
  379. idfkit-0.1.0/docs/snippets/weather/station-search/refreshing_the_index.py +13 -0
  380. idfkit-0.1.0/docs/snippets/weather/station-search/search_by_address.py +19 -0
  381. idfkit-0.1.0/docs/snippets/weather/station-search/search_by_coordinates.py +14 -0
  382. idfkit-0.1.0/docs/snippets/weather/station-search/search_by_name.py +14 -0
  383. idfkit-0.1.0/docs/snippets/weather/station-search/search_tips.py +18 -0
  384. idfkit-0.1.0/docs/stylesheets/extra.css +138 -0
  385. idfkit-0.1.0/docs/troubleshooting/energyplus.md +279 -0
  386. idfkit-0.1.0/docs/troubleshooting/errors.md +253 -0
  387. idfkit-0.1.0/docs/weather/design-days.md +168 -0
  388. idfkit-0.1.0/docs/weather/downloads.md +122 -0
  389. idfkit-0.1.0/docs/weather/geocoding.md +91 -0
  390. idfkit-0.1.0/docs/weather/index.md +93 -0
  391. idfkit-0.1.0/docs/weather/station-search.md +147 -0
  392. idfkit-0.1.0/mkdocs.yml +199 -0
  393. idfkit-0.1.0/pyproject.toml +200 -0
  394. idfkit-0.1.0/scripts/build_weather_index.py +60 -0
  395. idfkit-0.1.0/src/idfkit/__init__.py +241 -0
  396. idfkit-0.1.0/src/idfkit/document.py +1105 -0
  397. idfkit-0.1.0/src/idfkit/download.py +172 -0
  398. idfkit-0.1.0/src/idfkit/epjson_parser.py +280 -0
  399. idfkit-0.1.0/src/idfkit/exceptions.py +222 -0
  400. idfkit-0.1.0/src/idfkit/geometry.py +972 -0
  401. idfkit-0.1.0/src/idfkit/idf_parser.py +448 -0
  402. idfkit-0.1.0/src/idfkit/introspection.py +277 -0
  403. idfkit-0.1.0/src/idfkit/objects.py +825 -0
  404. idfkit-0.1.0/src/idfkit/py.typed +0 -0
  405. idfkit-0.1.0/src/idfkit/references.py +294 -0
  406. idfkit-0.1.0/src/idfkit/schedules/__init__.py +121 -0
  407. idfkit-0.1.0/src/idfkit/schedules/compact.py +354 -0
  408. idfkit-0.1.0/src/idfkit/schedules/day.py +258 -0
  409. idfkit-0.1.0/src/idfkit/schedules/day_types.py +117 -0
  410. idfkit-0.1.0/src/idfkit/schedules/evaluate.py +343 -0
  411. idfkit-0.1.0/src/idfkit/schedules/file.py +268 -0
  412. idfkit-0.1.0/src/idfkit/schedules/holidays.py +292 -0
  413. idfkit-0.1.0/src/idfkit/schedules/series.py +282 -0
  414. idfkit-0.1.0/src/idfkit/schedules/time_utils.py +86 -0
  415. idfkit-0.1.0/src/idfkit/schedules/types.py +210 -0
  416. idfkit-0.1.0/src/idfkit/schedules/week.py +324 -0
  417. idfkit-0.1.0/src/idfkit/schedules/year.py +210 -0
  418. idfkit-0.1.0/src/idfkit/schema.py +627 -0
  419. idfkit-0.1.0/src/idfkit/schemas/V22-1-0/Energy+.schema.epJSON.gz +0 -0
  420. idfkit-0.1.0/src/idfkit/schemas/V22-2-0/Energy+.schema.epJSON.gz +0 -0
  421. idfkit-0.1.0/src/idfkit/schemas/V23-1-0/Energy+.schema.epJSON.gz +0 -0
  422. idfkit-0.1.0/src/idfkit/schemas/V23-2-0/Energy+.schema.epJSON.gz +0 -0
  423. idfkit-0.1.0/src/idfkit/schemas/V24-1-0/Energy+.schema.epJSON.gz +0 -0
  424. idfkit-0.1.0/src/idfkit/schemas/V24-2-0/Energy+.schema.epJSON.gz +0 -0
  425. idfkit-0.1.0/src/idfkit/schemas/V25-1-0/Energy+.schema.epJSON.gz +0 -0
  426. idfkit-0.1.0/src/idfkit/schemas/V25-2-0/Energy+.schema.epJSON.gz +0 -0
  427. idfkit-0.1.0/src/idfkit/schemas/V8-9-0/Energy+.schema.epJSON.gz +0 -0
  428. idfkit-0.1.0/src/idfkit/schemas/V9-0-1/Energy+.schema.epJSON.gz +0 -0
  429. idfkit-0.1.0/src/idfkit/schemas/V9-1-0/Energy+.schema.epJSON.gz +0 -0
  430. idfkit-0.1.0/src/idfkit/schemas/V9-2-0/Energy+.schema.epJSON.gz +0 -0
  431. idfkit-0.1.0/src/idfkit/schemas/V9-3-0/Energy+.schema.epJSON.gz +0 -0
  432. idfkit-0.1.0/src/idfkit/schemas/V9-4-0/Energy+.schema.epJSON.gz +0 -0
  433. idfkit-0.1.0/src/idfkit/schemas/V9-5-0/Energy+.schema.epJSON.gz +0 -0
  434. idfkit-0.1.0/src/idfkit/schemas/V9-6-0/Energy+.schema.epJSON.gz +0 -0
  435. idfkit-0.1.0/src/idfkit/simulation/__init__.py +112 -0
  436. idfkit-0.1.0/src/idfkit/simulation/_common.py +185 -0
  437. idfkit-0.1.0/src/idfkit/simulation/async_batch.py +359 -0
  438. idfkit-0.1.0/src/idfkit/simulation/async_runner.py +393 -0
  439. idfkit-0.1.0/src/idfkit/simulation/batch.py +272 -0
  440. idfkit-0.1.0/src/idfkit/simulation/cache.py +208 -0
  441. idfkit-0.1.0/src/idfkit/simulation/config.py +345 -0
  442. idfkit-0.1.0/src/idfkit/simulation/expand.py +645 -0
  443. idfkit-0.1.0/src/idfkit/simulation/fs.py +321 -0
  444. idfkit-0.1.0/src/idfkit/simulation/outputs.py +161 -0
  445. idfkit-0.1.0/src/idfkit/simulation/parsers/__init__.py +3 -0
  446. idfkit-0.1.0/src/idfkit/simulation/parsers/csv.py +143 -0
  447. idfkit-0.1.0/src/idfkit/simulation/parsers/err.py +261 -0
  448. idfkit-0.1.0/src/idfkit/simulation/parsers/html.py +263 -0
  449. idfkit-0.1.0/src/idfkit/simulation/parsers/rdd.py +141 -0
  450. idfkit-0.1.0/src/idfkit/simulation/parsers/sql.py +466 -0
  451. idfkit-0.1.0/src/idfkit/simulation/plotting/__init__.py +192 -0
  452. idfkit-0.1.0/src/idfkit/simulation/plotting/matplotlib.py +225 -0
  453. idfkit-0.1.0/src/idfkit/simulation/plotting/plotly.py +201 -0
  454. idfkit-0.1.0/src/idfkit/simulation/plotting/visualizations.py +187 -0
  455. idfkit-0.1.0/src/idfkit/simulation/progress.py +247 -0
  456. idfkit-0.1.0/src/idfkit/simulation/progress_bars.py +141 -0
  457. idfkit-0.1.0/src/idfkit/simulation/result.py +287 -0
  458. idfkit-0.1.0/src/idfkit/simulation/runner.py +335 -0
  459. idfkit-0.1.0/src/idfkit/thermal/__init__.py +60 -0
  460. idfkit-0.1.0/src/idfkit/thermal/gas.py +315 -0
  461. idfkit-0.1.0/src/idfkit/thermal/properties.py +480 -0
  462. idfkit-0.1.0/src/idfkit/validation.py +509 -0
  463. idfkit-0.1.0/src/idfkit/versions.py +121 -0
  464. idfkit-0.1.0/src/idfkit/visualization/__init__.py +38 -0
  465. idfkit-0.1.0/src/idfkit/visualization/model.py +900 -0
  466. idfkit-0.1.0/src/idfkit/visualization/svg.py +745 -0
  467. idfkit-0.1.0/src/idfkit/weather/__init__.py +108 -0
  468. idfkit-0.1.0/src/idfkit/weather/data/stations.json.gz +0 -0
  469. idfkit-0.1.0/src/idfkit/weather/designday.py +442 -0
  470. idfkit-0.1.0/src/idfkit/weather/download.py +182 -0
  471. idfkit-0.1.0/src/idfkit/weather/geocode.py +109 -0
  472. idfkit-0.1.0/src/idfkit/weather/index.py +505 -0
  473. idfkit-0.1.0/src/idfkit/weather/spatial.py +33 -0
  474. idfkit-0.1.0/src/idfkit/weather/station.py +125 -0
  475. idfkit-0.1.0/src/idfkit/writers.py +426 -0
  476. idfkit-0.1.0/tests/conftest.py +240 -0
  477. idfkit-0.1.0/tests/fixtures/simulation/sample.csv +4 -0
  478. idfkit-0.1.0/tests/fixtures/simulation/sample.err +12 -0
  479. idfkit-0.1.0/tests/fixtures/simulation/sample.mdd +7 -0
  480. idfkit-0.1.0/tests/fixtures/simulation/sample.rdd +9 -0
  481. idfkit-0.1.0/tests/fixtures/simulation/sample_fatal.err +8 -0
  482. idfkit-0.1.0/tests/fixtures/weather/empty.ddy +10 -0
  483. idfkit-0.1.0/tests/fixtures/weather/sample.ddy +332 -0
  484. idfkit-0.1.0/tests/schedules/__init__.py +1 -0
  485. idfkit-0.1.0/tests/schedules/test_compact.py +418 -0
  486. idfkit-0.1.0/tests/schedules/test_day.py +320 -0
  487. idfkit-0.1.0/tests/schedules/test_day_types.py +201 -0
  488. idfkit-0.1.0/tests/schedules/test_evaluate.py +294 -0
  489. idfkit-0.1.0/tests/schedules/test_file.py +311 -0
  490. idfkit-0.1.0/tests/schedules/test_holidays.py +283 -0
  491. idfkit-0.1.0/tests/schedules/test_series.py +242 -0
  492. idfkit-0.1.0/tests/schedules/test_time_utils.py +97 -0
  493. idfkit-0.1.0/tests/schedules/test_types.py +216 -0
  494. idfkit-0.1.0/tests/schedules/test_week.py +676 -0
  495. idfkit-0.1.0/tests/schedules/test_year.py +536 -0
  496. idfkit-0.1.0/tests/test_basic.py +102 -0
  497. idfkit-0.1.0/tests/test_document.py +516 -0
  498. idfkit-0.1.0/tests/test_epjson_roundtrip.py +494 -0
  499. idfkit-0.1.0/tests/test_eppy_compat.py +768 -0
  500. idfkit-0.1.0/tests/test_exceptions.py +183 -0
  501. idfkit-0.1.0/tests/test_expand.py +1150 -0
  502. idfkit-0.1.0/tests/test_geometry.py +404 -0
  503. idfkit-0.1.0/tests/test_idf_roundtrip.py +401 -0
  504. idfkit-0.1.0/tests/test_introspection.py +173 -0
  505. idfkit-0.1.0/tests/test_objects.py +434 -0
  506. idfkit-0.1.0/tests/test_parsers.py +336 -0
  507. idfkit-0.1.0/tests/test_references.py +233 -0
  508. idfkit-0.1.0/tests/test_schema.py +221 -0
  509. idfkit-0.1.0/tests/test_simulation_async.py +394 -0
  510. idfkit-0.1.0/tests/test_simulation_batch.py +263 -0
  511. idfkit-0.1.0/tests/test_simulation_cache.py +339 -0
  512. idfkit-0.1.0/tests/test_simulation_config.py +189 -0
  513. idfkit-0.1.0/tests/test_simulation_csv_parser.py +110 -0
  514. idfkit-0.1.0/tests/test_simulation_e2e.py +233 -0
  515. idfkit-0.1.0/tests/test_simulation_err_parser.py +122 -0
  516. idfkit-0.1.0/tests/test_simulation_fs.py +196 -0
  517. idfkit-0.1.0/tests/test_simulation_outputs.py +170 -0
  518. idfkit-0.1.0/tests/test_simulation_plotting.py +506 -0
  519. idfkit-0.1.0/tests/test_simulation_progress.py +765 -0
  520. idfkit-0.1.0/tests/test_simulation_progress_bars.py +316 -0
  521. idfkit-0.1.0/tests/test_simulation_rdd_parser.py +113 -0
  522. idfkit-0.1.0/tests/test_simulation_result.py +278 -0
  523. idfkit-0.1.0/tests/test_simulation_runner.py +407 -0
  524. idfkit-0.1.0/tests/test_simulation_sql_parser.py +450 -0
  525. idfkit-0.1.0/tests/test_thermal.py +530 -0
  526. idfkit-0.1.0/tests/test_validation.py +160 -0
  527. idfkit-0.1.0/tests/test_versions.py +327 -0
  528. idfkit-0.1.0/tests/test_visualization.py +414 -0
  529. idfkit-0.1.0/tests/test_visualization_model.py +532 -0
  530. idfkit-0.1.0/tests/test_weather_designday.py +278 -0
  531. idfkit-0.1.0/tests/test_weather_download.py +206 -0
  532. idfkit-0.1.0/tests/test_weather_geocode.py +120 -0
  533. idfkit-0.1.0/tests/test_weather_index.py +308 -0
  534. idfkit-0.1.0/tests/test_weather_spatial.py +37 -0
  535. idfkit-0.1.0/tests/test_weather_station.py +109 -0
  536. idfkit-0.1.0/tests/test_writers.py +258 -0
  537. idfkit-0.1.0/tox.ini +19 -0
  538. idfkit-0.1.0/uv.lock +3597 -0
@@ -0,0 +1,25 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
+ // README at: https://github.com/devcontainers/templates/tree/main/src/python
3
+ {
4
+ "name": "idfkit",
5
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
+ "image": "mcr.microsoft.com/devcontainers/python:3.12",
7
+ "features": {},
8
+
9
+ // Use 'postCreateCommand' to run commands after the container is created.
10
+ "postCreateCommand": "./.devcontainer/postCreateCommand.sh",
11
+
12
+ // Configure tool-specific properties.
13
+ "customizations": {
14
+ "vscode": {
15
+ "extensions": ["ms-python.python", "editorconfig.editorconfig"],
16
+ "settings": {
17
+ "python.testing.pytestArgs": ["tests"],
18
+ "python.testing.unittestEnabled": false,
19
+ "python.testing.pytestEnabled": true,
20
+ "python.defaultInterpreterPath": "/workspaces/idfkit/.venv/bin/python",
21
+ "python.testing.pytestPath": "/workspaces/idfkit/.venv/bin/pytest"
22
+ }
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ # Install uv
4
+ curl -LsSf https://astral.sh/uv/install.sh | sh
5
+
6
+ # Install Dependencies
7
+ uv sync
8
+
9
+ # Initialize git repo if not already one (needed for pre-commit)
10
+ if [ ! -d ".git" ]; then
11
+ git init
12
+ fi
13
+
14
+ # Install pre-commit hooks
15
+ uv run pre-commit install --install-hooks
@@ -0,0 +1,31 @@
1
+ name: "Setup Python Environment"
2
+ description: "Set up Python environment for the given Python version"
3
+
4
+ inputs:
5
+ python-version:
6
+ description: "Python version to use"
7
+ required: true
8
+ default: "3.10"
9
+ uv-version:
10
+ description: "uv version to use"
11
+ required: true
12
+ default: "0.9"
13
+
14
+ runs:
15
+ using: "composite"
16
+ steps:
17
+ - uses: actions/setup-python@v5
18
+ with:
19
+ python-version: ${{ inputs.python-version }}
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v7
23
+ with:
24
+ version: ${{ inputs.uv-version }}
25
+ enable-cache: 'true'
26
+ cache-suffix: ${{ inputs.python-version }}
27
+ prune-cache: false
28
+
29
+ - name: Install Python dependencies
30
+ run: uv sync --frozen --python ${{ inputs.python-version }}
31
+ shell: bash
@@ -0,0 +1,71 @@
1
+ name: Main
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types: [opened, synchronize, reopened, ready_for_review]
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ quality:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Check out
18
+ uses: actions/checkout@v4
19
+
20
+ - uses: actions/cache@v4
21
+ with:
22
+ path: ~/.cache/pre-commit
23
+ key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
24
+
25
+ - name: Set up the environment
26
+ uses: ./.github/actions/setup-python-env
27
+
28
+ - name: Run checks
29
+ run: make check
30
+ tests-and-type-check:
31
+ runs-on: ubuntu-latest
32
+ strategy:
33
+ matrix:
34
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
35
+ fail-fast: false
36
+ defaults:
37
+ run:
38
+ shell: bash
39
+ steps:
40
+ - name: Check out
41
+ uses: actions/checkout@v4
42
+
43
+ - name: Set up the environment
44
+ uses: ./.github/actions/setup-python-env
45
+ with:
46
+ python-version: ${{ matrix.python-version }}
47
+
48
+ - name: Run tests
49
+ run: uv run python -m pytest tests --cov --cov-config=pyproject.toml --cov-report=xml
50
+
51
+ - name: Check typing
52
+ run: uv run pyright src/
53
+
54
+
55
+ - name: Upload coverage reports to Codecov with GitHub Action on Python 3.13
56
+ uses: codecov/codecov-action@v4
57
+ if: ${{ matrix.python-version == '3.13' }}
58
+ env:
59
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
60
+
61
+ check-docs:
62
+ runs-on: ubuntu-latest
63
+ steps:
64
+ - name: Check out
65
+ uses: actions/checkout@v4
66
+
67
+ - name: Set up the environment
68
+ uses: ./.github/actions/setup-python-env
69
+
70
+ - name: Check if documentation can be built
71
+ run: uv run mkdocs build -s
@@ -0,0 +1,71 @@
1
+ name: release-main
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+
13
+ jobs:
14
+
15
+ set-version:
16
+ runs-on: ubuntu-24.04
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Export tag
21
+ id: vars
22
+ run: echo tag=${GITHUB_REF#refs/*/} >> $GITHUB_OUTPUT
23
+ if: ${{ github.event_name == 'release' }}
24
+
25
+ - name: Update project version
26
+ run: |
27
+ sed -i "s/^version = \".*\"/version = \"$RELEASE_VERSION\"/" pyproject.toml
28
+ env:
29
+ RELEASE_VERSION: ${{ steps.vars.outputs.tag }}
30
+ if: ${{ github.event_name == 'release' }}
31
+
32
+ - name: Upload updated pyproject.toml
33
+ uses: actions/upload-artifact@v4
34
+ with:
35
+ name: pyproject-toml
36
+ path: pyproject.toml
37
+
38
+ publish:
39
+ runs-on: ubuntu-latest
40
+ needs: [set-version]
41
+ steps:
42
+ - name: Check out
43
+ uses: actions/checkout@v4
44
+
45
+ - name: Set up the environment
46
+ uses: ./.github/actions/setup-python-env
47
+
48
+ - name: Download updated pyproject.toml
49
+ uses: actions/download-artifact@v4
50
+ with:
51
+ name: pyproject-toml
52
+
53
+ - name: Build package
54
+ run: uv build
55
+
56
+ - name: Publish package
57
+ run: uv publish
58
+
59
+
60
+ deploy-docs:
61
+ needs: publish
62
+ runs-on: ubuntu-latest
63
+ steps:
64
+ - name: Check out
65
+ uses: actions/checkout@v4
66
+
67
+ - name: Set up the environment
68
+ uses: ./.github/actions/setup-python-env
69
+
70
+ - name: Deploy documentation
71
+ run: uv run mkdocs gh-deploy --force
@@ -0,0 +1,15 @@
1
+ name: validate-codecov-config
2
+
3
+ on:
4
+ pull_request:
5
+ paths: [codecov.yaml]
6
+ push:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ validate-codecov-config:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - name: Validate codecov configuration
15
+ run: curl -sSL --fail-with-body --data-binary @codecov.yaml https://codecov.io/validate
@@ -0,0 +1,215 @@
1
+ docs/source
2
+
3
+ # From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
4
+
5
+ # Byte-compiled / optimized / DLL files
6
+ __pycache__/
7
+ *.py[codz]
8
+ *$py.class
9
+
10
+ # C extensions
11
+ *.so
12
+
13
+ # Distribution / packaging
14
+ .Python
15
+ build/
16
+ develop-eggs/
17
+ dist/
18
+ downloads/
19
+ !docs/snippets/**/downloads/
20
+ eggs/
21
+ .eggs/
22
+ lib/
23
+ lib64/
24
+ parts/
25
+ sdist/
26
+ var/
27
+ wheels/
28
+ share/python-wheels/
29
+ *.egg-info/
30
+ .installed.cfg
31
+ *.egg
32
+ MANIFEST
33
+
34
+ # PyInstaller
35
+ # Usually these files are written by a python script from a template
36
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
37
+ *.manifest
38
+ *.spec
39
+
40
+ # Installer logs
41
+ pip-log.txt
42
+ pip-delete-this-directory.txt
43
+
44
+ # Unit test / coverage reports
45
+ htmlcov/
46
+ .tox/
47
+ .nox/
48
+ .coverage
49
+ .coverage.*
50
+ .cache
51
+ nosetests.xml
52
+ coverage.xml
53
+ *.cover
54
+ *.py.cover
55
+ .hypothesis/
56
+ .pytest_cache/
57
+ cover/
58
+
59
+ # Translations
60
+ *.mo
61
+ *.pot
62
+
63
+ # Django stuff:
64
+ *.log
65
+ local_settings.py
66
+ db.sqlite3
67
+ db.sqlite3-journal
68
+
69
+ # Flask stuff:
70
+ instance/
71
+ .webassets-cache
72
+
73
+ # Scrapy stuff:
74
+ .scrapy
75
+
76
+ # Sphinx documentation
77
+ docs/_build/
78
+
79
+ # PyBuilder
80
+ .pybuilder/
81
+ target/
82
+
83
+ # Jupyter Notebook
84
+ .ipynb_checkpoints
85
+
86
+ # IPython
87
+ profile_default/
88
+ ipython_config.py
89
+
90
+ # pyenv
91
+ # For a library or package, you might want to ignore these files since the code is
92
+ # intended to run in multiple environments; otherwise, check them in:
93
+ # .python-version
94
+
95
+ # pipenv
96
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
97
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
98
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
99
+ # install all needed dependencies.
100
+ #Pipfile.lock
101
+
102
+ # UV
103
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
104
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
105
+ # commonly ignored for libraries.
106
+ #uv.lock
107
+
108
+ # poetry
109
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
110
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
111
+ # commonly ignored for libraries.
112
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
113
+ #poetry.lock
114
+ #poetry.toml
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
119
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
120
+ #pdm.lock
121
+ #pdm.toml
122
+ .pdm-python
123
+ .pdm-build/
124
+
125
+ # pixi
126
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
127
+ #pixi.lock
128
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
129
+ # in the .venv directory. It is recommended not to include this directory in version control.
130
+ .pixi
131
+
132
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
133
+ __pypackages__/
134
+
135
+ # Celery stuff
136
+ celerybeat-schedule
137
+ celerybeat.pid
138
+
139
+ # SageMath parsed files
140
+ *.sage.py
141
+
142
+ # Environments
143
+ .env
144
+ .envrc
145
+ .venv
146
+ env/
147
+ venv/
148
+ ENV/
149
+ env.bak/
150
+ venv.bak/
151
+
152
+ # Spyder project settings
153
+ .spyderproject
154
+ .spyproject
155
+
156
+ # Rope project settings
157
+ .ropeproject
158
+
159
+ # mkdocs documentation
160
+ /site
161
+
162
+ # mypy
163
+ .mypy_cache/
164
+ .dmypy.json
165
+ dmypy.json
166
+
167
+ # Pyre type checker
168
+ .pyre/
169
+
170
+ # pytype static type analyzer
171
+ .pytype/
172
+
173
+ # Cython debug symbols
174
+ cython_debug/
175
+
176
+ # PyCharm
177
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
178
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
179
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
180
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
181
+ #.idea/
182
+
183
+ # Abstra
184
+ # Abstra is an AI-powered process automation framework.
185
+ # Ignore directories containing user credentials, local state, and settings.
186
+ # Learn more at https://abstra.io/docs
187
+ .abstra/
188
+
189
+ # Visual Studio Code
190
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
191
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
192
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
193
+ # you could uncomment the following to ignore the entire vscode folder
194
+ # .vscode/
195
+
196
+ # Benchmark artifacts
197
+ benchmarks/results.json
198
+
199
+ # Ruff stuff:
200
+ .ruff_cache/
201
+
202
+ # PyPI configuration file
203
+ .pypirc
204
+
205
+ # Cursor
206
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
207
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
208
+ # refer to https://docs.cursor.com/context/ignore-files
209
+ .cursorignore
210
+ .cursorindexingignore
211
+
212
+ # Marimo
213
+ marimo/_static/
214
+ marimo/_lsp/
215
+ __marimo__/
@@ -0,0 +1,23 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: "v6.0.0"
4
+ hooks:
5
+ - id: check-case-conflict
6
+ - id: check-merge-conflict
7
+ - id: check-toml
8
+ - id: check-yaml
9
+ args: [--unsafe]
10
+ - id: check-json
11
+ exclude: ^.devcontainer/devcontainer.json
12
+ - id: pretty-format-json
13
+ exclude: ^(.devcontainer/devcontainer.json|.*\.ipynb$)
14
+ args: [--autofix, --no-sort-keys]
15
+ - id: end-of-file-fixer
16
+ - id: trailing-whitespace
17
+
18
+ - repo: https://github.com/astral-sh/ruff-pre-commit
19
+ rev: "v0.14.9"
20
+ hooks:
21
+ - id: ruff-check
22
+ args: [ --exit-non-zero-on-fix ]
23
+ - id: ruff-format
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "charliermarsh.ruff",
4
+ "ms-python.python",
5
+ "redhat.vscode-yaml"
6
+ ]
7
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "[python]": {
4
+ "editor.defaultFormatter": "charliermarsh.ruff",
5
+ "editor.codeActionsOnSave": {
6
+ "source.organizeImports": "explicit"
7
+ }
8
+ },
9
+ "python.testing.pytestArgs": [
10
+ "tests"
11
+ ],
12
+ "python.testing.unittestEnabled": false,
13
+ "python.testing.pytestEnabled": true,
14
+ "yaml.schemas": {
15
+ "https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml"
16
+ },
17
+ "yaml.customTags": [
18
+ "!ENV scalar",
19
+ "!ENV sequence",
20
+ "!relative scalar",
21
+ "tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg",
22
+ "tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji",
23
+ "tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format",
24
+ "tag:yaml.org,2002:python/object/apply:pymdownx.slugs.slugify mapping"
25
+ ]
26
+ }
idfkit-0.1.0/CLAUDE.md ADDED
@@ -0,0 +1,81 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ This is a template repository for Python projects that use uv for their dependency management.
8
+
9
+ This project uses:
10
+ - **uv** for dependency management
11
+ - **Ruff** for linting and formatting
12
+ - **pyright** for type checking
13
+ - **pytest** for testing
14
+ - **MkDocs** for documentation
15
+
16
+ ## Common Commands
17
+
18
+ ```bash
19
+ # Install dependencies
20
+ uv sync
21
+
22
+ # Run all quality checks (lint, format, type check, deptry)
23
+ make check
24
+
25
+ # Run tests
26
+ make test
27
+
28
+ # Run a single test
29
+ uv run pytest tests/test_file.py::test_function -v
30
+
31
+ # Serve documentation locally
32
+ make docs
33
+ ```
34
+
35
+ ## Project Structure
36
+
37
+ ```
38
+ src/idfkit/ # Main package
39
+ tests/ # Test files (mirror source structure)
40
+ docs/ # MkDocs documentation
41
+ pyproject.toml # Project configuration and dependencies
42
+ ```
43
+
44
+ ## Code Style
45
+
46
+ - **Line length**: 120 characters
47
+ - **Imports**: Always include `from __future__ import annotations`
48
+ - **Type hints**: Required on all functions (parameters and return types)
49
+ - **Docstrings**: Google or NumPy style for public APIs
50
+ - **Data models**: Use dataclasses or Pydantic instead of raw dicts
51
+
52
+ ## Testing
53
+
54
+ Tests live in `tests/` and mirror the source structure. When adding new functionality:
55
+
56
+ 1. Create test file: `tests/test_<module_name>.py`
57
+ 2. Write tests before or alongside implementation
58
+ 3. Run tests: `uv run pytest tests/test_<module_name>.py -v`
59
+ 4. Verify all tests pass: `make test`
60
+
61
+ Use pytest fixtures (in `conftest.py`) for shared test setup.
62
+
63
+ ## Type Checking
64
+
65
+ This project uses **pyright** for static type analysis. **ALWAYS** try to fix the typing issues with a proper solution rather than adding an ignore statement.
66
+
67
+ ```bash
68
+ uv run pyright
69
+ ```
70
+
71
+ Ensure all new code is fully typed. The configuration is in `pyproject.toml`.
72
+
73
+ ## Before Committing
74
+
75
+ Always run the full quality gate before proposing changes:
76
+
77
+ ```bash
78
+ make check && make test
79
+ ```
80
+
81
+ This runs: lock file validation, pre-commit hooks (ruff format/lint), pyright, deptry, and pytest.