All notable changes to this library are documented in this file.
- Clarify in CI environment that
fionais not an actual dependency. - Require python 3.11+
- Add
pyiem.reference.StationAttributes.HAS_PHOURconstant. - Added crude bounds checking within
pyiem.observationto prevent out of reasonable bounds data from going to the database. - 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 CI testing to include python=3.14
- Address Pandas 4 deprecation with
copyparameter inastype. - Increase whitespace forgiveness of DSM parser.
- Enforce a SHEF data model limit of 8 characters for a station identifier.
- Ween off
domain=nomenclature for the default IEMRE domain.
- Add an IEMRE
CONUSalias that points back to the default domain="". - Add IEM autoplot alias option to allow for legacy variable migration.
- Account for a corrupted HRRR bufkit file found in MTArchive.
- Correct LSR location parsing for Guam and Pago Pago.
- 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: TAFReporttoprod.data: list[TAFReport](#913).
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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).
- Map
runneruser tomesonetfor CI database support. - Refactored PIREP data model to
pyiem.models.pirep.
- 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.
- Attempt more robust NWS product headline gleaning.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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, raw
product_idvalues are stored, which can be used against IEM web services to get the raw text. (#857)
- 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.
- Allow for pydantic field validation to work when there's legacy
yearvsyear1present. - 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- [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 enforce
SHEFElementpydantic validation.
- 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+.
- 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).
- 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.
- 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
corresponding
geometry_layersmultipolygon now exists to hold the non cookie cutted polygon (#738).
- 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).
- 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.
- 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.
- 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.
- 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.
- [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 of
iemidandtzname.
- 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).
- [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.
- 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).
- 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.
- [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.
- Bring bundled NWS zones database to 22 March 2022 release (#531).
- 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).
- Allow provision of already created
matplotlib.Figureinstance into the standardized layout generator.
- Deprecate windrose plot
draw_logoas the constructor can now handle this within the standardizedfigureconstructor.
- Add
util.get_sqlalchemy_connhelper to reduce IEM biolerplate. - Parse
snow depthfrom CLI products (#15).
- 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.
- 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 toINFOfor interactive shells (#541).
- 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.
- 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.
- 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.
- Added IEM specific ability to pass autoplot contexts into plotting and set things like the resolution and map sector (#519).
- Addressed upcoming Shapely 2.0 deprecations.
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.
- A pure python SHEF decoder
pyiem.nws.products.shef(#496). - Updated bundled NWS zones database to valid cira 10 Sep 2021.
- Improved logic for determination of TOR/FFW Emergency events by considering the tags as well (#491).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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, my
iemcode repo required no changes for this (#402).
- 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.
- 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).
The repo's master branch has been renamed main.
- While implementing the new NWS SVS, SVR, and TOR IBW tag changes (#253), the
attributes for the
pyiem.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).
- 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).
- 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. Added
is_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).