Releases: idaholab/MontePy
Release 0.2.10
Bug Fixes
- Fixed bug with parsing tally segments (#377)
Note: v0.2.9 was skipped due to this version already being taken on test PyPI due to CI testing.
Release 0.2.8
v0.2.7
Bug fixes
- Made versioning system more robust for all situations (#386).
- Fixed bug with handling
read
inputs, and made parser more efficient (#206) - Fixed bug that couldn't read materials without a library. E.g.,
1001
vs.1001.80c
(#365).
Documentation
- Improved community documentation for contributing. (#375)
- Added a changelog (#375)
- Improved how the python API is navigated. (#359)
CI/CD
- Improved coveralls integration so actual source code can be shown.
- Improved sphinx build process (#388)
0.2.6 patch release
Bug Fixes
- material: Fixed thermal scattering law never being written to file. (872662f)
- syntax: Fixed not ignoring vertical mode hidden by comments. (847129e)
- syntax tree: Fixed typing issue with GeometryTree causing exception (7a24ac0)
Reverts
- Revert "Defined recursive GeometryTree Comments function for nested dicts." (4246f30)
Continuous Integration
0.2.5 beta
Minor patch release:
- Implemented Github actions
- Added default github issue templates
- Improved readme and documentation hyperlinks
- Fixed bug with comments in complex geometry.
0.2.4beta
0.2.3 Beta
0.2.2 beta
0.2.1 beta
This was a quick release that fixed a small bug with the packaging information that was breaking our pages deployment process.
v0.2.0
Release 0.2.0 beta
tl;dr: User formatting is now preserved, and geometry logic is truly implemented in MontePy now.
This is a very large release that has been in development for about a year.
This completely rewrote the majority of the code base.
This does break some backwards compatibility, and adds a new dependency out of necessity.
Why was this necessary
All previous versions of MontePy used "lazy" parsing.
The line was split up into chunks of space separated values,
then each object would take the first chunk and interpret it, etc.
This threw away user formatting.
Also this couldn't handle geometry logic easily.
Using this form of parsing it could be possible to interpret the logic using reverse polish notation.
However, an easier way would to be form binary trees for each operation, and then crawling that tree explicitly represents the geometry logic.
To preserve user formatting and geometry logic a concrete syntax tree had to be created.
To do this you need to truly parse the inputs as a context-free language with a Lexer and Parser.
The library SLY (SLY Lex Yacc) was chosen to provide the Lexer and Parser (yet another compiler-compiler (Yacc)).
This was chosen because it is implemented in purely python and has no dependencies,
making it very easy to install for our users.
Implementing SLY meant actually writing rigorous grammar rules for MCNP inputs.
It also meant creating an entirely new set of data types for properly handling the concrete syntax tree.
Finally, all objects representing inputs had to be rewritten for working with the syntax trees.
Now though when a user changes the density on a cell the whole cell formatting won't change.
Instead the leaf in the syntax tree representing the density (and the space following it) will try to reverse engineer
the formatting the user used (e.g., how many significant figures, was scientific notation used, etc.),
and format the new value the same way, while taking up the same amount of space.
It will eat into the trailing space if necessary.
Though if it has to make the line longer in order to fit the same numerical precision it will do so with a warning.
New Features
- User formatting is preserved automatically
- Cell geometry is now stored in
cell.geometry
and can be set with bitwise operators. e.g.,cell.geometry = + inner_sphere & - outer_sphere
. This was heavily influenced by OpenMC. - You can now check an input file for errors from the command line.
python -m montepy -c /path/to/inputs/*.imcnp
- The error reporting for syntax errors should be much more intuitive now, and easy to read.
- Dollar sign comments are kept and are available in
obj.comments
- All comments are now in a generator
.comments
Deprecated features
montepy.data_cards
moved tomontepy.data_inputs
montepy.data_cards.data_card
is nowmontepy.data_inputs.data_input
Montepy.Cell.geometry_logic_string
was completely removed.- Much of the internal functions with how objects are written to file were changed and/or deprecated.
montepy.data_cards.data_card.DataCard.class_prefix
was moved to_class_prefix
as the user usually shouldn't see this. Same goes forhas_classifier
andhas_number
.- Most of the data types inside
montepy.input_parser.mcnp_input
were deprecated or changed
Issues resolved
#12, #48,#105, #106, #114, #119, #136
Related MRs
!57, !58, !71, !73, !75, !77, !80, !81, !82, !83, !84, !85, !86, !87 !88, !89, !90, !92, !93, !94, !95, !96, !97, !99, !103
Issues resolved in Alpha Testing
#121, #122, #123, #124, #125, #126, #129, #130, #132, #133, #134, #140, #146