nerdd-module 0.3.14__tar.gz → 0.3.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/PKG-INFO +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/mol_converter.py +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/inchi_reader.py +2 -2
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/sdf_reader.py +2 -2
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/smiles_reader.py +2 -2
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/model.py +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/__init__.py +1 -0
- nerdd_module-0.3.16/nerdd_module/polyfills/block_logs.py +45 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/chembl_structure_pipeline.py +11 -17
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/representations.py +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module.egg-info/PKG-INFO +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module.egg-info/SOURCES.txt +1 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/pyproject.toml +1 -1
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/LICENSE +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/README.md +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/cli.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/default_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/dict_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/merged_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/models.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/package_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/search_yaml_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/yaml_configuration.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/basic_type_converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/converter_config.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/mol_to_image_converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/problem_list_converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/representation_converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/void_converter.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/depth_first_explorer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/explorer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/file_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/gzip_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/list_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/mol_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/reader_config.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/string_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/tar_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/input/zip_reader.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/assign_mol_id_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/assign_name_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/convert_representations_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/enforce_schema_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/read_input_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/simple_model.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/write_output_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/csv_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/file_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/iterator_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/pandas_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/record_list_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/sdf_writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/output/writer.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/files.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/get_entry_points.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/literal.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/typed_dict.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/types.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/polyfills/version.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/check_valid_smiles.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/filter_by_element.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/filter_by_weight.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/preprocessing_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/remove_stereochemistry.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/sanitize.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/problem.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/py.typed +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/steps/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/steps/map_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/steps/output_step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/steps/step.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/checks.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/files.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/models/AtomicMassModel.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/models/MolWeightModel.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/models/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/predictions.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/preprocessing/DummyPreprocessingStep.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/tests/preprocessing/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/util/__init__.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/util/call_with_mappings.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/util/package.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/version.py +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module.egg-info/dependency_links.txt +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module.egg-info/requires.txt +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module.egg-info/top_level.txt +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/setup.cfg +0 -0
- {nerdd_module-0.3.14 → nerdd_module-0.3.16}/tests/test_features.py +0 -0
|
@@ -15,7 +15,7 @@ class MolConverter(Converter):
|
|
|
15
15
|
if self.output_format == "sdf" and self.result_property.name != "input_mol":
|
|
16
16
|
# in an SDF, the main molecule (input_mol) can be a Mol object
|
|
17
17
|
return Converter.HIDE
|
|
18
|
-
elif self.output_format in ["pandas", "record_list", "iterator"]:
|
|
18
|
+
elif self.output_format in ["sdf", "pandas", "record_list", "iterator"]:
|
|
19
19
|
return input
|
|
20
20
|
|
|
21
21
|
config = ConverterConfig(
|
|
@@ -2,8 +2,8 @@ from codecs import getreader
|
|
|
2
2
|
from typing import Any, Iterator
|
|
3
3
|
|
|
4
4
|
from rdkit.Chem import MolFromInchi
|
|
5
|
-
from rdkit.rdBase import BlockLogs
|
|
6
5
|
|
|
6
|
+
from ..polyfills import BlockLogs
|
|
7
7
|
from ..problem import Problem
|
|
8
8
|
from .reader import ExploreCallable, MoleculeEntry, Reader
|
|
9
9
|
from .reader_config import ReaderConfig
|
|
@@ -47,7 +47,7 @@ class InchiReader(Reader):
|
|
|
47
47
|
errors = []
|
|
48
48
|
|
|
49
49
|
yield MoleculeEntry(
|
|
50
|
-
raw_input=line,
|
|
50
|
+
raw_input=line.strip("\n"),
|
|
51
51
|
input_type="inchi",
|
|
52
52
|
source=("raw_input",),
|
|
53
53
|
mol=mol,
|
|
@@ -2,8 +2,8 @@ from codecs import getreader
|
|
|
2
2
|
from typing import Any, Iterator
|
|
3
3
|
|
|
4
4
|
from rdkit.Chem import MolFromMolBlock
|
|
5
|
-
from rdkit.rdBase import BlockLogs
|
|
6
5
|
|
|
6
|
+
from ..polyfills import BlockLogs
|
|
7
7
|
from ..problem import Problem
|
|
8
8
|
from .reader import ExploreCallable, MoleculeEntry, Reader
|
|
9
9
|
|
|
@@ -59,7 +59,7 @@ class SdfReader(Reader):
|
|
|
59
59
|
errors = []
|
|
60
60
|
|
|
61
61
|
yield MoleculeEntry(
|
|
62
|
-
raw_input=mol_block,
|
|
62
|
+
raw_input=mol_block.strip("\n"),
|
|
63
63
|
input_type="mol_block",
|
|
64
64
|
source=("raw_input",),
|
|
65
65
|
mol=mol,
|
|
@@ -2,8 +2,8 @@ from codecs import getreader
|
|
|
2
2
|
from typing import Any, Iterator
|
|
3
3
|
|
|
4
4
|
from rdkit.Chem import MolFromSmiles
|
|
5
|
-
from rdkit.rdBase import BlockLogs
|
|
6
5
|
|
|
6
|
+
from ..polyfills import BlockLogs
|
|
7
7
|
from ..problem import Problem
|
|
8
8
|
from .reader import ExploreCallable, MoleculeEntry, Reader
|
|
9
9
|
from .reader_config import ReaderConfig
|
|
@@ -57,7 +57,7 @@ class SmilesReader(Reader):
|
|
|
57
57
|
errors = []
|
|
58
58
|
|
|
59
59
|
yield MoleculeEntry(
|
|
60
|
-
raw_input=line,
|
|
60
|
+
raw_input=line.strip("\n"),
|
|
61
61
|
input_type="smiles",
|
|
62
62
|
source=("raw_input",),
|
|
63
63
|
mol=mol,
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from typing import Optional, Protocol, Type
|
|
2
|
+
|
|
3
|
+
from rdkit.rdBase import BlockLogs as OriginalBlockLogs
|
|
4
|
+
|
|
5
|
+
__all__ = ["BlockLogs"]
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BlockLogsProtocol(Protocol):
|
|
9
|
+
def __init__(self) -> None: ...
|
|
10
|
+
def __enter__(self) -> "BlockLogsProtocol": ...
|
|
11
|
+
|
|
12
|
+
def __exit__(
|
|
13
|
+
self,
|
|
14
|
+
exc_type: Optional[Type[BaseException]],
|
|
15
|
+
exc_val: Optional[BaseException],
|
|
16
|
+
exc_tb: Optional[Type[BaseException]],
|
|
17
|
+
) -> None: ...
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
BlockLogs: Type[BlockLogsProtocol]
|
|
21
|
+
|
|
22
|
+
if hasattr(OriginalBlockLogs, "__enter__"):
|
|
23
|
+
BlockLogs = OriginalBlockLogs
|
|
24
|
+
else:
|
|
25
|
+
# We would like to use
|
|
26
|
+
# with BlockLogs(): ...
|
|
27
|
+
# but this does not work with old versions of RDKit. Therefore, we create an instance of
|
|
28
|
+
# BlockLogs that will suppress log messages as long as it exists. When it is deleted (in the
|
|
29
|
+
# "__exit__" block), logs are enabled again.
|
|
30
|
+
class CustomBlockLogs:
|
|
31
|
+
block_logs: Optional[OriginalBlockLogs] = None
|
|
32
|
+
|
|
33
|
+
def __enter__(self) -> BlockLogsProtocol:
|
|
34
|
+
self.block_logs = OriginalBlockLogs()
|
|
35
|
+
return self
|
|
36
|
+
|
|
37
|
+
def __exit__(
|
|
38
|
+
self,
|
|
39
|
+
exc_type: Optional[Type[BaseException]],
|
|
40
|
+
exc_val: Optional[BaseException],
|
|
41
|
+
exc_tb: Optional[Type[BaseException]],
|
|
42
|
+
) -> None:
|
|
43
|
+
del self.block_logs
|
|
44
|
+
|
|
45
|
+
BlockLogs = CustomBlockLogs
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/chembl_structure_pipeline.py
RENAMED
|
@@ -2,8 +2,8 @@ import warnings
|
|
|
2
2
|
from typing import List, Optional, Tuple
|
|
3
3
|
|
|
4
4
|
from rdkit.Chem import Mol
|
|
5
|
-
from rdkit.rdBase import BlockLogs
|
|
6
5
|
|
|
6
|
+
from ..polyfills import BlockLogs
|
|
7
7
|
from ..problem import Problem
|
|
8
8
|
from .preprocessing_step import PreprocessingStep
|
|
9
9
|
|
|
@@ -15,22 +15,16 @@ warnings.filterwarnings(
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
# We check if chembl_structure_pipeline is installed. Since importing this library already logs
|
|
18
|
-
# messages, we suppress them using RDKit's BlockLogs.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
except ImportError as e:
|
|
29
|
-
# raise ImportError later when using this class
|
|
30
|
-
# --> this allows to use the rest of the package without chembl_structure_pipeline
|
|
31
|
-
import_error = e
|
|
32
|
-
finally:
|
|
33
|
-
del block_logs
|
|
18
|
+
# messages, we suppress them using RDKit's BlockLogs.
|
|
19
|
+
with BlockLogs():
|
|
20
|
+
try:
|
|
21
|
+
from chembl_structure_pipeline import get_parent_mol, standardize_mol
|
|
22
|
+
|
|
23
|
+
import_error = None
|
|
24
|
+
except ImportError as e:
|
|
25
|
+
# raise ImportError later when using this class
|
|
26
|
+
# --> this allows to use the rest of the package without chembl_structure_pipeline
|
|
27
|
+
import_error = e
|
|
34
28
|
|
|
35
29
|
__all__ = ["GetParentMolWithCsp", "StandardizeWithCsp"]
|
|
36
30
|
|
|
@@ -6,7 +6,7 @@ from hypothesis import strategies as st
|
|
|
6
6
|
from hypothesis_rdkit import mols # type: ignore
|
|
7
7
|
from pytest_bdd import given, parsers
|
|
8
8
|
from rdkit.Chem import MolToInchi, MolToMolBlock, MolToSmiles
|
|
9
|
-
from
|
|
9
|
+
from ..polyfills import BlockLogs
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
@given(parsers.parse("a random seed set to {seed:d}"), target_fixture="random_seed")
|
|
@@ -62,6 +62,7 @@ nerdd_module/output/record_list_writer.py
|
|
|
62
62
|
nerdd_module/output/sdf_writer.py
|
|
63
63
|
nerdd_module/output/writer.py
|
|
64
64
|
nerdd_module/polyfills/__init__.py
|
|
65
|
+
nerdd_module/polyfills/block_logs.py
|
|
65
66
|
nerdd_module/polyfills/files.py
|
|
66
67
|
nerdd_module/polyfills/get_entry_points.py
|
|
67
68
|
nerdd_module/polyfills/literal.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/config/search_yaml_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/mol_to_image_converter.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/problem_list_converter.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/converters/representation_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/model/convert_representations_step.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/check_valid_smiles.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/preprocessing_step.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.14 → nerdd_module-0.3.16}/nerdd_module/preprocessing/remove_stereochemistry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|