Recent Releases of pyIEM
pyIEM - pyIEM 1.27.0 Release
1.27.0 (14 Apr 2026)
API Changes
- Add opinionated
rwparameter topyiem.databaseto allow for more
control over when aread-writeconnection is truly required see (#1178). - Clarify in CI environment that
fionais not an actual dependency. - Refactor duplicated VTEC check, denote
_check_dup_psis internal API, and
fix a false positive and fix a bug. No data quality impacts (#1167). - Refactor
util.get_autoplot_contextintoautoplot.get_autoplot_context. - Require python 3.11+
- Treat inbound empty CGI parameters as effective
None. - Update TAF storage to include an
issueandexpiretimestamp, which
explicitly stores the time domain. This change modified the storage of
the observation to not include these timestamp values.
New Features
- Add
pyiem.reference.StationAttributes.HAS_PHOURconstant. - Add
filtervarautoplot context type (#1180). - Added crude bounds checking within
pyiem.observationto prevent out of
reasonable bounds data from going to the database. - Finish migration of setup.cfg content into pyproject.toml.
- Generate Jabber messages for Daily Summary Messages.
- Increased LSR jabber message generation limit to 20 (#1154).
- Support Storm Prediction Center updated
CIG[1-3]thresholds (#1156). - Support Terminal Aerodome Forecast (TAF) designation of amendments with
addition to TAFReport data model and persistence to database
(akrherz/iem#1514). - Update bundled NWS Counties/Zones to 16 Apr 2026 (#1144).
- Update CI testing to include python=3.14
- Update
riverproSQL to use on conflict upsert.
Bug Fixes
- Address Pandas 4 deprecation with
copyparameter inastype. - Fix SHEF ingest variables when length variable decreases (#1163).
- Fully delete previous
spc_outlookentries in case of duplicate issuace. - Improve robustness and logging of IEM
webappauto-generated docs. - Increase whitespace forgiveness of DSM parser.
- Prevent
iemappmemcache write larger than 10MB. - Prevent
iemappmemcache keys longer than 250 chars. - Validate inbound CGI parameters more rigorously for
iemapp()when a
schema is provided (#1174).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz 2 months ago
pyIEM - pyIEM 1.26.0 Release
API Changes
- Enforce a SHEF data model limit of 8 characters for a station identifier.
- Ween off
domain=nomenclature for the default IEMRE domain.
New Features
- Add an IEMRE
CONUSalias that points back to the default domain="". - Add IEM autoplot alias option to allow for legacy variable migration.
Bug Fixes
- Account for a corrupted HRRR bufkit file found in MTArchive.
- Correct LSR location parsing for Guam and Pago Pago.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz 7 months ago
pyIEM - pyIEM 1.25.0 Release
API Changes
- Change
NoDataFoundexception iniemappto HTTP status 422. - Mark
pyiem.util.{get_dbconn*,get_sqlalchemy_conn}for removal in 1.26.0 - Remove
pyiem.plot.use_agg.plt(pyplot) as it is a walking memory leak. - Remove
pyiem.prismper previous deprecation. - Rename
pyiem.nws.products.vtec.skip_contois_skip_con(meh, internal). - Support TAF Collectives by changing
prod.data: TAFReportto
prod.data: list[TAFReport](#913).
New Features
- Add
method=headoption toarchive_fetchso to do quick checks. - Drop
nh3requirement. - Support
BECMG,PROB30, andPROB40TAF forecast elements (#1104). - Support more TAF quirks and poor formatting.
Bug Fixes
- Account for
python-metaredge case with peak wind time being in the future. - Correct TAF parsing edge case when segment has no equals.
- Demote a SHEF warning for a poorly encoded paired depth value.
- Fix edge case with empty scripts in autoplot vtecps type.
- Prevent unknown UGC from causing a full database write failure (#1097).
- Rework XSS detection within
webutil.iemapp. - Update bundled NWS CWAs (18 Mar 2025) (#1100).
- Workaround a spacing issue within LSRs that may not be fixed upstream.
What's Changed
- Demote SHEF warning about negative depth by @akrherz in https://github.com/akrherz/pyIEM/pull/1093
- Forgive LSR spacing issue by @akrherz in https://github.com/akrherz/pyIEM/pull/1094
- 🐛 Account for python-metar edge case by @akrherz in https://github.com/akrherz/pyIEM/pull/1096
- 🐛 Prevent unknown UGC to prevent db write failure by @akrherz in https://github.com/akrherz/pyIEM/pull/1098
- 💥 Remove pyiem.plot.use_agg.plt by @akrherz in https://github.com/akrherz/pyIEM/pull/1099
- 📝 Update bundled CWA geodf by @akrherz in https://github.com/akrherz/pyIEM/pull/1101
- 🎨 Use default value for empty vtecps string by @akrherz in https://github.com/akrherz/pyIEM/pull/1102
- ✅ Add test for old-bug not currently present by @akrherz in https://github.com/akrherz/pyIEM/pull/1103
- ✨ Support PROB30,PROB40,BECMG TAF Fields by @akrherz in https://github.com/akrherz/pyIEM/pull/1105
- 🐛 Address TAF edge parsing case by @akrherz in https://github.com/akrherz/pyIEM/pull/1106
- ✅ Add test to ensure TAF processing by @akrherz in https://github.com/akrherz/pyIEM/pull/1107
- 🎨 Account for additional TAF edge case by @akrherz in https://github.com/akrherz/pyIEM/pull/1108
- 🎨 Address some typing lint by @akrherz in https://github.com/akrherz/pyIEM/pull/1109
- 🔥 Drop is_tempo database storage by @akrherz in https://github.com/akrherz/pyIEM/pull/1110
- TAF QoL by @akrherz in https://github.com/akrherz/pyIEM/pull/1111
- 💥 Support TAF Collectives by @akrherz in https://github.com/akrherz/pyIEM/pull/1112
- 🎨 Allow for TAF AMD by @akrherz in https://github.com/akrherz/pyIEM/pull/1113
- 🎨 Allow for more TAF one-offs by @akrherz in https://github.com/akrherz/pyIEM/pull/1114
- 🐛 Address RWIS iemid change by @akrherz in https://github.com/akrherz/pyIEM/pull/1115
- Bump actions/checkout from 4 to 5 in the github-actions group by @dependabot[bot] in https://github.com/akrherz/pyIEM/pull/1117
- PRISM cleanups by @akrherz in https://github.com/akrherz/pyIEM/pull/1118
- 🚧 Wordsmithing VTEC Jabber Messages for #1119 by @akrherz in https://github.com/akrherz/pyIEM/pull/1120
- ✨ Add method=head to archive_fetch by @akrherz in https://github.com/akrherz/pyIEM/pull/1121
- Stop needless smtp connect by @akrherz in https://github.com/akrherz/pyIEM/pull/1122
- 🐛 Rework XSS detection in iemapp by @akrherz in https://github.com/akrherz/pyIEM/pull/1123
- 🐛 Account for XSS edge case by @akrherz in https://github.com/akrherz/pyIEM/pull/1124
- 📌 Debug transient CI failure by @akrherz in https://github.com/akrherz/pyIEM/pull/1125
- 🗑️ Mark pyiem.util database stuff for removal by @akrherz in https://github.com/akrherz/pyIEM/pull/1126
- 🐛 [taf] Fix parse logic error when no = by @akrherz in https://github.com/akrherz/pyIEM/pull/1127
Full Changelog: https://github.com/akrherz/pyIEM/compare/v1.24.0...v1.25.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz 9 months ago
pyIEM - pyiem 1.24.0 Release
The package name is clarified as lowercase pyiem, will see how much trouble that causes :/
API Changes
- Bundled IEM website template migrated to Bootstrap 5.
- Define
PRISM800grid navigation for updated PRISM 800m grid. - Mark
pyiem.prismfor removal in next release. - Move
get_product_id()up one class level toWMOProduct. - Reclassify LSR
LANDSLIDEtypetext to codex(debris flow). - Reclassify LSR
SNOW/ICE DMGtypetext to code5(ice related). - Update LSR web links within Jabber messages per new
IEM LSR App.
New Features
- Add
iailmo(Iowa + Illinois + Missouri)MapPlotsector. - Add
saIEMRE domain per DEP needs akrherz/iem#1173. - Bundle a docutils based CSS to improve the iemapp help rendered HTML.
- Bundle GeoDataframes of discontinued NWS UGC Counties/Zones. Add
discontinued=booloption toMapPlot.fill_ugcs()to enable. - Forgive encoded space as
+in datetime to autoplot context. - Introduce
appmodeflag on IEM template to control default CSS/JS inclusion. - Introduce
pyiem.ncei.ghcnhto process NCEI GHCNh data. - Introduce
pyiem.ncei.igrato process NCEI IGRA2.2 Data (#1036). - Introduce
pyiem.nws.products.metar_utilwithmetar_from_dicthelper to
create METAR strings from dicts of data. - Remove null byte 0x00 from WMO Products.
- Support new MCD most probabe tags (#1042).
- VTEC events are now created in the unfortunate case of a missed expansion
or creation product in the time series. This is a life choice made in the
face of increasing NWS dissemination problems.
Bug Fixes
- Account for empty strings in
vtec_psautoplot form type. - Correct fontscale calculation.
- Correct offset calculation in SIGMETs.
- Correct timezone offsets for some Atlantic timezones.
- Correct web links for SPC day 2,3 convective outlook.
- Correct metadata for a number of NCEI IGRA2 sites.
- Correct SIGMET offset computation to use nautical miles.
- Fix appending
product_idto IEM Access summary table for DSM parsing. - Fix CWA parsing issue when lat/lon box is found.
- Fix SPC Day2 outlook link.
- Implement better conditioning on inbound text for
WMOProduct#unixtext - Improve multi-line PIREP report join when there is no front spaces.
- Update NCEP MRMS base URL for real-time downloads.
- Use text product issuance time, in leiu of ambiguity with invalid VTEC
series (ie issuance was missing).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz 12 months ago
pyIEM - pyIEM 1.23.0
API Changes
- Drop
summarydatabase table processing ofmax_tmpf_qc,min_tmpf_qc,
pday_qc, andsnow_qc. These are ill-designed and unused. - Drop poorly designed
iemdbsupport withinwebutil.iemapp. - Internal refactor of
WMOProducttimestamp processing in parent class.
New Features
- Add
textpatternsupport withinget_autoplot_context. - Bundle NWS AWIPS geodatabase valid 18 March 2025 (#1017).
- Introduce
database.sql_helperas a hacky attempt to ease my ignorance
with psycopg + sqlalchemy + pandas usage. - Introduce
database.with_sqlalchemy_conndecorator helper. - Introduce
util.ddhhmm2datetimehelper to convert a WMO header timestamp
to a UTC timestamp. - Support decorated
webutil.iemappfunctions that return generators. - Write DSM product_id to IEMAccess summary table.
Bug Fixes
- Add color for Cold Weather Advisory (AFEEEE).
- Constrain FEMA Region 9 to CA, NV, AZ (#1007).
- Improve solar radiation summary table update within IEMAccess.
- Prevent
UGCProviderfrom constantly reloading from database (#1010). - Skip PDS cross-check for watches from Hawaii.
- Wordsmith message for Snow Squall Warnings (#1013).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 1 year ago
pyIEM - pyIEM 1.22.1
API Changes
- Map
runneruser tomesonetfor CI database support. - Refactored PIREP data model to
pyiem.models.pirep.
New Features
- Add
nwsicecolor ramp per suggestion. - Retain reference to
CGIModelschema asenviron["_cgimodel_schema"]. - Parse flight level within PIREPs (#1003).
- Use
akrherz/iem_database:test_datacontainer for integration tests.
Bug Fixes
- Attempt more robust NWS product headline gleaning.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 1 year ago
pyIEM - pyIEM 1.22.0 Release
API Changes
- Add
pyiem.reference.StationAttributesclass to hold database attribute
keys used. - Discontinue raw SPS product text within the database.
- Ensure raw text products into
WMOProductend with a line feed. - Move VTEC
SEphenomena out of the default WFO jabber channels. - Replace
requestsusage withhttpx. - Stop postprocessing the
MapPlotfigure into 8bit colorspace.
New Features
- Add
allowed_as_listoption toiemapp()helper to stop lists. - Add
pyiem.grid.navwith IEM grid information in a fancy form. - Add
MapPlot.imshowwith some optimized panel plotting. - Add maximum risk threshold within SPC outlook message (#969).
- Add
pyiem.era5landwith IEM grid reference information. - Add
pyiem.stage4with grid reference information. - Add support for plotting by FEMA Regions.
- Assign base WFO jabber channel to Tsunami Warnings (#978).
- Improvements for IEM netcdf grid navigation and handling.
- Include simple table of un-plotted states for
MapPlot(sector="nws")#967. - Introduce
radar_ptypecolor ramp anddraw_radar_ptype_legendfor
generating plots of HRRR ptype.
Bug Fixes
- Accomodate ancient LSRs using
TRACEas the magnitude field. - Add nounce to LSR autoplot link to prevent some ugliness around a NWS issue.
- Correct
MapPanelGIS worldfile logic as upper left is center of grid cell. - Ensure geometries going into masking helper are CCW, to mask outside of.
- Improve dev experience using
ugc.UGCProvider(#980). - Fix grid and affine definitions for IEMRE and MRMS.
- Properly check USDM service response prior to parsing it.
- Refine which
MWWproducts are not defaulted into the main WFO Channels,
those being VTEC codesSC,MF, andGL. - Require valid wind speed and direction values going into
windrose_utils. - Support parsing
CLIproducts circa 2007 with a bad space. - Use more exact grid naviation for
pyiem.prism, fixes off-by-one.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 1 year ago
pyIEM - pyIEM 1.21.0 Release
API Changes
- Discontinue persisting text product into {mcd,mpd} table storage.
- Discontinue storage of text product into sigmets, use
product_idinstead. - Raise
IncompleteWebRequestexception when autoplot datetime parsing fails.
New Features
- Add
_check_dueling_tropicsVTEC check looking for TR+HU overlap (#930). - Add IEMRE DOMAINS to support upcoming expansion.
- Add
pyiem.grid.util.grid_smearto shift masked data to fill in missing. - Allow
iemapp(memcachexpire)to be a callable, called back with environ. - Cross check WCNs against watch database storage for PDS status (#925).
- For
iemappif thememcachekey=callable returnsNone, the check of
memcache is short circuited. - Store
product_idfor PIREPs and do some faked AFOS assignments to help. - Support SPC afternoon Day 3 outlook (cycle assigned as 20) (#936).
- Support VTEC significance addition of Extreme Heat (XH) (#953).
Bug Fixes
- Fix and refactor SPC
sawparsing of watch replacement number. - Pop kwargs
figonMapPlot. - Use less confusing landing page at WPC for ERO.
- Use
roundinstead ofintto compute zonal stats grid navigation.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 2 years ago
pyIEM - pyIEM 1.20.0 release
API Changes
- Change storage logic of SBW to not include
CANpolygons in the case of
a CAN/CON combination update (#888). - Depend on
docutilsfor reStructedText to HTML conversion. - Don't generate jabber messages for LSR products with more than 4 LSRs (#901).
util.get_autoplot_contextcan now raiseIncompleteWebRequest.- The VTEC/SBW database storage of raw NWS product text was discontinued.
Instead, rawproduct_idvalues are stored, which can be used against IEM
web services to get the raw text. (#857)
New Features
- Account for common AM/PM typos and off-by-one year timestamps in NWS Prods.
- Add
backgroundcoloroption toMapPlot.plot_values. - Add
comprehensive_climate_indexandtemperature_humidity_index. - Add
imgsrc_from_rowhelper for SPC outlook link generation. - Add
parse_commasoption towebutil.ensure_list, so to allow comma
delimited CGI params by default. - For pydantic schema based
iemapp, keys likewfo[]go towfo. - Introduce some pydantic based validators for web requests, experimental...
- Store
product_signaturein sbw table (requires iem-database schema update). - Support SPC corrections for MCDs so to prevent database dups.
Bug Fixes
- Allow for pydantic field validation to work when there's legacy
yearvs
year1present. - Correct generated LSR summary link to have timestamps in UTC.
- Correct handling of
is_emergencywhen done within VTEC correction (#899). - Correct
SKCparsing within TAFs, level is nowNonein this case (#453). - Don't allow CF6 data from "today" or the "future" to be parsed, if missing.
- Fix numeric instability with
pyiem.plot.centered_bins(#871). - Forward propagate sbw database storage of VTEC issuace (#862).
- Handle edge case with NWS text product having a polygon at the end without
a trailing newline (ancient text). - Improve NWS Text Product signature logic so to more generally match what
looks like a signature (#865). - Improved NWS MND header logic for timestamp retrieval.
- Make better life choices attempting to glean a NWS Text Product signature.
- Prevent situation in sbw database having polygon_begin > polygon_end (#862).
- Refactor VTEC/SBW storage logic to use
vtec_yearcolumn and operate on the
parent table (#863). - Update link to new NWPS website.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 2 years ago
pyIEM - pyIEM 1.19.0 Release
API Changes
- Drop
pyiem.nwnformatas it is no longer used. - Introduce
pyiem.wmo.WMOProductas a lightweight class for products that
need little default processing.pyiem.nws.product.TextProductinherits. - Remove
import *usage frompyiem.plot. This was a bad daryl mistake. - Require
pygribas we add some grib processing. - Require
pyogriofor faster geopandas shapefile reading.
New Features
- Add
pyiem.iemre.grb2iemrehelper to reproject a grib message onto IEMRE. - Add
pyiem.util.archive_fetchhelper to get IEM archived resources. - Add VTEC storage of
product_ids(#857). - Sync NWS VTEC colors per IEM database cross-check review.
- Update bundled NWS zones database to 5 March 2024 release (#821).
Bug Fixes
- Account for a common autoplot context timestamp typo.
- Add a hacky
gc.collect()withinMapPlot#closeattempting to workaround
some matplotlib memory leaking. - Constrain a VTEC database search for expiration times not infinitely into
the future. - Fix
iemre.reproject2iemreto return a masked_array and handle an input
masked array. - Fix invalid
rtrim()usage withremovesuffix(). - Fix off-by-one when
grid.zshits a mask right at the border. - Fix placement of GU, AK, HI, PR inset axes for sector="nws" plot.
- Improve
setuptools_scmplumbing to avoid runtime import. - Remove hackish website telemetry writing from a thread.
- Support a variant
Tracevalue specified in LSRs.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 2 years ago
pyIEM - pyIEM 1.18.0 Release
API Changes
- Add dependencies on
nh3andpaste. - Raise
NewDatabaseConnectionFailurefrompyiem.database.get_dbconnfor
all failures and stop emittingUserWarning. - Raise
UnknownStationExceptionfrompyiem.util.get_autoplot_contextwhen
an unknown station is provided. - Repurpose LSR type internal code
qforSNOW SQUALL.
New Features
- Add
#{state}wxhash tags to NWS Local Storm Report social media posts. - Add
cursor_nameoption todatabase.get_dbconnc. - Add
pyiem.iemre.reproject2iemrehelper to bring arbitrary grids onto IEMRE. - Add
pyiem.util.{delete,set}_propertyhelpers. - Introduce
pyiem.webutil.iemappdecorator to do fancy things for IEM
mod_wsgi apps and remove downstream boilerplate.
Bug Fixes
- [SHEF] Lines startig with ":" are double checked for slashes, before use.
- [SHEF] Ensure E message elements have a physical_element set.
- [SHEF] Fix
DDmodifier when we are crossing a month. - [SHEF] Fix significant bug with Paired Values (ref SHEF Manual 7.4.6) not
properly computing magnitude for encoded float values. - [SHEF] Forgive a random nan that keeps appearing in RRSRAH.
- [SHEF] Prevent extraneous "/" added to contination .A and .E messages.
- [SHEF] Support 0.001 encoding of Trace values.
- Allow for calm percentage plotting space in windrose with rmax set (#798).
- Fix
compute_wfosmethod for SAW processor. - Make presence of tabs in CLI products more forgiving.
- Refactor SHEF parsing such to better handle situations with time modifiers
being missing and enforceSHEFElementpydantic validation.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 2 years ago
pyIEM - pyIEM 1.17.0 Release
API Changes
- MAJOR Migration of database connections to psycopg 3, introduce
get_dbconncto return a connection and dict_row cursor. Currently,
get_dbconnwill continue to return a default cursor, this may change in
the future (#754). - Default to psycopg 3 for sqlalchemy connections.
- Drop
twythonand removepyiem.util.get_twitteras both are defunct after
Twitter v1.1 removal. - Fully drop
backports.zoneinfousage as we now require Python 3.9+.
New Features
- Add
pyiem.util.get_dbconnchelper to return a connection + cursor. - Add some AFOS product definitions for various NHC recon products.
htmlgen/station_selectwas updated to include offline stations by default.- Updated bundled NWS GIS to 19 Sep 2023 release (#734).
Bug Fixes
- Fix Jabber message generation for SPC Day4-8 Convective Outlooks.
- Misc improvements to NWS CLI product parsing.
- Require IBW tag confirmation before declaring a TOR,FFW product as an
emergency, for products 2023 and onward. - [SHEF] Account for corrupted timestamp generating a traceback.
- Upper case LSR
typetextin Jabber channel usage.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 3 years ago
pyIEM - pyIEM 1.16.0 Release
API Changes
- Convert marine LSR types that are used on land to legacy codes (#729).
- Dropped python=3.8 support/testing as xarray has moved on.
- Removed
pyiem.cscap_utilsas it was not maintained. - Removed
pyiem.twistedpgas it was a glorious hack and no longer needed. - SPC/WPC outlook geometry is now the actual threshold specific geometry. A
correspondinggeometry_layersmultipolygon now exists to hold the non cookie
cutted polygon (#738).
New Features
- Add bling to jabber messages generated from PNS Damage Surveys.
- Add Impact Based Warning tags to jabber channels in the form of
<phenomena>.<significance>.<tag>(#11). - Add parser for Wind/Temps Aloft Forecast product (AWIPSID: FD) (#713).
- Add
twitter_mediafor LSR jabber messages. - Improve METAR parsing to better preserve integer `degF`` temperatures (#740).
- Persist Summary LSR product identifier to database (akrherz/pyWWA#150).
- Support
type="state"for autoplot context. - Support Guam for NEXRAD overlays.
- Updated bundled NWS counties/zones to something circa March 2023.
- Validate
type=cmapforutil.get_autoplot_context(#709).
Bug Fixes
- Correct VTEC
is_emergencyfalse positive spotted by Kyle Noël. - Improve forgiveness of CLI parser some more. Never ends.
- Improve robustness of
FLSimpacts bullet search. - Prevent CF6 data from the future.
- [SHEF] Workaround
DVmonths offset, which is ill-defined anyway. - Support LSRs with mile units.
- Fix LSR
typetextcomparisons and ensure database uppercase entries.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 3 years ago
pyIEM - pyIEM 1.15.0 Release
API Changes
- Depend on package
defusedxmlfor XML parsing. - Depend on package
twython. - Depend on package
pymemcacheto support my hackish use of memcached. - Quasi internal
MetarCollective.wind_messagewas modified to also return the
wind speed in knots. - Refactor internal testing
util.get_file_namehelper. - Refactor
pyiem.utildatabase methods topyiem.database.
New Features
- Add flag (
plot_convention) for windrose plots to change orientation of the
bars. Engineers generally want bars oriented toward the direction the wind
is blowing toward, not from (#680). - Add
isolatedparameter togeoplot.plot_valuesto allow label collision
to only be done against the plotted data in that iteration and not all data. - Add
fill_{rfc,cwsu}as availableMapPlotmethods. - Add WPC XTEUS (national max/min temp) parser
pyiem.nws.products.xteus. - Fill out
pyiem.data.reference.prodDefinitionsbased on what the IEM AFOS
database has. - Fix state border zorder and allow
stateborderwidthkwarg. - Jabber channels for METAR wind gust alerts were enhanced (#683).
- Generate a TextProduct.warning message for a VTEC product that should contain
a polygon, but does not (#660). - Introduce a natural earth background option for MapPlot (#304).
- Introduce hacky
sector="spherical_mercator"that brings in ESRI basemaps
for the background. My implementation stinks and will change (#304). - Support
cartopy_offlinedataversion 0.20+. - Support new CLI format diction from NWS Sacramento.
- Workaround autoplot context fun with mixed 3-4 character WFOs.
Bug Fixes
- Account for
MapPlotcustom domain that crosses anti-meridian (#655). - Add GU "Guam" to pyiem.reference.state_names.
- Allow non-conforming
DHMSGwithin SHEF. - Cleanup and improve windrose title / time filtering logic (#663).
- Correct VTEC database accounting issue for emergencies (#676).
- Correct VTEC database partitioning for difficult event spanning years.
- Draw mask on all known sectored plots.
- Increased default
pyiem.util.get_dbconnconnect timeout to 30 seconds. - Polish SHEF parsing some with better error message and account for
...
headlines. - Reduce needless lat/lon precision with Jabber messages (#656).
- Remove hard coded
nobodydatabase user for some internal API calls. - Remove matplotlib colormap shim and require matplotlib>=3.5.
- [SHEF] Make station ids longer than 8 chars non-fatal.
- Support geos 3.11 (#633).
- Support increased range and emit ValueError for too large range for
pyiem.plot.pretty_bins(#665). - Update
UPVTEC phenomena label to "Freezing Spray", removeZY.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 3 years ago
pyIEM - pyIEM 1.14.0
API Changes
- [SHEF] Permit one character SHEF physical codes (daryl gave up).
- [DS3505] Removed hacky metar/sql round trip code in NCEI ISH processor.
- [metarcollect] Break the internal API and storage for
iemidand how
iemaccess gets updated to allow for downstream changes. - [NetworkTable] Change internal data structure from dict to list for station
threading information (#645). - [observation] Adjusted the constructor to allow some things to be optional
and allow manual provision ofiemidandtzname.
New Features
- Add support for upcoming Snow Squall Warning impact tags (#493).
- Attempt to resolve a NWS UGC code when storing a LSR to the database (#637).
- Enhance G-AIRMET processing to better define icing and not create airmet
entries for multiple-level freezing airmets (#628). - Generalize autoplot context parsing for params starting with
_. - Support Center Weather Advisory (CWA) that uses lat/lon points.
- Update bundled NWS Counties/Zones to circa 13 Sep 2022 (#648).
Bug Fixes
- [windrose] Cleanup the title and diagnostic for windrose plots.
- Allow trailing space in UGC encoding line (#652).
- Correct decoding of 12 UTC timestamp in MND header.
- Ensure CF6 weather codes go to the database verbatim without float conv.
- Fix G-AIRMET decoding of multiple freezing levels airmet.
- Workaround a specified 12 AM UTC timestamp in NWS text products.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 4 years ago
pyIEM - pyIEM 1.13.0 release
API Changes
- Added
sqlalchemyas a hard package requirement. pyiem.nws.products.sawno longer writes un-used SAW text to database.- Refactor internal SHEF decoding such that
TextProductinstance has a seat
at the table when some acceptable parsing failures can happen. The functional
form ofprocess_messages_{a,b,e}is nowTextProduct,str. - Refactor internal VTEC API for creating jabber messages.
- Refactor
windrose_utilsand remove the positional argument cruft. - The XMPP channels assigned to VTEC products that are CONtinues, EXPires, or
CANcels was modified to append a-ACTion to the channel in the case of the
channels prefixed by thephenomena.significance. This will cut down on
the social media posts for products that are more mudane (#604).
New Features
- Add alpha control to
draw_usdm. - Add database storage of
purge_timefor VTEC products (#616). - Add parsing support for CWSU Center Weather Advisory (#573).
- Add option to
mcalc_feelsliketo supportmask_undefined. - Add
twitter_medialink for generic text products that have a polygon (#586). - Add
limit_by_doyoption towindrose_utilsto allow a day of year limit. - Add parser for SPC Watch Probabilities (WWP) product (#595).
- Add basic parser for SPC SEL Product.
- Allow
pyiem.nws.nwsliinstance to be subscriptable for iterop. - Support passing
linewidthstoMapPlot.contourf.
Bug Fixes
- [SHEF] Catch invalid nan values.
- [windrose] Fixed logic bug when
limit_by_doywas set and dates crossed
1 January. - Added some jitter to plotting labels for side-by-side WFOs.
- Fixed f-string formatting issue in SAW jabber message generator.
- Fixed missing
ENHandMDTfromspcpts.THRESHOLD_ORDER. - Fixed jabber/twitter message generation for a VTEC product with multiple
segments with the same vtec action (read tropical products). - Heat index is now computed without the presence of wind info (#623).
- Improved logic behind
pyiem.plot.util.pretty_bins, it no longer exactly
returns the specified number of bins, but tries to do the right thing! - Increase remark trimming for LSR tweets for more length safety.
- Stopped back-computing affected WFOs based on the UGCs found in a VTEC
product. This was causing more confusion than good (#615). - Support CHUT, PWT timezones in NWS products.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 4 years ago
pyIEM - pyIEM 1.12.0 Release
API Changes
- Bring bundled NWS zones database to 22 March 2022 release (#531).
New Features
- Add Guam to NWS WFO centric
pyiem.plot.geoplot.MapPlot. - Added VTEC product check for uniqueness of UGCs (#540).
- Introduce a Graphical AIRMET (G-AIRMET) decoder (#566).
Bug Fixes
- Allow provision of already created
matplotlib.Figureinstance into the
standardized layout generator.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 4 years ago
pyIEM - pyIEM 1.11.0 Release
API Changes
- Deprecate windrose plot
draw_logoas the constructor can now handle this
within the standardizedfigureconstructor.
New Features
- Add
util.get_sqlalchemy_connhelper to reduce IEM biolerplate. - Parse
snow depthfrom CLI products (#15).
Bug Fixes
- Correct for some edge cases found with parsing
ICE STORMLSR remarks. - Improve robustness of
DVSHEF encoding parsing. - Remove some abiquity with how the
windroseplot legend specifies ranges. - Support parsing
DYSHEF time encoding. - [SHEF] Workaround multiple
DH2400values in a message.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 4 years ago
pyIEM - pyIEM 1.10.0 Release
API Changes
- For
pyiem.plot.geoplot.fill_ugcschangednocbarkwarg todraw_colorbar. - Remove confusing
pyiem.nws.product.VTECProduct.db_yearattribute (#534). - Change the default log level to
WARNINGfor non-interactive shells and to
INFOfor interactive shells (#541).
New Features
- Add
pyiem.plot.geoplot.MapPlotkwarg ofaxes_positionto control where
the main axes is placed on the figure. - Python versions 3.8 through 3.10 are now actively tested and supported.
- Added
pyiem.util.get_dbconnstrhelper to return a database connection
string details.
Bug Fixes
- Correct logic for VTEC year referenced in links (#534).
- Fix ambiguous situation around the New Year's that could have two VTEC
ETNs active at the same time (#533). - Improve logic for "concerning" headline parsing from MCD/MPDs (#528).
- Cross checked IEM VTEC database and created missing
NWS_COLORSentries,
which cross references VTEC codes to NWS WaWA map colors. - The NWS has an ongoing issue (2017-present) with disseminating truncated
Tsuanmi products. These truncated products are dups to non-truncated ones.
Special code was added to abort processing of these when found. - A pandas 1.4.0 API problem was fixed.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 4 years ago
pyIEM - pyIEM 1.9.0 Release
Changelog
API Changes
- Replaced
cartopyusage with a custom axes class that manages amatplotlibaxes along with apyprojCRS instance. Aspects of using internal attributes withinpyiem.plot.MapPlotare perhaps broken downstream, but I know of no users of this API other than myself (#514). - Removed deprecated
pyiem.cscap_utils.get_sites_client. It would be nice to migrate this to updated Google API, but classic Google vaporware and such API does not exist. - Removed unused
pyiem.mrms.get_fn. - Usage of
descarteswas removed as it was un-necessary for this library.
New Features
- Added IEM specific ability to pass autoplot contexts into plotting and set things like the resolution and map sector (#519).
Bug Fixes
- Addressed upcoming Shapely 2.0 deprecations.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 4 years ago
pyIEM - pyIEM 1.8.0 Release
API Changes
pyiem.nws.product.TextProduct#get_product_idnow includes theBBBfield in the return string, when specified within the parsed text. This is necessary to fully describe products that may be issued twice within the same minute.- Removed the hacky
iemdb2.localdatabase failover concept that hopefully nobody else was somehow using. - Previously announced deprecations of
pyiem.nws.lsr.LSR.tweetandpyiem.plot.geoplot.windroseformally removed. - Announce deprecation of
pyiem.cscap_utils.get_sites_clientin v1.9.0.
New Features
- A pure python SHEF decoder
pyiem.nws.products.shef(#496). - Updated bundled NWS zones database to valid cira 10 Sep 2021.
Bug Fixes
- Improved logic for determination of TOR/FFW Emergency events by considering the tags as well (#491).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 4 years ago
pyIEM - pyIEM 1.7.0 Release
API Changes
- Update
MapPlot.drawcities()to no longer useminareaas a filter on
which cities are potentially labeled on the map. The bundled dataset was
updated on use a different upstream source. - Remove internal loading support of pickled pandas DataFrames. Twas bad idea.
pyiem.nws.ugc.UGC.nameis no longer allowed to beNone.
New Features
- Add
SPS.<state>channel for SPS Products. - Add
pyiem.plot.util.ramp2dfto load a bundled color ramp into a DataFrame. - Implement a parser of the WPC Excessive Rainfall Outlook (#13).
- For VTEC events with hydro forecast points, the
twitter_mediagenerated URL points to AHPS's flood forecast image. - Python 3.7+ is now routinely tested.
Bug Fixes
- Account for another SPC PTS edge case, le sigh.
- Gracefully handle a one or two point
polygonattempt from a NWS Product. - Removed hard-coded cartopy data path (#492).
- Rewrite SPC PTS parsing (again), but this time use @deeplycloudy suggested "Winding" algorithm.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 5 years ago
pyIEM - pyIEM 1.6.0 Release
API Changes
- Moved
pyiem.plot.geoplot.load_geodftopyiem.util.load_geodf. - Removed
dayattribute frompyiem.nws.products.spcpts.SPCPTSclass as it
was not accurate. - Introduced
pyiem.geom_utilto house generally useful geometry operations.
New Features
- Storm Prediction Center outlook parser now uses internal WFO geometries to
compute which WFOs are impacted by an outlook. - Introduce
util.web2ldm, which does a common IEM workflow of taking some
web resource, downloading it, and inserting into LDM. - Introduce
pyiem.htmlgenhelpers for generating HTML, of all things. - Add IEM threading accounting into
pyiem.network.Table. - Support provision of a
cmapto windrose plotting and have a more pleasing
default set of colors. - Register default
psycopg2adapters to hopefully preventnp.nanfrom
reaching the database.
Bug Fixes
- Matplotlib 3.4 is generally supported with
pytest-mpltests passing. - NWS County Warning Areas geometries updated to 10 Nov 2020 release.
- Corrected time stamp parsing for NBS MOS data at 21, 22, and 23Z.
- Fix overlay of Hawaii on
nwssectorGeoPlotwhen the resolution is
not the default. - Correct PIREP location parsing to use nautical miles vs miles (#442).
- Differentiate between TAF visibility over 6 miles and that of 6 miles. This
is currently hard coded as 6.01. (#449) - For now, silently not allow one point lines in SPC PTS processing.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 5 years ago
pyIEM - pyIEM 1.5.0 Release
API Changes
- Refactor mostly internal MapPlot feature plotting. This library does not
have a public API promise, so alas. Generally, this should not impact users
unless you were accessing internal geo-databases or using the bundled pickled
libraries directly. This should be low impact as for example, myiem
code repo required no changes for this (#402).
New Features
- Introduce a BUFKIT file reader.
pyiem.nws.bufkit.read_bufkit(#390). - Generalized
MapPlot.fill_{ugcs,states,climdiv,etc}now support provision
of colors viacolor=or combo offc=andec=. - Introduce
pyarrowas package requirement to read parquet files for
GeoPandas (#402). - Support parsing and database storage of TAF information (#377).
- Update bundled NWS counties/zones to be current on 30 March 2021.
- Backend database storage for SPC Outlooks has changed, please see repo
akrherz/iem-database for current schema.
Bug Fixes
- Update bundled
statesgeographies to include territories ofAS,PR,
VI,GU, andMP. - Implement tweet message truncation for SPS messages (#393).
- Add CLI database storage of
snow_normal(#396). - Support database insert of multi-segment SPS products (#399).
MapPlot.fill_ugcswas refactored to use genericpolygon_fill.- Correct how version is set during local development.
- Account for (E) usage in CLIRDU (#408).
- Rework how cartopy projections are handled (#418).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 5 years ago
pyIEM - pyIEM 1.4.0 Release
1.4.0 (9 March 2021)
The repo's master branch has been renamed main.
API changes
- While implementing the new NWS SVS, SVR, and TOR IBW tag changes (#253), the
attributes for thepyiem.nws.product#TextProductSegmentattributes subtly
changed. Thetornadodamagetagattribute is now justdamagetag. - Centralize logo plotting logic, this is a small API break, but I don't
suspect folks are using this code path (fa1e2ce).
New Features
- Special Weather Statements (SPS) products are now parsed for IBW tags (#253),
this required database schema updates with these products stored in an explicit
spstable. See
akrherz/iem-database repo. - Add warnings back for when unknown HVTEC NWSLIs are found (#375).
- Introduce
rasteriofor faster imshow overlays of NEXRAD composites. - Add
geoplot.MapPlot.overlay_roadcondto overlay Iowa Winter Road
Conditions. - Add
geoplot.MapPlot.overlay_nexradto overlay CONUS IEM NEXRAD mosaics. - Add util helpers for
mm2inchandc2f(#360). - Add
pyiem.plot.layouts.{figure,figure_axis}(#355).
Bug Fixes
- Properly parse NWS products that use a UTC Mass News Disseminator headline
(#381). - Fix contour gridding calculation for non-Plate Carree plots (#374).
- Major logic fix for how NWS fire weather zones are stored and used within
the library. Addedis_firewxflag tofill_ugcs(#374). - When self-intersecting polygons are found within NWS products, a
buffer(0)attempt is made to fix this (#378). - Fix off-by-one length calculation issue for LSR tweets (#371).
- Fix CONUS masking logic such that features like Cape Code are not masked
out (#365). - Account for invalid stray colons in CLI products (#364).
- Fix
ICE STORMLSR magnitude gleaning for /16th of an inch values (#362). - Fix PTS parsing regression (#358).
- Support integer lat/lon values in PIREPs (#357).
- Support AWIPS IDs that start with a number (#356).
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM Release 1.3.0
New Features and Bug Fixes. Hopefully no API changes!
- added
twitterboolean flag topyiem.geoplot.MapPlotto set
a twitter friendly resolution (1200x675). #346 - fixed database update logic for VTEC COR events. #347
- Puerto Rico, Virgin Islands are now a state in
pyiem.reference. - Add fancy pants logic to glean ice accumulation amounts of of
ICE STORMLocal Storm Reports. #351 - Fix bugs with AWIPS ID parsing logic. #352
- PIREPs that fail location parsing logic will get inserted into the
database with an empty geometry. Previously, they were dropped on
the floor. #353 - Add new plot layout feature for non-cartopy plots. #355
- Correct database issue for ALZ014. #355
- Add some metpy.unit helpers for unit conversion. #360
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM 1.2.0 Release
New features include
- #342 Add LSR channels per state per type
- #344 Add more plumbing to CLI processing
should be no public API changes.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM Release 1.1.0
Changes include:
- Updates to NWS counties/zones database for LWX
- NWS parsing bug fixes and improvements
- Store more LSR metadata in the database, requires a
schema update from iem-database repo.
There should not be any API changes since release 1.0.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM Release 1.0.0
The goal is to no longer break API until version 2.0.0!
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM 0.18.0 Release
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 5 years ago
pyIEM - pyIEM 0.17.0 Release
Changes since v0.16.0
- #254 Added support for parsing LAV, MEX MOS
- #263 Added support for parsing NBE, NBX MOS
- Support matplotlib 3.3.0
- #267 replace
pytzusage withbackports.zoneinfo - #272 added
pyiem.plots.get_cmaphelper to deal with matplotlib 3.3.0+ API complexity.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 6 years ago
pyIEM - pyIEM 0.16.0 Release
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 6 years ago
pyIEM - pyIEM Release 0.15.0
Note that pyiem.box_utils and pyiem.ftpsession will be removed in the next release.
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 6 years ago
pyIEM - pyIEM Release 0.14.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 6 years ago
pyIEM - pyIEM Release 0.12.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 7 years ago
pyIEM - pyIEM 0.11.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz about 7 years ago
pyIEM - pyIEM v0.10.0
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz over 7 years ago
pyIEM - pyIEM 0.9.1
Someday, I will make real releases, but until then, le sigh
Atmosphere - Meteorological Observation and Forecast
- Python
Published by akrherz almost 8 years ago