pyepwmorph 3.3.0__tar.gz → 3.4.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 (28) hide show
  1. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/PKG-INFO +7 -21
  2. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/README.md +6 -20
  3. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/amy.py +13 -0
  4. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/amy_meteoswiss.py +12 -0
  5. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyproject.toml +1 -1
  6. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/.gitignore +0 -0
  7. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/LICENSE +0 -0
  8. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/__init__.py +0 -0
  9. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/data/__init__.py +0 -0
  10. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/data/amy_diffuse_table.parquet +0 -0
  11. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/data/ch2025_monthly.parquet +0 -0
  12. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/data/ch2025_stations.parquet +0 -0
  13. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/__init__.py +0 -0
  14. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/access.py +0 -0
  15. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/assemble.py +0 -0
  16. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/ch2025.py +0 -0
  17. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/coordinate.py +0 -0
  18. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/models/custom.py +0 -0
  19. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/morph/__init__.py +0 -0
  20. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/morph/procedures.py +0 -0
  21. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/__init__.py +0 -0
  22. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/cache.py +0 -0
  23. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/configuration.py +0 -0
  24. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/io.py +0 -0
  25. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/psychrometrics.py +0 -0
  26. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/solar.py +0 -0
  27. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/utilities.py +0 -0
  28. {pyepwmorph-3.3.0 → pyepwmorph-3.4.0}/pyepwmorph/tools/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyepwmorph
3
- Version: 3.3.0
3
+ Version: 3.4.0
4
4
  Summary: A python package to enable simple and easy gathering of climate model data and morphing of EPW files
5
5
  Project-URL: Homepage, https://github.com/justinfmccarty/pyepwmorph
6
6
  Project-URL: Issues, https://github.com/justinfmccarty/pyepwmorph/issues
@@ -154,26 +154,12 @@ CH2025 data: MeteoSwiss & ETH Zurich (2025), Climate CH2025 - Daily Datasets, CC
154
154
 
155
155
  ### Measured data (actual meteorological year)
156
156
 
157
- Turn one real year of station measurements, hourly or 10-minute, into an EPW
158
- for calibration. The table needs fixed column names and hour-ending
159
- timestamps; `pyepwmorph.tools.amy.describe_columns()` lists them.
160
-
161
- ```python
162
- from pyepwmorph.tools import amy, amy_meteoswiss
163
-
164
- table = amy_meteoswiss.read_meteoswiss_ogd("ogd-smn_sma_t_historical_2020-2029.csv") # UTC, hour-ending
165
- location = amy_meteoswiss.meteoswiss_location("ogd-smn_meta_stations.csv", "SMA")
166
- report = amy.station_table_to_epw(
167
- table, location, 2025, "zurich_fluntern_2025.epw",
168
- source_name="MeteoSwiss Zurich-Fluntern", attribution=amy_meteoswiss.ATTRIBUTION,
169
- )
170
- print(report.to_text())
171
- ```
172
-
173
- Other networks only need a table with the documented columns and
174
- `timestamp_label` / `table_utc_offset` set to match their clock. Direct and
175
- diffuse irradiance and sky cover are derived when the station does not measure
176
- them (the report and the EPW header say how).
157
+ Moved to [weather-file-builder](https://github.com/justinfmccarty/weather_file_builder)
158
+ (2.1 and later), together with ISO 15927-4 typical years from station data:
159
+ `weather_file_builder.amy.station_table_to_epw` and
160
+ `weather_file_builder.station_tmy.station_table_to_tmy_epw`.
161
+ `pyepwmorph.tools.amy` still works in 3.4 but warns on import and will be
162
+ removed in 4.0.
177
163
 
178
164
  ## Climate scenarios
179
165
 
@@ -115,26 +115,12 @@ CH2025 data: MeteoSwiss & ETH Zurich (2025), Climate CH2025 - Daily Datasets, CC
115
115
 
116
116
  ### Measured data (actual meteorological year)
117
117
 
118
- Turn one real year of station measurements, hourly or 10-minute, into an EPW
119
- for calibration. The table needs fixed column names and hour-ending
120
- timestamps; `pyepwmorph.tools.amy.describe_columns()` lists them.
121
-
122
- ```python
123
- from pyepwmorph.tools import amy, amy_meteoswiss
124
-
125
- table = amy_meteoswiss.read_meteoswiss_ogd("ogd-smn_sma_t_historical_2020-2029.csv") # UTC, hour-ending
126
- location = amy_meteoswiss.meteoswiss_location("ogd-smn_meta_stations.csv", "SMA")
127
- report = amy.station_table_to_epw(
128
- table, location, 2025, "zurich_fluntern_2025.epw",
129
- source_name="MeteoSwiss Zurich-Fluntern", attribution=amy_meteoswiss.ATTRIBUTION,
130
- )
131
- print(report.to_text())
132
- ```
133
-
134
- Other networks only need a table with the documented columns and
135
- `timestamp_label` / `table_utc_offset` set to match their clock. Direct and
136
- diffuse irradiance and sky cover are derived when the station does not measure
137
- them (the report and the EPW header say how).
118
+ Moved to [weather-file-builder](https://github.com/justinfmccarty/weather_file_builder)
119
+ (2.1 and later), together with ISO 15927-4 typical years from station data:
120
+ `weather_file_builder.amy.station_table_to_epw` and
121
+ `weather_file_builder.station_tmy.station_table_to_tmy_epw`.
122
+ `pyepwmorph.tools.amy` still works in 3.4 but warns on import and will be
123
+ removed in 4.0.
138
124
 
139
125
  ## Climate scenarios
140
126
 
@@ -1,5 +1,9 @@
1
1
  """Build an EPW from measured weather station data (an actual meteorological year).
2
2
 
3
+ .. deprecated:: 3.4.0
4
+ Moved to ``weather_file_builder.amy`` (weather-file-builder 2.1). This
5
+ copy is frozen and will be removed in pyepwmorph 4.0.
6
+
3
7
  A typical meteorological year stitches months from many years. An *actual*
4
8
  meteorological year (AMY) is one real calendar year of measurements, which is
5
9
  what building energy model calibration needs. This module turns a table of
@@ -72,6 +76,7 @@ Short gaps are interpolated and long gaps raise an error (see
72
76
  import datetime as _dt
73
77
  import logging
74
78
  import unicodedata
79
+ import warnings as _warnings
75
80
  from dataclasses import dataclass, field
76
81
  from functools import lru_cache
77
82
  from importlib.resources import files
@@ -84,6 +89,14 @@ import pvlib
84
89
  from pyepwmorph.tools import psychrometrics
85
90
  from pyepwmorph.tools.io import EPW_COLUMN_NAMES
86
91
 
92
+ _warnings.warn(
93
+ "pyepwmorph.tools.amy is deprecated and will be removed in pyepwmorph 4.0. "
94
+ "It has moved to weather-file-builder (pip install 'weather-file-builder>=2.1'): "
95
+ "use weather_file_builder.amy.",
96
+ DeprecationWarning,
97
+ stacklevel=2,
98
+ )
99
+
87
100
  logger = logging.getLogger(__name__)
88
101
 
89
102
  #: Column contract. ``agg`` is how sub-hourly values become hourly values.
@@ -1,5 +1,8 @@
1
1
  """MeteoSwiss open data (ogd-smn) adapter for :mod:`pyepwmorph.tools.amy`.
2
2
 
3
+ .. deprecated:: 3.4.0
4
+ Moved to ``weather_file_builder.amy_meteoswiss``. Removed in pyepwmorph 4.0.
5
+
3
6
  Reads the automatic station files that MeteoSwiss publishes at
4
7
  https://opendatadocs.meteoswiss.ch/ (10-minute ``..._t_...`` and hourly
5
8
  ``..._h_...`` CSVs, semicolon separated) and renames their parameter codes to
@@ -15,10 +18,19 @@ attribution wording).
15
18
  """
16
19
 
17
20
  import logging
21
+ import warnings as _warnings
18
22
  from typing import Optional
19
23
 
20
24
  import pandas as pd
21
25
 
26
+ _warnings.warn(
27
+ "pyepwmorph.tools.amy_meteoswiss is deprecated and will be removed in pyepwmorph 4.0. "
28
+ "It has moved to weather-file-builder (pip install 'weather-file-builder>=2.1'): "
29
+ "use weather_file_builder.amy_meteoswiss.",
30
+ DeprecationWarning,
31
+ stacklevel=2,
32
+ )
33
+
22
34
  logger = logging.getLogger(__name__)
23
35
 
24
36
  #: Attribution line for the EPW header.
@@ -17,7 +17,7 @@ core-metadata-version = "2.4"
17
17
 
18
18
  [project]
19
19
  name = "pyepwmorph"
20
- version = "3.3.0"
20
+ version = "3.4.0"
21
21
  authors = [
22
22
  { name="Justin McCarty", email="mccarty.justin.f@gmail.com" },
23
23
  ]
File without changes
File without changes