Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mat redesign #507

Draft
wants to merge 138 commits into
base: alpha-test
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
ef64a35
Made a universal name parser re.
MicahGale Aug 11, 2024
457c59a
Started making universal isotope parser.
MicahGale Aug 11, 2024
f5990cb
Correctly implemented string based fancy names for isotopes.
MicahGale Aug 12, 2024
e0b7b95
Wrote test cases to verify fancy names.
MicahGale Aug 12, 2024
98a4ddc
Added even more tests.
MicahGale Aug 12, 2024
4b72c02
Handled the case of using a tuple as an isotope identifier.
MicahGale Aug 12, 2024
5b9dac6
Prototyped the how get/set should work for materials.
MicahGale Aug 12, 2024
c11a632
Fixed typo not making callable.
MicahGale Aug 13, 2024
e405498
Made it possible to get material component by just an Isotope.
MicahGale Aug 13, 2024
935c96e
Made wrapper class for isotope library.
MicahGale Aug 13, 2024
7e7e5ea
Merge branch 'develop' into mat_redesign
MicahGale Aug 14, 2024
a9c6f2f
Played around with changing setattr
MicahGale Aug 14, 2024
d868dcf
Added attribute error exception.
MicahGale Aug 14, 2024
c316de2
Merge branch 'develop' into mat_redesign
MicahGale Aug 22, 2024
e476eec
Merge branch 'develop' into mat_redesign
MicahGale Aug 23, 2024
6274878
Changed test_material to pytest.
MicahGale Aug 23, 2024
ba7c366
Fixed typo in test due to unindent.
MicahGale Aug 23, 2024
11bbd37
Harmonized isotope with upstream changes to ensure default values are…
MicahGale Aug 23, 2024
7eecfe1
Updated isotope str for library being a wrapper object.
MicahGale Aug 23, 2024
dcb50f3
Started implement isotope slicing.
MicahGale Aug 23, 2024
302400f
Wrote test case for library slicing.
MicahGale Aug 23, 2024
2cc9750
Started test get/setitem for material.
MicahGale Aug 23, 2024
360c2d5
Updated fancy_name to accept just an element outside a tuple.
MicahGale Aug 23, 2024
3763a52
Made isotope library use meta-programming.
MicahGale Aug 23, 2024
78090fe
Ensure _is_atom_franction always set.
MicahGale Aug 23, 2024
d88ceeb
Fixing bugs with get/setitem.
MicahGale Aug 23, 2024
ac34dc3
Another fix.
MicahGale Aug 23, 2024
f7567fc
Avoided trying to look for non-existant isotopes.
MicahGale Aug 23, 2024
4910729
Removed magic number from Isotopes.
MicahGale Aug 23, 2024
43bbdd2
Changed default meta_state to 0 from None.
MicahGale Aug 23, 2024
c5a5adb
Fully embraced meta
MicahGale Aug 23, 2024
54e6723
Allowed specifying an element slice by Z number.
MicahGale Aug 23, 2024
3a05994
Padded library in str for pretty printing.
MicahGale Aug 23, 2024
1048375
Allowed passing just an element for slicing.
MicahGale Aug 23, 2024
73a9b1c
Started changelog for material redesign.
MicahGale Aug 25, 2024
d5bf43c
Merge branch 'develop' into mat_redesign
MicahGale Sep 4, 2024
bd3e748
Deleted all previously deprecated code.
MicahGale Sep 4, 2024
a9da602
Updated changelog with deleted code.
MicahGale Sep 4, 2024
6e8e0ae
Switched away from mat_comp dict.
MicahGale Sep 5, 2024
d69a019
Started get/set item, and base dunders.
MicahGale Sep 5, 2024
b6e5f92
Merge branch 'develop' into mat_redesign
MicahGale Sep 12, 2024
9f3140c
Moved isotope to nuclide.
MicahGale Sep 12, 2024
0ed30ef
Refactored Isotope to Nuclide.
MicahGale Sep 12, 2024
8ff4bbc
Started prototype for filtering isotopes.
MicahGale Sep 12, 2024
801360b
Removed deprecated call.
MicahGale Sep 12, 2024
c9fff24
Created filter prepper.
MicahGale Sep 12, 2024
b1c2c0e
Removed hacky hashing.
MicahGale Sep 12, 2024
9497981
Merge branch 'develop' into mat_redesign
MicahGale Sep 12, 2024
1b385a5
Finished concept of finding things.
MicahGale Sep 12, 2024
068d8b0
Deleted dead code.
MicahGale Sep 12, 2024
34a9ed7
Simplified fancy name to be string only.
MicahGale Sep 12, 2024
2630231
Removed all material_components.
MicahGale Sep 12, 2024
17825c5
cleaned up small bugs.
MicahGale Sep 12, 2024
3fe4847
Simplified tests for new interface.
MicahGale Sep 12, 2024
d3e6007
Played around with hypothesis and PBT.
MicahGale Sep 12, 2024
521fcf9
Ignore non-sense isotopes, and helped debugging.
MicahGale Sep 13, 2024
6e7b21b
Fixed bad format re for nuclide.
MicahGale Sep 13, 2024
c639e23
Handled case of bad string.
MicahGale Sep 13, 2024
564ea45
Temporarily fixed equals.
MicahGale Sep 13, 2024
7d78397
Changed how A is sampled to be more physically accurate.
MicahGale Sep 13, 2024
4629e78
Made isotope fancy name more exhaustive.
MicahGale Sep 15, 2024
c5337bf
Fixed issue of dissapearing isomer.
MicahGale Sep 15, 2024
307ae3e
Limited A multiplier to being more physical.
MicahGale Sep 16, 2024
e34d83c
Removed material_components from tests.
MicahGale Sep 16, 2024
92facc4
Made a lot of data_inputs as top level objects.
MicahGale Sep 16, 2024
e6b2bcb
Made elements print by reverse order and truncated.
MicahGale Sep 16, 2024
b45e535
Made iterator of material to hide valuenode.
MicahGale Sep 16, 2024
b61b2d3
Added elements set to cache info.
MicahGale Sep 16, 2024
5e0ff5e
Made easier way to add new nuclides.
MicahGale Sep 16, 2024
d12ec1a
Made it possible to find nuclide and element in material.
MicahGale Sep 16, 2024
37e748e
Setup problem.materials.Element generator.
MicahGale Sep 16, 2024
718bfa2
Made Element truly immutable with slots.
MicahGale Sep 16, 2024
45c48ad
Started trying to make immutable Nuclide.
MicahGale Sep 16, 2024
4a47c5d
Actually implemented immutable backend into Nuclide.
MicahGale Sep 16, 2024
543c764
Updated equality to new iterator.
MicahGale Sep 16, 2024
85736b4
Updated test fixture.
MicahGale Sep 16, 2024
7330ce9
Debugged nuclide str.
MicahGale Sep 16, 2024
1a97f28
Fixed ZAID to be treated as an int actually.
MicahGale Sep 17, 2024
d993776
Test only that material_component is deprecated.
MicahGale Sep 17, 2024
5fe7a67
Fixed update_values to use new data_structure.
MicahGale Sep 17, 2024
d24a833
Ignored new testing artifacts.
MicahGale Sep 17, 2024
228acbf
Brought back new thermal test for new update_pointer.
MicahGale Sep 17, 2024
eb4d383
Implemented a nuclide set hashing system.
MicahGale Sep 17, 2024
edc3181
Exposed nucleus as a property.
MicahGale Sep 17, 2024
f33283d
Moved nuclide equality to mostly nucleus.
MicahGale Sep 17, 2024
05961d0
Improved nuclide sorting.
MicahGale Sep 17, 2024
9252022
Implemented searching for materials by components.
MicahGale Sep 17, 2024
e30b570
Added enum for material libraries types.
MicahGale Sep 17, 2024
6e0b614
Added default_libraries to material class.
MicahGale Sep 17, 2024
88de24d
Ignored no libary parameters.
MicahGale Sep 17, 2024
b1fb135
Made meta class to make immutables singletons.
MicahGale Sep 23, 2024
8c84a10
Made elements and nucleus singletons.
MicahGale Sep 23, 2024
a85ff52
Moved get_from_fancy_name into init
MicahGale Sep 23, 2024
907f559
moved default version to 6.3.0
MicahGale Sep 23, 2024
af541d6
Optimized equality for singleton objects
MicahGale Sep 23, 2024
7e0f37a
Added links to 6.3.1 manual.
MicahGale Sep 23, 2024
59a6181
Added opportunistic cache updates.
MicahGale Sep 23, 2024
37e5ce3
Implemented prototype of set logic for numbered_object_collection.
MicahGale Sep 23, 2024
e5ccf65
Merge branch 'develop' into mat_redesign
MicahGale Sep 24, 2024
b981326
Started alpha test deploy workflow.
MicahGale Sep 24, 2024
8f71cd3
Changed check version over to python.
MicahGale Sep 24, 2024
2331d1f
Moved GHA deploy to using python check version.
MicahGale Sep 24, 2024
30e7d18
Made NumberedObject more like a set.
MicahGale Sep 24, 2024
7e821ac
Created update function, and made it more optimized.
MicahGale Sep 25, 2024
22d15ad
Fixed typo.
MicahGale Sep 25, 2024
653a2f4
Merge branch 'develop' into mat_redesign
MicahGale Oct 3, 2024
7df2a89
Implemented all set operations.
MicahGale Oct 7, 2024
2b2110e
Implemented materials.default_libraries, and change_libraries.
MicahGale Oct 7, 2024
32cdc43
Made is_atom_fraction settable.
MicahGale Oct 7, 2024
62a7a98
fixed typo bug.
MicahGale Oct 7, 2024
a02ca1e
Made test for over removal.
MicahGale Oct 7, 2024
5edaeb4
Removed over removal pop bug.
MicahGale Oct 7, 2024
865cb2e
Merge branch 'develop' into mat_redesign
MicahGale Oct 8, 2024
4c3379f
Added test for #182.
MicahGale Oct 12, 2024
cc020ce
Refactored isotopes Node.
MicahGale Oct 12, 2024
d8bd70e
Made general material parser.
MicahGale Oct 12, 2024
2388adf
Made material parser and syntax node handle parameters too.
MicahGale Oct 12, 2024
1f14326
Made material init handle arbitrary order stuff.
MicahGale Oct 12, 2024
25f5ae8
Finished refactor.
MicahGale Oct 12, 2024
f80f7b6
Fixed bugs with MaterialsNode.
MicahGale Oct 12, 2024
a9146d0
Removed call to old function.
MicahGale Oct 14, 2024
efcb82f
Fixed bug with comparing strings to libraries
MicahGale Oct 14, 2024
f869666
Raised valueError with invalid ZAID.
MicahGale Oct 14, 2024
8104df8
Ensure stupid ZAID parsing is always handled when parsing a ZAID.
MicahGale Oct 14, 2024
b0f1325
Updated fall through test for new default version.
MicahGale Oct 14, 2024
458de0e
Deprecated append to avoid confusion and find bugs.
MicahGale Oct 14, 2024
e2b1d5e
Moved away from old append.
MicahGale Oct 14, 2024
51336b1
New default!
MicahGale Oct 14, 2024
90f3dc0
Fixed attributeErrors.
MicahGale Oct 14, 2024
8abe109
Made parser more robust with all edge cases.
MicahGale Oct 14, 2024
261f096
Fixed name of attribute in test.
MicahGale Oct 14, 2024
726fcd9
Added references to materials in manual.
MicahGale Oct 15, 2024
1314a66
Merge branch 'develop' into mat_redesign
MicahGale Oct 15, 2024
7e52e65
Promoted all surfaces to be easier to access.
MicahGale Oct 17, 2024
05db8cb
Updated mat clone test for new material api.
MicahGale Oct 17, 2024
b1739da
Updated test to all setting mode with strings.
MicahGale Oct 22, 2024
d80a234
Fixed wierd bug in test that shouldn't exist.
MicahGale Oct 22, 2024
3c39e45
Fixed parser to not get confused by starting keyword.
MicahGale Oct 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified .github/scripts/check_sitemap.py
100644 → 100755
Empty file.
24 changes: 24 additions & 0 deletions .github/scripts/check_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env python

import argparse
import re
import sys
from setuptools_scm import get_version

parser = argparse.ArgumentParser()
parser.add_argument("-a", "--alpha", action="store_true")
DEPLOY_VERSION = r"\d+\.\d+\.\d+"
ALPHA_VERSION = DEPLOY_VERSION + r"a\d+"
args = parser.parse_args()
if args.alpha:
print("checking alpha release")
parser = ALPHA_VERSION
else:
print("checking Final release.")
parser = DEPLOY_VERSION

version = get_version()
print(f"version = {version}")
if not re.fullmatch(parser, version):
exit(1)
exit(0)
6 changes: 0 additions & 6 deletions .github/scripts/check_version.sh

This file was deleted.

107 changes: 107 additions & 0 deletions .github/workflows/deploy-alpha.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: Deploy

on:
push:
branches: [alpha-test]


jobs:
last-minute-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: set up python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
- run: pip install . montepy[develop]
- run: python -m pytest

build-packages:
name: Build, sign, and release packages on github
runs-on: ubuntu-latest
needs: [last-minute-test]
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: set up python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
- run: pip install . montepy[build]
- name: Get Version
id: get_version
run: echo "version=`python -m setuptools_scm`" >> $GITHUB_OUTPUT
- name: Verify that this is a non-dev alpha release
run: .github/scripts/check_version.py --alpha
- run: python -m build .
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: v${{ steps.get_version.outputs.version }}
name: Release ${{ steps.get_version.outputs.version }}
draft: true
- run: >-
gh release upload
'v${{ steps.get_version.outputs.version }}' dist/**
--repo '${{ github.repository }}'
- uses: actions/upload-artifact@v4
with:
name: build
path: |
dist/*.tar.gz
dist/*.whl


deploy-test-pypi:
environment:
name: test-pypi
url: https://test.pypi.org/p/montepy # Replace <package-name> with your PyPI project name
needs: [build-packages]
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: build
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/

deploy-pypi:
environment:
name: pypi
url: https://pypi.org/p/montepy # Replace <package-name> with your PyPI project name
needs: [deploy-pages, deploy-test-pypi, build-packages]
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: build
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1




2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
id: get_version
run: echo "version=`python -m setuptools_scm`" >> $GITHUB_OUTPUT
- name: Verify that this is a non-dev release
run: .github/scripts/check_version.sh ${{ steps.get_version.outputs.version }}
run: .github/scripts/check_version.py
- run: python -m build .
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,8 @@ doc/build/*
.idea/
.ipynb_checkpoints/
montepy/_version.py

# various testing results
htmlcov
.hypothesis
.mutmut-cache
4 changes: 3 additions & 1 deletion benchmark/benchmark_big_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
print(f"Memory usage report: {tracemalloc.get_traced_memory()[0]/1024/1024} MB")
del problem
gc.collect()
print(f"Memory usage report after GC: {tracemalloc.get_traced_memory()[0]/1024/1024} MB")
print(
f"Memory usage report after GC: {tracemalloc.get_traced_memory()[0]/1024/1024} MB"
)

if (stop - start) > FAIL_THRESHOLD:
raise RuntimeError(
Expand Down
36 changes: 35 additions & 1 deletion doc/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,40 @@
MontePy Changelog
*****************

1.0.0 releases
==============

#Next Version#
--------------
* Redesigned how Materials hold Material_Components. See :ref:`migrate 0 1` (:pull:`507`).

**Breaking Changes**

* Removed ``Material.material_components``. See :ref:`migrate 0 1` (:pull:`507`).

**Deprecated code Removed**

* ``montepy.Cell.geometry_logic_string``
* ``montepy.data_inputs.cell_modifier.CellModifier.has_changed_print_style``
* ``montepy.data_inputs.data_input.DataInputAbstract``

* ``class_prefix``
* ``has_number``
* ``has_classifier``

* ``montepy.input_parser.mcnp_input.Card``
* ``montepy.input_parser.mcnp_input.ReadCard``
* ``montepy.input_parser.mcnp_input.Input.words``
* ``montepy.input_parser.mcnp_input.Comment``
* ``montepy.input_parser.mcnp_input.parse_card_shortcuts``
* ``montepy.mcnp_object.MCNP_Object``

* ``wrap_words_for_mcnp``
* ``compress_repeat_values``
* ``compress_jump_values``
* ``words``
* ``allowed_keywords``

0.5 releases
============

Expand Down Expand Up @@ -32,7 +66,7 @@ MontePy Changelog
============

0.4.1
--------------
----------------

**Features Added**

Expand Down
1 change: 1 addition & 0 deletions doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ See Also

* `MontePy github Repository <https://github.com/idaholab/montepy>`_
* `MontePy PyPI Project <https://pypi.org/project/montepy/>`_
* `MCNP 6.3.1 User Manual <https://www.osti.gov/biblio/2372634>`_ DOI: `10.2172/2372634<https://doi.org/10.2172/2372634>`_
* `MCNP 6.3 User Manual <https://www.osti.gov/biblio/1889957>`_ DOI: `10.2172/1889957 <https://doi.org/10.2172/1889957>`_
* `MCNP 6.2 User Manual <https://mcnp.lanl.gov/pdf_files/TechReport_2017_LANL_LA-UR-17-29981_WernerArmstrongEtAl.pdf>`_
* `MCNP Forum <https://mcnp.discourse.group/>`_
Expand Down
22 changes: 17 additions & 5 deletions montepy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,29 @@
from . import input_parser
from . import constants
import importlib.metadata
from .input_parser.input_reader import read_input
from montepy.cell import Cell
from montepy.mcnp_problem import MCNP_Problem

# data input promotion

from montepy.data_inputs.material import Material
from montepy.data_inputs.transform import Transform
from montepy.data_inputs.nuclide import Nuclide
from montepy.data_inputs.element import Element

# geometry
from montepy.geometry_operators import Operator
from montepy import geometry_operators
from montepy.input_parser.mcnp_input import Jump
from montepy.particle import Particle
from montepy.surfaces.surface_type import SurfaceType

# input parser
from montepy.input_parser.mcnp_input import Jump
from .input_parser.input_reader import read_input

# top level
from montepy.particle import Particle, LibraryType
from montepy.universe import Universe
from montepy.cell import Cell
from montepy.mcnp_problem import MCNP_Problem

import montepy.errors
import sys

Expand Down
19 changes: 19 additions & 0 deletions montepy/_singleton.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import collections


class SingletonGroup(type):
"""
Pass
"""

_instances = collections.defaultdict(dict)

def __call__(cls, *args, **kwargs):
kwargs_t = tuple([(k, v) for k, v in kwargs.items()])
try:
return cls._instances[cls][args + kwargs_t]
except KeyError:
cls._instances[cls][args + kwargs_t] = super(SingletonGroup, cls).__call__(
*args, **kwargs
)
return cls._instances[cls][args + kwargs_t]
15 changes: 0 additions & 15 deletions montepy/cell.py
Original file line number Diff line number Diff line change
Expand Up @@ -362,21 +362,6 @@ def geometry(self):
"""
pass

@property
def geometry_logic_string(self): # pragma: no cover
"""
The original geoemtry input string for the cell.

.. warning::
.. deprecated:: 0.2.0
This was removed to allow for :func:`geometry` to truly implement CSG geometry.

:raise DeprecationWarning: Will always be raised as an error (which will cause program to halt).
"""
raise DeprecationWarning(
"Geometry_logic_string has been removed from cell. Use Cell.geometry instead."
)

@make_prop_val_node(
"_density_node", (float, int, type(None)), base_type=float, deletable=True
)
Expand Down
22 changes: 20 additions & 2 deletions montepy/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,25 @@
Number of spaces in a new line before it's considered a continuation.
"""

LINE_LENGTH = {(5, 1, 60): 80, (6, 1, 0): 80, (6, 2, 0): 128}
LINE_LENGTH = {
(5, 1, 60): 80,
(6, 1, 0): 80,
(6, 2, 0): 128,
(6, 3, 0): 128,
(6, 3, 1): 128,
}
"""
The number of characters allowed in a line for each MCNP version.

Citations:

* 5.1.60 and 6.1.0: Section 2.6.2 of LA-UR-18-20808
* 6.2.0: Section 1.1.1 of LA-UR-17-29981
* 6.3.0: Section 3.2.2 of LA-UR-22-30006
* 6.3.1: Section 3.2.2 of LA-UR-24-24602
"""

DEFAULT_VERSION = (6, 2, 0)
DEFAULT_VERSION = (6, 3, 0)
"""
The default version of MCNP to use.
"""
Expand All @@ -47,6 +60,11 @@
Source: `Wikipedia <https://en.wikipedia.org/wiki/ASCII>`_
"""

MAX_ATOMIC_SYMBOL_LENGTH = 2
"""
The maximum length of an atomic symbol.
"""


def get_max_line_length(mcnp_version=DEFAULT_VERSION):
"""
Expand Down
37 changes: 0 additions & 37 deletions montepy/data_inputs/cell_modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,40 +266,3 @@ def format_for_mcnp_input(self, mcnp_version, has_following=False):
self._update_values()
return self.wrap_string_for_mcnp(self._format_tree(), mcnp_version, True)
return []

@property
def has_changed_print_style(self): # pragma: no cover
"""
returns true if the printing style for this modifier has changed
from cell block to data block, or vice versa.

.. deprecated:: 0.2.0
This property is no longer needed and overly complex.

:returns: true if the printing style for this modifier has changed
:rtype: bool
:raises DeprecationWarning: raised always.
"""
warnings.warn(
"has_changed_print_style will be removed soon.",
DeprecationWarning,
stacklevel=2,
)
if self._problem:
print_in_cell_block = not self._problem.print_in_data_block[
self.class_prefix
]
set_in_cell_block = print_in_cell_block
if not self.in_cell_block:
for cell in self._problem.cells:
attr = montepy.Cell._CARDS_TO_PROPERTY[type(self)][0]
modifier = getattr(cell, attr)
if modifier.has_information:
set_in_cell_block = modifier.set_in_cell_block
break
else:
if self.has_information:
set_in_cell_block = self.set_in_cell_block
return print_in_cell_block ^ set_in_cell_block
else:
return False
Loading
Loading