Skip to content

Conversation

@andrewfullard
Copy link
Contributor

@andrewfullard andrewfullard commented May 6, 2025

📝 Description

Type: | 🚀 feature

This PR adds photoionization and recombination rates calculations and population solvers to replace the current NLTE implementation in the near future. The classes are designed to work as standalone modules where possible.

It relies on the merge of #2896 and related Carsus PRs

Also relies on tardis-sn/tardis-regression-data#50 for test data

🚦 Testing

How did you test these changes?

  • Testing pipeline
  • Other method (describe)
  • My changes can't be tested (explain why)

☑️ Checklist

  • I requested two reviewers for this pull request
  • I updated the documentation according to my changes
  • I built the documentation by applying the build_docs label

Note: If you are not allowed to perform any of these actions, ping (@) a contributor.

@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@tardis-bot
Copy link
Contributor

tardis-bot commented May 6, 2025

*beep* *bop*
Hi human,
I ran ruff on the latest commit (6fb6334).
Here are the outputs produced.
Results can also be downloaded as artifacts here.
Summarised output:

Details
110303	       	[ ] syntax-error
 129	W293   	[ ] blank-line-with-whitespace
 118	E701   	[ ] multiple-statements-on-one-line-colon
 102	F405   	[ ] undefined-local-with-import-star-usage
  96	W291   	[ ] trailing-whitespace
  49	COM818 	[ ] trailing-comma-on-bare-tuple
  34	E902   	[ ] io-error
  34	F401   	[ ] unused-import
  26	I001   	[*] unsorted-imports
  16	W292   	[ ] missing-newline-at-end-of-file
  15	E702   	[ ] multiple-statements-on-one-line-semicolon
  15	F821   	[ ] undefined-name
  13	G004   	[ ] logging-f-string
   6	E402   	[ ] module-import-not-at-top-of-file
   6	UP031  	[ ] printf-string-formatting
   5	D204   	[*] incorrect-blank-line-after-class
   5	UP015  	[*] redundant-open-modes
   4	W191   	[ ] tab-indentation
   4	F811   	[ ] redefined-while-unused
   3	E703   	[ ] useless-semicolon
   3	PLW0127	[ ] self-assigning-variable
   3	RET505 	[*] superfluous-else-return
   2	F403   	[ ] undefined-local-with-import-star
   2	PLW0128	[ ] redeclared-assigned-name
   2	RET506 	[*] superfluous-else-raise
   1	E712   	[ ] true-false-comparison
   1	E722   	[ ] bare-except
   1	F541   	[*] f-string-missing-placeholders
   1	INP001 	[ ] implicit-namespace-package
   1	NPY201 	[ ] numpy2-deprecation
   1	PGH004 	[ ] blanket-noqa
   1	PLC0414	[ ] useless-import-alias
   1	RUF015 	[ ] unnecessary-iterable-allocation-for-first-element
   1	RUF021 	[*] parenthesize-chained-operators
   1	TRY300 	[ ] try-consider-else
   1	UP008  	[ ] super-call-with-parameters
   1	UP009  	[*] utf8-encoding-declaration
   1	UP030  	[ ] format-literals
   1	UP032  	[*] f-string
   1	UP034  	[*] extraneous-parentheses
Found 111010 errors.
[*] 84 fixable with the `--fix` option (38 hidden fixes can be enabled with the `--unsafe-fixes` option).

Complete output(might be large):

Details
docs/conf.py:1:1: UP009 [*] UTF-8 encoding declaration is unnecessary
docs/conf.py:27:1: I001 [*] Import block is un-sorted or un-formatted
docs/conf.py:30:8: F401 [*] `tardis` imported but unused
docs/conf.py:37:43: PGH004 Use specific rule codes when using `noqa`
docs/conf.py:47:27: UP015 [*] Unnecessary mode argument
docs/conf.py:68:1: F405 `exclude_patterns` may be undefined, or defined from star imports
docs/conf.py:69:1: F405 `exclude_patterns` may be undefined, or defined from star imports
docs/conf.py:70:1: F405 `exclude_patterns` may be undefined, or defined from star imports
docs/conf.py:71:1: F405 `exclude_patterns` may be undefined, or defined from star imports
docs/conf.py:72:1: F405 `exclude_patterns` may be undefined, or defined from star imports
docs/conf.py:142:1: W293 Blank line contains whitespace
docs/conf.py:177:1: W293 Blank line contains whitespace
docs/conf.py:194:13: UP030 Use implicit references for positional format fields
docs/conf.py:194:13: UP032 [*] Use f-string instead of `format` call
docs/conf.py:221:1: E402 Module level import not at top of file
docs/conf.py:293:4: E712 Avoid equality comparisons to `True`; use `toml_config_tool_dict["tardis"]['edit_on_github']:` for truth checks
docs/conf.py:315:1: E402 Module level import not at top of file
docs/conf.py:367:1: E402 Module level import not at top of file
docs/conf.py:382:37: UP015 [*] Unnecessary modes, use `w`
docs/conf.py:397:41: UP015 [*] Unnecessary modes, use `w`
docs/conf.py:412:37: UP015 [*] Unnecessary modes, use `w`
docs/physics/pyplot/lte_ionization_balance.py:1:1: I001 [*] Import block is un-sorted or un-formatted
docs/physics/pyplot/lte_ionization_balance.py:1:21: F401 [*] `pathlib.Path` imported but unused
docs/physics/pyplot/lte_ionization_balance.py:22:31: F821 Undefined name `atom_fname`
docs/physics/pyplot/lte_ionization_balance.py:73:9: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/lte_ionization_balance.py:74:15: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/nebular_ionization_balance.py:1:1: I001 [*] Import block is un-sorted or un-formatted
docs/physics/pyplot/nebular_ionization_balance.py:33:18: F821 Undefined name `plasma`
docs/physics/pyplot/nebular_ionization_balance.py:71:9: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/nebular_ionization_balance.py:72:15: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/nebular_ionization_balance.py:117:9: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/nebular_ionization_balance.py:118:15: UP031 Use format specifiers instead of percent format
docs/physics/pyplot/plot_mu_in_out_packet.py:1:1: F403 `from pylab import *` used; unable to detect undefined names
docs/physics/pyplot/plot_mu_in_out_packet.py:1:1: I001 [*] Import block is un-sorted or un-formatted
docs/physics/pyplot/plot_mu_in_out_packet.py:5:1: PLW0127 Self-assignment of variable `x`
docs/physics/pyplot/plot_mu_in_out_packet.py:5:4: PLW0127 Self-assignment of variable `y`
docs/physics/pyplot/plot_mu_in_out_packet.py:5:8: PLW0128 Redeclared variable `x` in assignment
docs/physics/pyplot/plot_mu_in_out_packet.py:5:11: PLW0128 Redeclared variable `y` in assignment
docs/physics/pyplot/plot_mu_in_out_packet.py:5:15: F405 `mgrid` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:10:1: F405 `xlabel` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:11:1: F405 `ylabel` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:12:1: F405 `imshow` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:12:8: F405 `np` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:13:1: F405 `colorbar` may be undefined, or defined from star imports
docs/physics/pyplot/plot_mu_in_out_packet.py:14:1: F405 `show` may be undefined, or defined from star imports
tardis/base.py:106:13: PLW0127 Self-assignment of variable `atom_data`
tardis/io/logger/logger.py:1:1: I001 [*] Import block is un-sorted or un-formatted
tardis/io/logger/logger.py:8:23: F401 [*] `functools.lru_cache` imported but unused
tardis/io/logger/logger.py:23:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:38:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:43:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:79:5: D204 [*] 1 blank line required after class docstring
tardis/io/logger/logger.py:80:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:116:5: D204 [*] 1 blank line required after class docstring
tardis/io/logger/logger.py:117:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:119:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:148:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:170:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:175:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:186:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:193:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:208:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:212:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:241:1: W293 [*] Blank line contains whitespace
tardis/io/logger/logger.py:253:5: D204 [*] 1 blank line required after class docstring
tardis/io/logger/logger.py:254:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:256:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:275:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:284:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:299:21: G004 Logging statement uses f-string
tardis/io/logger/logger.py:361:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:373:1: W293 [*] Blank line contains whitespace
tardis/io/logger/logger.py:380:1: W293 [*] Blank line contains whitespace
tardis/io/logger/logger.py:386:1: W293 [*] Blank line contains whitespace
tardis/io/logger/logger.py:391:5: D204 [*] 1 blank line required after class docstring
tardis/io/logger/logger.py:392:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:403:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:408:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:418:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:421:1: W293 Blank line contains whitespace
tardis/io/logger/logger.py:432:1: W293 Blank line contains whitespace
tardis/io/logger/logger_widget.py:1:1: E902 No such file or directory (os error 2)
tardis/plasma/equilibrium/rates/__init__.py:1:1: I001 [*] Import block is un-sorted or un-formatted
tardis/plasma/equilibrium/rates/__init__.py:2:5: F401 `tardis.plasma.equilibrium.rates.collision_strengths.UpsilonCMFGENSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:3:5: F401 `tardis.plasma.equilibrium.rates.collision_strengths.UpsilonRegemorterSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:6:5: F401 `tardis.plasma.equilibrium.rates.collisional_ionization_rates.CollisionalIonizationRateSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:9:5: F401 `tardis.plasma.equilibrium.rates.collisional_ionization_strengths.CollisionalIonizationSeaton` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:12:5: F401 `tardis.plasma.equilibrium.rates.collisional_rates.ThermalCollisionalRateSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:15:5: F401 `tardis.plasma.equilibrium.rates.photoionization_rates.AnalyticPhotoionizationRateSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:16:5: F401 `tardis.plasma.equilibrium.rates.photoionization_rates.EstimatedPhotoionizationRateSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:19:5: F401 `tardis.plasma.equilibrium.rates.photoionization_strengths.AnalyticPhotoionizationCoeffSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:20:5: F401 `tardis.plasma.equilibrium.rates.photoionization_strengths.EstimatedPhotoionizationCoeffSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:21:5: F401 `tardis.plasma.equilibrium.rates.photoionization_strengths.SpontaneousRecombinationCoeffSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:22:5: F401 `tardis.plasma.equilibrium.rates.photoionization_strengths.AnalyticCorrectedPhotoionizationCoeffSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/rates/__init__.py:25:5: F401 `tardis.plasma.equilibrium.rates.radiative_rates.RadiativeRatesSolver` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/plasma/equilibrium/tests/test_ion_populations.py:5:8: F401 [*] `pytest` imported but unused
tardis/plasma/properties/hydrogen_continuum.py:131:13: F821 Undefined name `elemental_number_density`
tardis/plasma/properties/hydrogen_continuum.py:136:13: F821 Undefined name `partition_function`
tardis/plasma/properties/hydrogen_continuum.py:137:13: F821 Undefined name `boltzmann_factor`
tardis/plasma/properties/property_collections.py:1:1: F403 `from tardis.plasma.properties import *` used; unable to detect undefined names
tardis/plasma/properties/property_collections.py:10:9: F405 `DilutePlanckianRadField` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:11:9: F405 `NumberDensity` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:12:9: F405 `TimeExplosion` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:13:9: F405 `AtomicData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:14:9: F405 `JBlues` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:15:9: F405 `LinkTRadTElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:16:9: F405 `HeliumTreatment` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:17:9: F405 `ContinuumInteractionSpecies` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:18:9: F405 `NLTEIonizationSpecies` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:19:9: F405 `NLTEExcitationSpecies` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:24:9: F405 `TRadiative` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:25:9: F405 `DilutionFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:26:9: F405 `BetaRadiation` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:27:9: F405 `Levels` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:28:9: F405 `Lines` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:29:9: F405 `PartitionFunction` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:30:9: F405 `GElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:31:9: F405 `IonizationData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:32:9: F405 `LinesLowerLevelIndex` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:33:9: F405 `LinesUpperLevelIndex` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:34:9: F405 `StimulatedEmissionFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:35:9: F405 `SelectedAtoms` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:36:9: F405 `ElectronTemperature` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:37:9: F405 `ThermalLevelBoltzmannFactorLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:38:9: F405 `ThermalLTEPartitionFunction` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:39:9: F405 `BetaElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:40:9: F405 `ThermalGElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:41:9: F405 `ThermalPhiSahaLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:42:9: F405 `SahaFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:45:55: F405 `PhiSahaLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:46:55: F405 `LevelBoltzmannFactorLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:49:6: F405 `PhiSahaNebular` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:49:22: F405 `ZetaData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:49:32: F405 `BetaElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:49:46: F405 `RadiationFieldCorrection` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:52:6: F405 `LevelBoltzmannFactorDiluteLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:54:49: F405 `LevelBoltzmannFactorNoNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:57:9: F405 `LevelBoltzmannFactorNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:58:9: F405 `NLTEData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:59:9: F405 `PreviousElectronDensities` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:60:9: F405 `PreviousBetaSobolev` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:64:6: F405 `NLTEIndexHelper` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:64:23: F405 `NLTEPopulationSolverRoot` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:67:6: F405 `NLTEIndexHelper` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:67:23: F405 `NLTEPopulationSolverLU` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:71:9: F405 `HeliumNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:72:9: F405 `RadiationFieldCorrection` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:73:9: F405 `ZetaData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:74:9: F405 `BetaElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:75:9: F405 `LevelNumberDensityHeNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:76:9: F405 `IonNumberDensityHeNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:80:6: F405 `LevelNumberDensity` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:80:26: F405 `IonNumberDensity` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:83:6: F405 `HeliumNumericalNLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:87:9: F405 `PhotoIonRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:88:9: F405 `StimRecombRateFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:89:9: F405 `BfHeatingRateCoeffEstimator` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:90:9: F405 `StimRecombCoolingRateCoeffEstimator` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:91:9: F405 `YgData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:96:9: F405 `StimRecombRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:97:9: F405 `PhotoIonizationData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:98:9: F405 `SpontRecombRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:99:9: F405 `ThermalLevelBoltzmannFactorLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:100:9: F405 `ThermalLTEPartitionFunction` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:101:9: F405 `BetaElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:102:9: F405 `ThermalGElectron` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:103:9: F405 `ThermalPhiSahaLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:104:9: F405 `SahaFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:105:9: F405 `CorrPhotoIonRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:106:9: F405 `SpontRecombCoolingRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:107:9: F405 `YgInterpolator` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:108:9: F405 `CollExcRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:109:9: F405 `CollDeexcRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:110:9: F405 `RawCollisionTransProbs` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:111:9: F405 `MarkovChainIndex` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:112:9: F405 `FreeFreeCoolingRate` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:113:9: F405 `FreeBoundCoolingRate` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:114:9: F405 `LevelNumberDensityLTE` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:115:9: F405 `PhotoIonBoltzmannFactor` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:116:9: F405 `FreeBoundEmissionCDF` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:117:9: F405 `LevelIdxs2LineIdx` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:118:9: F405 `LevelIdxs2TransitionIdx` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:119:9: F405 `CollIonRateCoeffSeaton` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:120:9: F405 `CollRecombRateCoeff` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:121:9: F405 `ContinuumInteractionHandler` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:124:58: F405 `AdiabaticCoolingRate` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:127:9: F405 `RawTwoPhotonTransProbs` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:128:9: F405 `TwoPhotonData` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:129:9: F405 `TwoPhotonEmissionCDF` may be undefined, or defined from star imports
tardis/plasma/properties/property_collections.py:130:9: F405 `TwoPhotonFrequencySampler` may be undefined, or defined from star imports
tardis/plasma/standard_plasmas.py:323:9: RET506 [*] Unnecessary `else` after `raise` statement
tardis/simulation/base.py:1:1: I001 [*] Import block is un-sorted or un-formatted
tardis/simulation/base.py:245:17: G004 Logging statement uses f-string
tardis/simulation/base.py:418:13: G004 Logging statement uses f-string
tardis/simulation/base.py:519:13: G004 Logging statement uses f-string
tardis/simulation/base.py:605:13: G004 Logging statement uses f-string
tardis/simulation/base.py:610:13: G004 Logging statement uses f-string
tardis/simulation/base.py:661:13: TRY300 Consider moving this statement to an `else` block
tardis/simulation/base.py:663:26: G004 Logging statement uses f-string
tardis/transport/montecarlo/estimators/continuum_radfield_properties.py:3:17: F401 [*] `numpy` imported but unused
tardis/transport/montecarlo/estimators/continuum_radfield_properties.py:5:30: F401 [*] `astropy.units` imported but unused
tardis/transport/montecarlo/estimators/tests/test_continuum_property_solver.py:1:1: INP001 File `tardis/transport/montecarlo/estimators/tests/test_continuum_property_solver.py` is part of an implicit namespace package. Add an `__init__.py`.
tardis/transport/montecarlo/estimators/tests/test_continuum_property_solver.py:35:55: F821 Undefined name `u`
tardis/util/base.py:184:20: NPY201 `np.trapz` will be removed in NumPy 2.0. Use `numpy.trapezoid` on NumPy 2.0, or ignore this warning on earlier versions.
tardis/util/base.py:335:5: RET505 [*] Unnecessary `else` after `return` statement
tardis/util/base.py:509:5: E722 Do not use bare `except`
tardis/util/base.py:617:5: RET505 [*] Unnecessary `elif` after `return` statement
tardis/util/environment.py:1:1: E902 No such file or directory (os error 2)
tardis/util/panel_init.py:1:1: E902 No such file or directory (os error 2)
tardis/visualization/__init__.py:3:57: F401 `tardis.visualization.tools.convergence_plot.ConvergencePlots` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:4:49: F401 `tardis.visualization.tools.liv_plot.LIVPlotter` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:5:53: F401 `tardis.visualization.tools.rpacket_plot.RPacketPlotter` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:6:50: F401 `tardis.visualization.tools.sdec_plot.SDECPlotter` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:7:59: F401 `tardis.visualization.widgets.custom_abundance.CustomAbundanceWidget` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:8:51: F401 `tardis.visualization.widgets.grotrian.GrotrianWidget` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:9:52: F401 `tardis.visualization.widgets.line_info.LineInfoWidget` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:11:5: F401 `tardis.visualization.widgets.shell_info.shell_info_from_hdf` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/__init__.py:12:5: F401 `tardis.visualization.widgets.shell_info.shell_info_from_simulation` imported but unused; consider removing, adding to `__all__`, or using a redundant alias
tardis/visualization/tools/tests/test_convergence_plot.py:3:1: I001 [*] Import block is un-sorted or un-formatted
tardis/visualization/tools/tests/test_convergence_plot.py:14:25: F811 [*] Redefinition of unused `defaultdict` from line 3
tardis/visualization/tools/tests/test_convergence_plot.py:15:32: F811 [*] Redefinition of unused `go` from line 6
tardis/visualization/tools/tests/test_convergence_plot.py:16:30: F811 [*] Redefinition of unused `u` from line 8
tardis/visualization/widgets/custom_abundance.py:737:16: RUF021 [*] Parenthesize `a and b` expressions when chaining `and` and `or` together, to make the precedence clear
tardis/visualization/widgets/custom_abundance.py:1127:9: RET505 [*] Unnecessary `else` after `return` statement
tardis/visualization/widgets/custom_abundance.py:1418:9: RET506 [*] Unnecessary `else` after `raise` statement
tardis/visualization/widgets/custom_abundance.py:1721:9: F811 Redefinition of unused `input_d_time_0_eventhandler` from line 1710
tardis/visualization/widgets/custom_abundance.py:1751:13: F821 Undefined name `display`
tardis/visualization/widgets/custom_abundance.py:1753:13: F821 Undefined name `display`
tardis/visualization/widgets/custom_abundance.py:1755:13: F821 Undefined name `display`
tardis/visualization/widgets/line_info.py:3:1: I001 [*] Import block is un-sorted or un-formatted
tardis/visualization/widgets/line_info.py:450:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:454:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:458:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:462:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:467:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:476:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:531:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/line_info.py:715:1: W293 [*] Blank line contains whitespace
tardis/visualization/widgets/tests/test_custom_abundance.py:224:37: RUF015 Prefer `next(iter(unique_v))` over single element slice
tardis/visualization/widgets/tests/test_line_info.py:9:1: E402 Module level import not at top of file
tardis/visualization/widgets/tests/test_shell_info.py:6:1: E402 Module level import not at top of file
tardis/workflows/simple_tardis_workflow.py:1:1: I001 [*] Import block is un-sorted or un-formatted
tardis/workflows/simple_tardis_workflow.py:249:17: G004 Logging statement uses f-string
tardis/workflows/simple_tardis_workflow.py:470:17: G004 Logging statement uses f-string
tardis/workflows/standard_tardis_workflow.py:170:13: G004 Logging statement uses f-string
tardis/workflows/standard_tardis_workflow.py:210:17: G004 Logging statement uses f-string
tardis/workflows/workflow_logging.py:69:13: G004 Logging statement uses f-string
tardis/workflows/workflow_logging.py:107:21: G004 Logging statement uses f-string
Found 248 errors.
[*] 47 fixable with the `--fix` option (36 hidden fixes can be enabled with the `--unsafe-fixes` option).

@andrewfullard andrewfullard requested a review from Rodot- August 12, 2025 15:25
number_density,
electron_densities,
block_ids,
1e-20, # ION_ZERO_THRESHOLD from ion_population.py
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just checking to make sure this is still supposed to be here and wasn't a testing thing. Feel free to resolve if this is intentional.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh woops this is the whole template class we looked at yesterday. Is this supposed to be part of this PR?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't hurt to be here since it doesn't do anything, but I can cut it.

jvshields
jvshields previously approved these changes Aug 14, 2025
@jvshields
Copy link
Contributor

Will need new regression data to check against with the appropriate keys.

@andrewfullard
Copy link
Contributor Author

Will need new regression data to check against with the appropriate keys.

Should be done in tardis-sn/tardis-regression-data#56

Rodot-
Rodot- previously approved these changes Aug 15, 2025
Copy link
Contributor

@Rodot- Rodot- left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy with it

@andrewfullard andrewfullard added the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@github-actions github-actions bot removed the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@andrewfullard andrewfullard added the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@github-actions github-actions bot removed the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@atharva-2001 atharva-2001 added the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@github-actions github-actions bot removed the git-lfs-pull Allow git lfs pull in PRs label Aug 18, 2025
@andrewfullard andrewfullard dismissed stale reviews from Rodot- and jvshields via 6fb6334 August 18, 2025 17:25
@andrewfullard andrewfullard merged commit a732a37 into tardis-sn:master Aug 18, 2025
17 of 20 checks passed
@codecov
Copy link

codecov bot commented Aug 18, 2025

Codecov Report

❌ Patch coverage is 77.56233% with 81 lines in your changes missing coverage. Please review.
✅ Project coverage is 73.89%. Comparing base (3ff94ab) to head (6fb6334).
⚠️ Report is 12 commits behind head on master.

Files with missing lines Patch % Lines
tardis/plasma/properties/hydrogen_continuum.py 0.00% 67 Missing ⚠️
.../plasma/equilibrium/rates/photoionization_rates.py 62.50% 6 Missing ⚠️
tardis/plasma/equilibrium/ion_populations.py 92.30% 3 Missing ⚠️
tardis/plasma/standard_plasmas.py 0.00% 3 Missing ⚠️
...estimators/tests/test_continuum_property_solver.py 33.33% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3070      +/-   ##
==========================================
- Coverage   74.38%   73.89%   -0.50%     
==========================================
  Files         249      259      +10     
  Lines       17425    17852     +427     
==========================================
+ Hits        12961    13191     +230     
- Misses       4464     4661     +197     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants