Rename environmental to environment and give it three subgroups - #476
Conversation
The name was the last of the three that did not match: the code said environmental, the generated reference said environment and the guides said Environment. Now they all say the same thing. The three subgroups follow how an environmental study is written. What the source emits is environment.sources: CNOSSOS road and rail, and the wind turbine. What the path does to it is environment.propagation: ISO 9613-1 and -2, ground effect and barriers, refraction. What the law makes of the result at the receiver is environment.assessment: ISO 1996-1 and -2, impulsive prominence, RD 1367/2007. Two modules lose a word their subgroup now says: atmospheric_refraction is propagation.refraction, and spanish_regulation is assessment.spain, which is the shape the next national code will take. The reference loses a cross-package exception with the rename. The wind turbine was documented under Aircraft and wind energy because that is where its audience was looking, and it lives with the environmental rating code; with a sources subgroup it can be documented where it lives. That section is Aircraft noise now and draws from one package, which leaves two sections in the whole taxonomy that deliberately span two parents. Nothing moves in the namespace: from phonometry import environment exports the same 165 names. Compatibility needed one thing the earlier splits did not: the package itself is an alias, so the shim of a renamed package has to serve the modules that moved out of it as well as the names that stayed. Twelve module paths and the package prefix keep working until 5.0.
There was a problem hiding this comment.
Sorry @jmrplens, your pull request is larger than the review limit of 150000 diff characters
|
Important Review skippedToo many files! This PR contains 123 files, which is 23 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (123)
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
You've reached the fair usage limit for the Bito Code Review Agent trial. Upgrade to a paid plan or contact support@bito.in for assistance. Learn more |
Reviewer's GuideRenames the File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Pull request overview
This PR renames the phonometry.environmental domain to phonometry.environment and reorganizes it into three subpackages (sources, propagation, assessment), while preserving backwards compatibility via import/attribute shims and updating the test suite and documentation to the new taxonomy.
Changes:
- Introduces
phonometry.environment.sources,.propagation, and.assessmentpackages and re-exports their public APIs fromphonometry.environmentand the top-levelphonometrynamespace. - Extends compatibility shims so
phonometry.environmental(and its former module paths) remain importable until 5.0. - Updates tests, reports/plots/scripts, and the generated/static documentation taxonomy to the new module layout and section naming.
Reviewed changes
Copilot reviewed 101 out of 106 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/labeler.yml | Renames the environment area label and updates globs to the new package paths. |
| CHANGELOG.md | Documents the environmental → environment rename, subgroups, and compatibility guarantees. |
| README.md | Updates the domain list entry to describe the new environment subgroups. |
| README_PYPI.md | Mirrors README domain description updates for PyPI. |
| docs/api-reference.md | Updates the public taxonomy description and migration notes in the docs. |
| docs/atmospheric-refraction.md | Updates doc prose to reference the renamed environment domain. |
| docs/environmental-levels.md | Updates examples/imports to phonometry.environment. |
| docs/ground-barriers.md | Updates doc prose to reference the renamed environment domain. |
| docs/impulse-prominence.md | Updates examples/imports to phonometry.environment. |
| docs/outdoor-propagation.md | Updates examples/imports to phonometry.environment. |
| docs/reverberation-prediction.md | Updates examples/imports to phonometry.environment. |
| docs/spanish-noise-regulation.md | Updates examples/imports to phonometry.environment. |
| docs/wind-turbine-noise.md | Updates examples/imports to phonometry.environment. |
| llms-full.txt | Updates generated link/index content for the new taxonomy. |
| llms.txt | Updates generated link/index content for the new taxonomy. |
| scripts/api_taxonomy.py | Updates taxonomy section contents/labels to the new environment module paths. |
| scripts/conformance_report.py | Updates imports to the new environment assessment/source module paths. |
| scripts/generate_api_docs.py | Updates the alias mapping used by API doc generation. |
| scripts/generate_graphs.py | Updates internal imports/constants to new module paths. |
| scripts/generate_reports.py | Updates report examples to the new environment module layout. |
| site/public/llms/llms-levels-weighting.txt | Updates generated LLM text to the new environment naming. |
| site/public/llms/llms-outdoor-sound.txt | Updates generated LLM text to the new environment naming. |
| site/public/llms/llms-simulation.txt | Updates generated LLM text to the new environment naming. |
| site/src/content/docs/es/guides/atmospheric-refraction.mdx | Updates Spanish guide prose/examples to phonometry.environment. |
| site/src/content/docs/es/guides/environmental-levels.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/es/guides/ground-barriers.mdx | Updates Spanish guide prose to phonometry.environment. |
| site/src/content/docs/es/guides/impulse-prominence.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/es/guides/outdoor-propagation.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/es/guides/reverberation-prediction.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/es/guides/spanish-noise-regulation.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/es/guides/wind-turbine-noise.mdx | Updates Spanish guide examples to phonometry.environment. |
| site/src/content/docs/guides/atmospheric-refraction.mdx | Updates guide prose/examples to phonometry.environment. |
| site/src/content/docs/guides/environmental-levels.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/guides/ground-barriers.mdx | Updates guide prose to phonometry.environment. |
| site/src/content/docs/guides/impulse-prominence.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/guides/outdoor-propagation.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/guides/reverberation-prediction.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/guides/spanish-noise-regulation.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/guides/wind-turbine-noise.mdx | Updates guide examples to phonometry.environment. |
| site/src/content/docs/reference/api/building/spanish-building-code.md | Updates cross-links to the renamed Spain regulation module. |
| site/src/content/docs/reference/api/environment/air-absorption.md | Updates title/module path for the new propagation location. |
| site/src/content/docs/reference/api/environment/cnossos-rail.md | Updates title/module path for the new sources location. |
| site/src/content/docs/reference/api/environment/cnossos-road.md | Updates title/module path for the new sources location. |
| site/src/content/docs/reference/api/environment/ground-barriers.md | Updates title/module path for the new propagation location. |
| site/src/content/docs/reference/api/environment/impulse-prominence.md | Updates title/module path for the new assessment location. |
| site/src/content/docs/reference/api/environment/impulsive-sound.md | Updates title/module path for the new assessment location. |
| site/src/content/docs/reference/api/environment/measurement.md | Updates title/module path for the new assessment location. |
| site/src/content/docs/reference/api/environment/outdoor-propagation.md | Updates title/module path for the new propagation location. |
| site/src/content/docs/reference/api/environment/rating.md | Updates title/module path for the new assessment location. |
| site/src/content/docs/reference/api/environment/refraction.md | Adds/updates the renamed refraction page and links. |
| site/src/content/docs/reference/api/environment/spain.md | Adds/updates the renamed Spain regulation page and links. |
| site/src/content/docs/reference/api/environment/wind-turbine.md | Updates the wind turbine page to the new sources location and links. |
| site/src/content/docs/reference/api/index.md | Updates the API index section and module listing for the new taxonomy. |
| site/src/content/docs/reference/api/psychoacoustics/tone-audibility.md | Updates cross-links to the renamed environment measurement module. |
| site/src/generated/api-sidebar.mjs | Updates the API sidebar items/labels for renamed pages and section move. |
| src/phonometry/init.py | Rewires top-level re-exports to the new environment subpackages. |
| src/phonometry/_compat.py | Extends module-move shims and namespace behavior for the environment rename. |
| src/phonometry/_plot/environmental.py | Updates typing imports and internal references to new module locations. |
| src/phonometry/_plot/geometry.py | Updates typing import path for barrier plotting types. |
| src/phonometry/_report/iec61400.py | Updates report renderer typing references to new wind turbine module path. |
| src/phonometry/_report/iso1996_impulse.py | Updates renderer typing references to new impulse prominence module path. |
| src/phonometry/_report/iso1996_tone.py | Updates lazy import path to new measurement module. |
| src/phonometry/_report/iso9613.py | Updates report renderer typing and imports to new propagation module paths. |
| src/phonometry/_report/rd1367.py | Updates typing references to new Spain assessment module. |
| src/phonometry/aircraft/atmospheric_absorption.py | Updates imports for ISO 9613-1 attenuation to the new propagation module path. |
| src/phonometry/aircraft/rotorcraft_noise.py | Updates imports/references to new air absorption module path. |
| src/phonometry/building/spanish_building_code.py | Updates cross-reference to the renamed Spain regulation module. |
| src/phonometry/environment/init.py | Rebuilds the environment facade module to re-export from the three subpackages. |
| src/phonometry/environment/assessment/init.py | New assessment package exports for rating/measurement/regulatory APIs. |
| src/phonometry/environment/assessment/impulse_prominence.py | Updates internal imports to new package depth. |
| src/phonometry/environment/assessment/impulsive_sound.py | Updates internal imports to new package depth. |
| src/phonometry/environment/assessment/measurement.py | Updates internal imports to new package depth. |
| src/phonometry/environment/assessment/rating.py | New rating module under assessment (ISO 1996-1 descriptors). |
| src/phonometry/environment/assessment/spain.py | Renames/moves Spanish regulation module and updates internal imports. |
| src/phonometry/environment/propagation/init.py | New propagation package exports for ISO 9613/refraction/barriers APIs. |
| src/phonometry/environment/propagation/air_absorption.py | Updates internal imports to new package depth. |
| src/phonometry/environment/propagation/ground_barriers.py | Updates internal imports to new package depth. |
| src/phonometry/environment/propagation/outdoor_propagation.py | Updates internal imports to new package depth. |
| src/phonometry/environment/propagation/refraction.py | Renames/moves refraction module and updates internal imports. |
| src/phonometry/environment/sources/init.py | New sources package exports for CNOSSOS and wind turbine APIs. |
| src/phonometry/environment/sources/cnossos_rail.py | Updates internal imports to new package depth. |
| src/phonometry/environment/sources/cnossos_road.py | Updates internal imports to new package depth. |
| src/phonometry/environment/sources/wind_turbine.py | Moves wind turbine module and updates internal imports/cross-references. |
| src/phonometry/psychoacoustics/tone_audibility.py | Updates docstring cross-references to the renamed measurement module. |
| tests/aircraft/test_aircraft_atmospheric_absorption.py | Updates imports to new air absorption module path. |
| tests/aircraft/test_rotorcraft_noise.py | Updates imports to new air absorption module path. |
| tests/environment/assessment/test_impulse_prominence.py | Updates module import path for assessment impulse prominence. |
| tests/environment/assessment/test_impulse_prominence_report.py | Updates module import path for assessment impulse prominence reporting. |
| tests/environment/assessment/test_impulsive_sound.py | Updates module import path for assessment impulsive sound. |
| tests/environment/assessment/test_measurement.py | Updates import path for EnvironmentalMeasurementWarning. |
| tests/environment/assessment/test_rating.py | New tests for lden/ldn/composite_rating_level. |
| tests/environment/assessment/test_rd1367_report.py | Updates import path for Spain assessment module. |
| tests/environment/assessment/test_spain.py | Updates import path for Spain assessment module. |
| tests/environment/propagation/test_air_absorption.py | Updates import path for propagation air absorption. |
| tests/environment/propagation/test_outdoor_propagation.py | Updates import path for propagation outdoor propagation internals. |
| tests/environment/propagation/test_refraction.py | Updates import path for propagation refraction/ground effect. |
| tests/environment/sources/test_cnossos_rail.py | Updates import path for sources CNOSSOS rail. |
| tests/environment/sources/test_cnossos_road.py | Updates import path for sources CNOSSOS road and propagation handoff. |
| tests/environment/sources/test_wind_turbine.py | Updates import path for sources wind turbine. |
| tests/environment/sources/test_wind_turbine_tonality_report.py | Updates import path for sources wind turbine reporting. |
| tests/environment/test_environment_plot_i18n.py | Updates imports to new sources/propagation modules. |
| tests/reference_data.py | Updates reference doc comment for the new CNOSSOS rail module path. |
| tests/test_deprecated_aliases.py | Updates alias tests to include the renamed environment package prefix. |
| tests/test_package_architecture.py | Updates allowed dependency edges to use environment instead of environmental. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| The [ISO 9613-2 general method](outdoor-propagation.md) folds the ground and | ||
| barrier terms into tabulated, energy-based corrections. This page covers the | ||
| underlying wave acoustics in `phonometry.environmental.ground_barriers`: the | ||
| underlying wave acoustics in `phonometry.environment.ground_barriers`: the |
There was a problem hiding this comment.
Right, and it was the same slip in six places: the sweep renamed the package and left the subgroup out, so the path it produced never existed. Both guides name the full module in all three copies now, and a check over every backticked module label in the documentation confirms each one resolves as an import. Fixed in 4890e9e.
| - API reference: [`environment.impulse_prominence`](/phonometry/reference/api/environment/impulse-prominence/). | ||
| - API reference: [`environmental.impulsive_sound`](/phonometry/reference/api/environment/impulsive-sound/). |
There was a problem hiding this comment.
Both fixed, and the second one needed a further pass: environment.impulse_prominence still left out the subgroup it moved into. Every backticked module label in the guides is now checked to resolve as an import, so a label naming a path that does not exist cannot survive. Fixed in 4890e9e and dce4311.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #476 +/- ##
=======================================
Coverage 96.99% 96.99%
=======================================
Files 258 261 +3
Lines 38519 38547 +28
=======================================
+ Hits 37362 37390 +28
Misses 1157 1157 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Numerical conformance report✅ 533/533 conformance checks pass across 57 domains and 362 standards - filters class 1 - weightings within IEC 61672-1 class 1. Each row pins a standard clause to its expected normative value and the value the library computes. Every section below is collapsible and stays collapsed while all of its rows pass; a section with any failing row opens automatically. ✅ Numerical validation - filters & weightings: class showcase (IEC 61260-1 · IEC 61672-1 · ISO 7196)IEC 61260-1:2014 class per filter architecture (order 6, one-third-octave, 100 Hz-10 kHz, fs = 48 kHz). For each architecture the table shows, at its binding band, the measured relative attenuation and the class-1 limit it must clear, so the number and the range it must sit in are both visible. A positive margin means the acceptance limits are met with that much room.
Only Butterworth (the library default) and Chebyshev-II are class-compliant architectures. Chebyshev-I and elliptic trade the mask for passband ripple, and Bessel for a maximally-flat group delay (soft rolloff); they cannot satisfy the IEC 61260-1 Class 1/2 attenuation mask by construction, so they are labelled By design - this is expected, not a failure or regression. Frequency-weighting conformance (A/C: IEC 61672-1 Table 3; G: ISO 7196 A.3). The max deviation from nominal is informational (it falls at a frequency extreme where the tolerance is widest and asymmetric); compliance is judged at the binding frequency - the one with the least headroom - where the deviation, the applicable tolerance band and the headroom are shown together.
✅ Filters & weightings: 100% (10/10)
✅ Levels & dosimetry: 100% (9/9)
✅ Room & building acoustics: 100% (72/72)
✅ Room acoustics: 100% (16/16)
✅ Psychoacoustics: 100% (14/14)
✅ Speech transmission (IEC 60268-16): 100% (10/10)
✅ System measurement (Golay / Kirkeby / Mueller-Massarani): 100% (5/5)
✅ Intensity & sound power: 100% (10/10)
✅ Building prediction & uncertainty: 100% (15/15)
✅ Outdoor propagation & occupational exposure: 100% (10/10)
✅ Materials: absorption, airflow & impedance: 100% (6/6)
✅ Scattering & diffusion (ISO 17497): 100% (14/14)
✅ In-situ road absorption (ISO 13472): 100% (3/3)
✅ Precision sound power (ISO 3745 / 9614-3): 100% (4/4)
✅ Human vibration (ISO 8041 / 2631 / 5349): 100% (15/15)
✅ Speech intelligibility (ANSI S3.5-1997): 100% (24/24)
✅ Objective intelligibility (STOI / ESTOI): 100% (3/3)
✅ Impulsive-sound prominence (NT ACOU 112): 100% (2/2)
✅ Impulsive-sound prominence (ISO/PAS 1996-3): 100% (2/2)
✅ Room noise (ANSI S12.2-2019): 100% (3/3)
✅ Hearing threshold (ISO 7029 / ISO 389-7): 100% (3/3)
✅ Measurement uncertainty (GUM / Supplement 1): 100% (7/7)
✅ Noise-induced hearing loss (ISO 1999): 100% (6/6)
✅ Multiple-shock whole-body vibration (ISO 2631-5): 100% (6/6)
✅ Sound absorption in enclosed spaces (EN 12354-6): 100% (2/2)
✅ Prominent discrete tones (ECMA-418-1): 100% (2/2)
✅ Tonal audibility (ISO/PAS 20065): 100% (11/11)
✅ Psychoacoustic annoyance & fluctuation strength (Fastl & Zwicker): 100% (3/3)
✅ Electroacoustics: distortion & frequency response: 100% (20/20)
✅ Calibrated spectral analysis (Bendat & Piersol): 100% (12/12)
✅ Multiple-input coherence (Bendat & Piersol): 100% (5/5)
✅ Time-frequency analysis (Bendat & Piersol): 100% (3/3)
✅ Correlation, time delay and envelope (B&P / Knapp & Carter): 100% (7/7)
✅ Cepstrum, liftering and envelope spectrum (Havelock / B&P): 100% (3/3)
✅ Time synchronous averaging (McFadden 1987): 100% (5/5)
✅ Data qualification and Rice statistics (Bendat & Piersol): 100% (8/8)
✅ Underwater acoustics (ISO 18405/17208/18406): 100% (6/6)
✅ Underwater sound propagation (transmission loss): 100% (16/16)
✅ Underwater propagation regimes (Weston flux theory): 100% (3/3)
✅ Marine-mammal auditory weighting (NMFS / Southall): 100% (4/4)
✅ Underwater numerical propagation (modes / rays / PE): 100% (4/4)
✅ Aircraft noise (ICAO Annex 16 / IEC 61265): 100% (15/15)
✅ Rotorcraft noise (ECAC Doc 32 / NORAH2): 100% (12/12)
✅ CNOSSOS-EU road source (Directive 2002/49/EC Annex II): 100% (6/6)
✅ Wind-turbine noise (IEC 61400-11): 100% (3/3)
✅ Porous & multilayer absorbers (Mechel / Bies / Cox & D'Antonio): 100% (20/20)
✅ Slow-sound perfect absorbers (Jimenez et al. Appl. Sci. 2017): 100% (3/3)
✅ Program loudness (ITU-R BS.1770 / EBU R 128): 100% (8/8)
✅ 2D FDTD wave simulation (Attenborough & Van Renterghem 2021, Ch. 4): 100% (4/4)
✅ Swept-sine distortion & phase utilities (Farina / Novak): 100% (7/7)
✅ Spherical ground & barriers (Attenborough / Salomons / Bies): 100% (7/7)
✅ Panel & aperture sound insulation (Bies / Hopkins / Cremer): 100% (17/17)
✅ Bending-wave plate-junction transmission (Cremer / Craik / Hopkins): 100% (6/6)
✅ Atmospheric refraction (Salomons rays / GFPE): 100% (3/3)
✅ Electroacoustics: 100% (9/9)
✅ Industrial noise control: 100% (22/22)
✅ CNOSSOS-EU railway source (Directive 2002/49/EC Annex II): 100% (8/8)
Tests & coverage — 47748 tests, 0 failures (✅ all green)
Conformance harness: |
Eight findings, the first of which forked the package in two. A renamed package is an alias module, and the alias delegated every missing attribute to the target, `__path__` included. That handed the import machinery the real package's search path, so `import phonometry.environmental.propagation` built a second, independent copy of every submodule: same source, distinct classes, isinstance failing across the two spellings, pickles not round tripping, and no notice at all on the way in, since that route never reaches the delegating hook. It also made `from phonometry.environmental import lden` warn three times, because the from-import probes `__path__` first. The alias now refuses that one attribute, which is enough: it serves the modules registered for it and nothing else, and there is a test that says so. The generated llms dumps were a regeneration behind and still taught `from phonometry import environmental`. Two guides named `phonometry.environment.atmospheric_refraction` and `.ground_barriers`, paths that never existed: the sweep had renamed the package and not the subgroup. Eighteen pages had their API link targets updated and their labels left naming the old module. The figure generator kept one namespace import in the old spelling, the last one in the file. Twelve prose citations pointed at files this rename moved, including four source links in the errata page that the transplant carries into both site pages, and the evidence table of "Why phonometry". Nine more were already broken before this branch, from the 3.2 modularization, and are fixed with them. The migration note in the curated API table had been mangled by two successive global renames until it said a path moved to itself and called a current path deprecated. It is a table now, one row per generation, which is harder to corrupt and easier to read. Also: `_plot/environmental.py` is `_plot/environment.py`, since every other renderer matches its domain; the frozen 3.2 snapshot gets its `environmental` row back, because a frozen list of pre-3.2 paths must name the paths that existed then; and the duplication exclusion that still named `metrology/core.py`, gone since the metrology split, names `filters/core.py`.
SonarCloud's duplicated-literal rule on the moved file: the axis labels the renderers share become module constants keyed the same way in the translation table, and the two legend placements join the two that already live in the shared plotting module.
The constants were written as raw strings and the call sites were not, so two of the eight duplications survived the first pass. Neither string has an escape, so both spellings collapse into one constant.
|
You've reached the fair usage limit for the Bito Code Review Agent trial. Upgrade to a paid plan or contact support@bito.in for assistance. Learn more |
Two impulse-prominence bullets printed environment.impulse_prominence, which is a module of environment.assessment. Every backticked module label in the guides now resolves as an import.
|
|
You've reached the fair usage limit for the Bito Code Review Agent trial. Upgrade to a paid plan or contact support@bito.in for assistance. Learn more |



What and why
The name was the last of the three that did not match: the code said
environmental, the generated reference saidenvironmentand the guides said Environment. Now they all say the same thing.The three subgroups follow how an environmental study is written:
environment.sources: what the source emits. CNOSSOS-EU road and rail, and the wind turbine.environment.propagation: what the path does to it. ISO 9613-1 and -2, ground effect and barriers, refraction by ray tracing and the parabolic equation.environment.assessment: what the law makes of the result at the receiver. ISO 1996-1 and -2, impulsive prominence, RD 1367/2007.Two modules lose a word their subgroup now says:
atmospheric_refractionispropagation.refraction, andspanish_regulationisassessment.spain, which is the shape the next national code will take.What it settles
The reference loses a cross-package exception. The wind turbine was documented under "Aircraft and wind energy" because that is where its audience was looking, while the module lived with the environmental rating code. With a
sourcessubgroup it can be documented where it lives, so that section is "Aircraft noise" now and draws from one package. Two sections in the whole taxonomy still deliberately span two parents:filters, which adds the package top level, andpower, which documents the IEC 61043 class check with the intensity chain it verifies.Compatibility needed one thing the earlier splits did not. The package itself is an alias, so the shim of a renamed package has to serve the modules that moved out of it as well as the names that stayed:
phonometry.environmental.wind_turbine_noiseis not an attribute ofenvironmentany more, it is an alias of its own. Twelve module paths and the package prefix keep working until 5.0, andfrom phonometry import environmentexports the same 165 names.Validation
No new computation: this moves and renames code. The suite passes (7934 passed, 23 skipped) and the conformance report, the committed figures and the example fiches are byte-for-byte identical to
main.Checklist
Ran locally, same as CI:
ruff check .mypy src scriptsbandit -r srcpytest -qRegenerated where this change touches them:
make conformance(no diff)make api-docs(the three renamed pages and the section move, nothing else)make llmscheck_reports.pyandcheck_figures.py(no diff)make pypi-readmeafter editingREADME.mdmake snippetsAlways:
.github/labeler.yml, and the label with it[Unreleased]Also run: the site builds clean with the link validator green.
Summary by Sourcery
Rename the environmental acoustics package to
environmentand reorganize its modules intosources,propagation, andassessmentsubpackages while preserving the public namespace and adding compatibility shims.Enhancements:
environment.sources,environment.propagation, andenvironment.assessmentsubdomains and centralize their exports in new__init__modules.spain).Documentation:
environmentinstead ofenvironmental, document the new subpackage layout, and point links to the updated reference locations.Tests:
environmental→environmenttransition.Chores:
phonometry.environmental*imports remain valid until 5.0, including module-path aliases and attribute shims for moved modules.