cdxml-toolkit 0.5.3__tar.gz → 0.5.4__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.
- {cdxml_toolkit-0.5.3/cdxml_toolkit.egg-info → cdxml_toolkit-0.5.4}/PKG-INFO +1 -1
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/naming/mol_builder.py +14 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4/cdxml_toolkit.egg-info}/PKG-INFO +1 -1
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/pyproject.toml +1 -1
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_mol_builder.py +18 -5
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/LICENSE +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/NOTICE.md +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/README.md +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/_jre/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/_jre/temurin-21-jre-win-x64.zip +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/discover_experiment_files.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/lab_book_formatter.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/lcms_file_categorizer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/lcms_identifier.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/mass_resolver.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/multi_lcms_analyzer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/procedure_writer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/extract_nmr.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/format_procedure_entry.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/lcms_analyzer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/parse_analysis_file.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/cdxml_builder.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/cdxml_utils.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/_chemscript_server.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/cdx_converter.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/cdxml_to_image.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/cdxml_to_image_rdkit.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/chemdraw/chemscript_bridge.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/constants.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/coord_normalizer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/eln_cdx_cleanup.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/eln_enrichment.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/scheme_aligner.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/scheme_polisher.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/scheme_polisher_v2.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/scheme_reader_audit.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/scheme_reader_verify.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/image/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/image/reaction_from_image.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/image/structure_from_image.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/layout/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/layout/alignment.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/layout/reaction_cleanup.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/layout/scheme_merger.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/mcp_server/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/mcp_server/__main__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/mcp_server/server.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/naming/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/naming/aligned_namer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/naming/name_decomposer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/naming/reactions_datamol.json +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/office/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/office/doc_from_template.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/office/ole_embedder.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/office/ole_extractor.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/compound_search.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/eln_csv_parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/rdf_parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/reactant_heuristic.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/reaction_parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/scheme_reader.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/scheme_refine.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/scheme_segmenter.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/perception/spatial_assignment.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/rdkit_utils.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/auto_layout.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/compact_parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/render_scheme.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/renderer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/schema.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/scheme_maker.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/render/scheme_yaml_writer.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/__init__.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/cas_resolver.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/chemscanner_abbreviations.json +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/condensed_formula.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/jre_manager.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/reagent_abbreviations.json +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/reagent_db.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/superatom_data.json +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/superatom_table.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/text_formatting.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit.egg-info/SOURCES.txt +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit.egg-info/dependency_links.txt +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit.egg-info/entry_points.txt +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit.egg-info/requires.txt +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit.egg-info/top_level.txt +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/setup.cfg +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_builder.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_cdxml_utils.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_condensed_formula.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_constants.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_merge_yaml.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_rdkit_utils.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_reaction_parser.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_reagent_db.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_scheme_maker.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_scheme_reader.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_smoke.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_smoke_extended.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_spatial_assignment.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_superatom_table.py +0 -0
- {cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/tests/test_text_formatting.py +0 -0
|
@@ -350,6 +350,20 @@ def _try_validate(name: str, use_network: bool = True) -> Optional[str]:
|
|
|
350
350
|
if smi:
|
|
351
351
|
return smi
|
|
352
352
|
|
|
353
|
+
# OPSIN fallback (offline IUPAC name resolution, bundled JRE)
|
|
354
|
+
try:
|
|
355
|
+
from cdxml_toolkit.resolve.jre_manager import ensure_java_on_path
|
|
356
|
+
if ensure_java_on_path():
|
|
357
|
+
import warnings
|
|
358
|
+
from py2opsin import py2opsin as _py2opsin
|
|
359
|
+
with warnings.catch_warnings():
|
|
360
|
+
warnings.simplefilter("ignore", RuntimeWarning)
|
|
361
|
+
smi = _py2opsin(name)
|
|
362
|
+
if smi and Chem.MolFromSmiles(smi):
|
|
363
|
+
return _rdkit_canonical(smi)
|
|
364
|
+
except (ImportError, FileNotFoundError):
|
|
365
|
+
pass
|
|
366
|
+
|
|
353
367
|
# PubChem fallback (for common names)
|
|
354
368
|
if use_network:
|
|
355
369
|
try:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cdxml-toolkit"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.4"
|
|
8
8
|
description = "MCP server and Python toolkit for perception, rendering, and analysis of molecules and reaction schemes in ChemDraw CDXML."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -26,21 +26,34 @@ from cdxml_toolkit.naming.mol_builder import (
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# ---------------------------------------------------------------------------
|
|
29
|
-
# Helper: check if
|
|
29
|
+
# Helper: check if a name-to-structure backend is available
|
|
30
30
|
# ---------------------------------------------------------------------------
|
|
31
31
|
|
|
32
|
-
def
|
|
32
|
+
def _name_resolver_available():
|
|
33
|
+
"""Return True if ChemScript or OPSIN can resolve IUPAC names."""
|
|
34
|
+
# Try ChemScript first
|
|
33
35
|
try:
|
|
34
36
|
from cdxml_toolkit.chemdraw.chemscript_bridge import ChemScriptBridge
|
|
35
37
|
ChemScriptBridge()
|
|
36
38
|
return True
|
|
37
39
|
except Exception:
|
|
38
|
-
|
|
40
|
+
pass
|
|
41
|
+
# Try OPSIN (bundled offline fallback)
|
|
42
|
+
try:
|
|
43
|
+
from cdxml_toolkit.resolve.jre_manager import ensure_java_on_path
|
|
44
|
+
if ensure_java_on_path():
|
|
45
|
+
from py2opsin import py2opsin as _py2opsin
|
|
46
|
+
smi = _py2opsin("benzene")
|
|
47
|
+
if smi:
|
|
48
|
+
return True
|
|
49
|
+
except Exception:
|
|
50
|
+
pass
|
|
51
|
+
return False
|
|
39
52
|
|
|
40
53
|
|
|
41
54
|
needs_chemscript = pytest.mark.skipif(
|
|
42
|
-
not
|
|
43
|
-
reason="ChemScript
|
|
55
|
+
not _name_resolver_available(),
|
|
56
|
+
reason="No name resolver available (neither ChemScript nor OPSIN)",
|
|
44
57
|
)
|
|
45
58
|
|
|
46
59
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/lcms_identifier.py
RENAMED
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/mass_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/deterministic/procedure_writer.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/analysis/format_procedure_entry.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
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/__init__.py
RENAMED
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/deterministic_pipeline/legacy/__init__.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
|
|
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
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/chemscanner_abbreviations.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdxml_toolkit-0.5.3 → cdxml_toolkit-0.5.4}/cdxml_toolkit/resolve/reagent_abbreviations.json
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
|