Numbered_MCNP_Object#

class montepy.numbered_mcnp_object.Numbered_MCNP_Object(input: Input | str, number: montepy.types.NonNegativeInt = None, *, jit_parse: bool = True, **kwargs)#

Bases: MCNP_Object

An abstract class to represent an mcnp object that has a number.

Changed in version 1.0.0: Added number parameter

Changed in version 1.5.0: Added jit_parse parameter

Parameters:
  • input (Input | str) – The Input syntax object this will wrap and parse.

  • number (Integral) – The number to set for this object.

  • jit_parse (bool) – Parse the object just-in-time, when the information is actually needed, if True.

Methods:

_add_children_objs(problem)

Adds all children objects from self to the given problem.

_delete_trailing_comment()

Deletes trailing comments from an object when it has been moved to another object.

_generate_default_node(value_type, default)

Generates a "default" or blank ValueNode.

_generate_default_tree(**kwargs)

Generate default syntax trees that can be exported once the object is not in an illegal state.

_grab_beginning_comment(padding[, last_obj])

_init_blank()

Initialize the object to a base state, before any parsing.

_parse_tree()

Takes the information from syntax tree and link it to the internal attributes.

_update_values()

Method to update values in syntax tree with new values.

clone([starting_number, step])

Create a new independent instance of this object with a new number.

format_for_mcnp_input(mcnp_version)

Creates a list of strings representing this MCNP_Object that can be written to file.

full_parse()

Fully parses this object, and disable just-in-time parsing for it.

link_to_problem([problem, deepcopy])

Links the input to the parent problem for this input.

mcnp_str([mcnp_version])

Returns a string of this input as it would appear in an MCNP input file.

search(search)

Searches this input for the given string, or compiled regular expression.

validate()

Validates that the object is in a usable state.

wrap_string_for_mcnp(string, mcnp_version, ...)

Wraps the list of the words to be a well formed MCNP input.

Attributes:

_problem

comments

The comments associated with this input if any.

full_parsed

Whether this has been fully parsed, or is just JIT parsed.

leading_comments

Any comments that come before the beginning of the input proper.

number

The current number of the object that will be written out to a new input.

old_number

The original number of the object provided in the input file

parameters

A dictionary of the additional parameters for the object.

trailing_comment

The trailing comments and padding of an input.

static _generate_default_node(value_type: Type, default: str, padding: str = ' ', never_pad: bool = False)#

Generates a “default” or blank ValueNode.

None is generally a safe default value to provide.

Changed in version 1.0.0: Added never_pad argument.

Parameters:
  • value_type (Type) – the data type for the ValueNode.

  • default (str) – the default value to provide (type needs to agree with value_type)

  • padding (str) – the string to provide to the PaddingNode. If None no PaddingNode will be added.

  • never_pad (bool) – Whether to never add trailing padding. True means extra padding is suppressed.

Returns:

a new ValueNode with the requested information.

Return type:

ValueNode

static wrap_string_for_mcnp(string: str, mcnp_version: montepy.types.VersionType, is_first_line: bool, suppress_blank_end: bool = True) list[str]#

Wraps the list of the words to be a well formed MCNP input.

multi-line inputs will be handled by using the indentation format, and not the “&” method.

Parameters:
  • string (str) – A long string with new lines in it, that needs to be chunked appropriately for MCNP inputs

  • mcnp_version (tuple[Integral, Integral, Integral]) – the tuple for the MCNP that must be formatted for.

  • is_first_line (bool) – If true this will be the beginning of an MCNP input. The first line will not be indented.

  • suppress_blank_end (bool) – Whether or not to suppress any blank lines that would be added to the end. Good for anywhere but cell modifiers in the cell block.

Returns:

A list of strings that can be written to an input file, one item to a line.

Return type:

list[str]

_add_children_objs(problem)#

Adds all children objects from self to the given problem.

This is called from an _append_hook().

_delete_trailing_comment()#

Deletes trailing comments from an object when it has been moved to another object.

abstractmethod _generate_default_tree(**kwargs)#

Generate default syntax trees that can be exported once the object is not in an illegal state.

For leaves generally use self._generate_default_nod(<type, None). Save the tree to self._tree

Parameters:

**kwargs (dict) – Allows passing additional arguments through __init__ as **kwargs

_grab_beginning_comment(padding: list[PaddingNode], last_obj=None)#
Parameters:

padding (list[PaddingNode])

abstractmethod _init_blank()#

Initialize the object to a base state, before any parsing.

This should not setup the syntax tree though.

abstractmethod _parse_tree()#

Takes the information from syntax tree and link it to the internal attributes.

Use self._tree for this.

abstractmethod _update_values()#

Method to update values in syntax tree with new values.

Generally when make_prop_val_node() this is not necessary to do, but when make_prop_pointer() is used it is necessary. The most common need is to update a value based on the number for an object pointed at, e.g., the material number in a cell definition.

clone(starting_number: montepy.types.PositiveInt = None, step: montepy.types.PositiveInt = None)#

Create a new independent instance of this object with a new number.

This relies mostly on copy.deepcopy.

Notes

If starting_number, or step are not specified starting_number(), and step() are used as default values, if this object is tied to a problem. For instance a Material will use problem.materials default information. Otherwise 1 will be used as default values

Added in version 0.5.0.

Parameters:
  • starting_number (Integral) – The starting number to request for a new object number.

  • step (Integral) – the step size to use to find a new valid number.

Returns:

a cloned copy of this object.

Return type:

type(self)

format_for_mcnp_input(mcnp_version: montepy.types.VersionType) list[str]#

Creates a list of strings representing this MCNP_Object that can be written to file.

Parameters:

mcnp_version (tuple[Integral, Integral, Integral]) – The tuple for the MCNP version that must be exported to.

Returns:

a list of strings for the lines that this input will occupy.

Return type:

list[str]

full_parse()#

Fully parses this object, and disable just-in-time parsing for it.

Returns:

The object will be mutated and fully parsed.

Return type:

None

Links the input to the parent problem for this input.

This is done so that inputs can find links to other objects.

Parameters:
  • problem (MCNP_Problem) – The problem to link this input to.

  • deepcopy (bool) – If this is occuring during a problem level deepcopy

mcnp_str(mcnp_version: montepy.types.VersionType = None) str#

Returns a string of this input as it would appear in an MCNP input file.

..versionadded:: 1.0.0

Parameters:

mcnp_version (tuple[Integral, Integral, Integral]) – The tuple for the MCNP version that must be exported to.

Returns:

The string that would have been printed in a file

Return type:

str

search(search: str | Pattern) bool#

Searches this input for the given string, or compiled regular expression.

Parameters:

search (str | Pattern) – The pattern to search for.

Returns:

Whether this

Return type:

bool

validate()#

Validates that the object is in a usable state.

property _problem: MCNP_Problem#
property comments: list[PaddingNode]#

The comments associated with this input if any.

This includes all C comments before this card that aren’t part of another card, and any comments that are inside this card.

Returns:

a list of the comments associated with this comment.

Return type:

list

property full_parsed#

Whether this has been fully parsed, or is just JIT parsed.

Returns:

True iff this is fully parsed, False means this is still just-in-time parsed.

Return type:

bool

property leading_comments: list[PaddingNode]#

Any comments that come before the beginning of the input proper.

Returns:

the leading comments.

Return type:

list

property number#

The current number of the object that will be written out to a new input.

Return type:

int

abstract property old_number#

The original number of the object provided in the input file

Return type:

int

property parameters: dict[str, str]#

A dictionary of the additional parameters for the object.

e.g.: 1 0 -1 u=1 imp:n=0.5 has the parameters {"U": "1", "IMP:N": "0.5"}

Returns:

a dictionary of the key-value pairs of the parameters.

Return type:

dict[str, str]

Return type:

dict

property trailing_comment: list[PaddingNode]#

The trailing comments and padding of an input.

Generally this will be blank as these will be moved to be a leading comment for the next input.

Returns:

the trailing c style comments and intermixed padding (e.g., new lines)

Return type:

list