rowan-python 2.1.1__tar.gz → 2.1.3__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.
Files changed (48) hide show
  1. {rowan_python-2.1.1 → rowan_python-2.1.3}/PKG-INFO +1 -1
  2. rowan_python-2.1.3/examples/basic_calculation.py +21 -0
  3. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/basic_calculation_with_solvent.py +0 -4
  4. rowan_python-2.1.3/examples/fukui_index.py +16 -0
  5. rowan_python-2.1.3/examples/redox_potential.py +21 -0
  6. rowan_python-2.1.3/examples/tautomer.py +15 -0
  7. {rowan_python-2.1.1 → rowan_python-2.1.3}/pixi.lock +103 -116
  8. {rowan_python-2.1.1 → rowan_python-2.1.3}/pyproject.toml +1 -1
  9. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/protein.py +7 -3
  10. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/workflow.py +109 -88
  11. {rowan_python-2.1.1 → rowan_python-2.1.3}/.envrc +0 -0
  12. {rowan_python-2.1.1 → rowan_python-2.1.3}/.github/workflows/python-publish.yml +0 -0
  13. {rowan_python-2.1.1 → rowan_python-2.1.3}/.github/workflows/test.yml +0 -0
  14. {rowan_python-2.1.1 → rowan_python-2.1.3}/.gitignore +0 -0
  15. {rowan_python-2.1.1 → rowan_python-2.1.3}/.pre-commit-config.yaml +0 -0
  16. {rowan_python-2.1.1 → rowan_python-2.1.3}/LICENSE +0 -0
  17. {rowan_python-2.1.1 → rowan_python-2.1.3}/README.md +0 -0
  18. {rowan_python-2.1.1 → rowan_python-2.1.3}/docs/images/deciduous-tree-favicon.png +0 -0
  19. {rowan_python-2.1.1 → rowan_python-2.1.3}/docs/index.md +0 -0
  20. {rowan_python-2.1.1 → rowan_python-2.1.3}/docs/rowan_rdkit.md +0 -0
  21. {rowan_python-2.1.1 → rowan_python-2.1.3}/docs/stylesheets/colors.css +0 -0
  22. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/PROTAC_solubility.py +0 -0
  23. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/basic_calculation_from_json.py +0 -0
  24. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/basic_calculation_with_constraint.py +0 -0
  25. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/bde.py +0 -0
  26. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/cofolding_screen.py +0 -0
  27. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/conformer_dependent_redox.py +0 -0
  28. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/conformers.py +0 -0
  29. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/data/workflow_example.json +0 -0
  30. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/docking_screen.py +0 -0
  31. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/irc.py +0 -0
  32. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/macropka.py +0 -0
  33. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/multistage_opt.py +0 -0
  34. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/optimization.py +0 -0
  35. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/phenol_pka.py +0 -0
  36. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/pka.py +0 -0
  37. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/protein_cofolding.py +0 -0
  38. {rowan_python-2.1.1 → rowan_python-2.1.3}/examples/scan.py +0 -0
  39. {rowan_python-2.1.1 → rowan_python-2.1.3}/mkdocs.yml +0 -0
  40. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/__init__.py +0 -0
  41. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/constants.py +0 -0
  42. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/folder.py +0 -0
  43. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/project.py +0 -0
  44. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/py.typed +0 -0
  45. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/rowan_rdkit/__init__.py +0 -0
  46. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/rowan_rdkit/chem_utils.py +0 -0
  47. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/user.py +0 -0
  48. {rowan_python-2.1.1 → rowan_python-2.1.3}/rowan/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rowan-python
3
- Version: 2.1.1
3
+ Version: 2.1.3
4
4
  Summary: Rowan Python Library
5
5
  Project-URL: Homepage, https://github.com/rowansci/rowan-client
6
6
  Project-URL: Bug Tracker, https://github.com/rowansci/rowan-client/issues
@@ -0,0 +1,21 @@
1
+ # ruff: noqa
2
+ from stjames import Molecule, Method
3
+
4
+ import rowan
5
+
6
+ # rowan.api_key = ""
7
+
8
+
9
+ result = rowan.submit_basic_calculation_workflow(
10
+ initial_molecule=Molecule.from_smiles("CC(=C)C=C"),
11
+ method=Method.OMOL25_CONSERVING_S,
12
+ tasks=["energy"],
13
+ mode="auto",
14
+ engine="omol25",
15
+ name="Isoprene Energy",
16
+ )
17
+
18
+ result.wait_for_result()
19
+ result.fetch_latest(in_place=True)
20
+
21
+ print(result)
@@ -1,8 +1,4 @@
1
1
  # ruff: noqa
2
-
3
- import os
4
- import sys
5
-
6
2
  from stjames import Molecule, Method
7
3
 
8
4
  import rowan
@@ -0,0 +1,16 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # Set ROWAN_API_KEY environment variable to your API key or set rowan.api_key directly
6
+ # rowan.api_key = "rowan-sk..."
7
+
8
+ result = rowan.submit_fukui_workflow(
9
+ initial_molecule=Molecule.from_smiles("C1=CC=C(C=C1)C(=O)O"),
10
+ optimization_method="gfn2_xtb",
11
+ fukui_method="gfn1_xtb",
12
+ name="Benzoic Acid Fukui",
13
+ )
14
+
15
+
16
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -0,0 +1,21 @@
1
+ """
2
+ Calculate the redox potential of a molecule using the Rowan API.
3
+
4
+ See documentiation at: https://docs.rowansci.com/science/workflows/redox-potential
5
+ """
6
+
7
+ from stjames import Molecule
8
+
9
+ import rowan
10
+
11
+ # rowan.api_key = ""
12
+
13
+ result = rowan.submit_redox_potential_workflow(
14
+ initial_molecule=Molecule.from_smiles("C1=CC=C(C=C1)C(=O)O"),
15
+ mode="reckless",
16
+ name="Benzoic Acid Redox Potential",
17
+ oxidization=True,
18
+ reduction=True,
19
+ )
20
+
21
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -0,0 +1,15 @@
1
+ from stjames import Molecule
2
+
3
+ import rowan
4
+
5
+ # Set ROWAN_API_KEY environment variable to your API key or set rowan.api_key directly
6
+ # rowan.api_key = "rowan-sk..."
7
+
8
+ result = rowan.submit_tautomer_search_workflow(
9
+ initial_molecule=Molecule.from_smiles("O=C1C=CC=CN1"),
10
+ mode="reckless",
11
+ name="2-Pyridone Tautomers",
12
+ )
13
+
14
+
15
+ print(result.wait_for_result().fetch_latest(in_place=True))
@@ -37,18 +37,18 @@ environments:
37
37
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
38
38
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
39
39
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
40
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
40
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
41
41
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
42
42
  - pypi: https://files.pythonhosted.org/packages/1d/0f/571b2c7a3833ae419fe69ff7b479a78d313581785203cc70a8db90121b9a/numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
43
43
  - pypi: https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
44
44
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
45
45
  - pypi: https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
46
46
  - pypi: https://files.pythonhosted.org/packages/8b/6a/c6ec8e124bc621ce0706894f877c6f57d7c9c53cbc73510ac046d40b4dc7/rdkit-2025.3.5-cp313-cp313-manylinux_2_28_x86_64.whl
47
- - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl
47
+ - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
48
48
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
49
49
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
50
- - pypi: https://files.pythonhosted.org/packages/5b/90/184bc0c808dc643dfd35bd6cca3c7cf0e23cc8a8982fa93fdd9d5d5e7710/stjames-0.0.99-py3-none-any.whl
51
- - pypi: https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl
50
+ - pypi: https://files.pythonhosted.org/packages/ed/96/f3b274b32a711fad65f317731411a6fefc65c6d738926dc9d1e607bddb81/stjames-0.0.102-py3-none-any.whl
51
+ - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
52
52
  - pypi: https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl
53
53
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
54
54
  - pypi: ./
@@ -77,18 +77,18 @@ environments:
77
77
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
78
78
  - pypi: https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl
79
79
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
80
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
80
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
81
81
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
82
82
  - pypi: https://files.pythonhosted.org/packages/20/4e/c116466d22acaf4573e58421c956c6076dc526e24a6be0903219775d862e/numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl
83
83
  - pypi: https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl
84
84
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
85
85
  - pypi: https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl
86
86
  - pypi: https://files.pythonhosted.org/packages/c6/1d/4cc7d00c388dde4cb4ce6ff7c4314f0f2c0e342d5b7a7b779fc12c32cf5a/rdkit-2025.3.5-cp313-cp313-macosx_11_0_arm64.whl
87
- - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl
87
+ - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
88
88
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
89
89
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
90
- - pypi: https://files.pythonhosted.org/packages/5b/90/184bc0c808dc643dfd35bd6cca3c7cf0e23cc8a8982fa93fdd9d5d5e7710/stjames-0.0.99-py3-none-any.whl
91
- - pypi: https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl
90
+ - pypi: https://files.pythonhosted.org/packages/ed/96/f3b274b32a711fad65f317731411a6fefc65c6d738926dc9d1e607bddb81/stjames-0.0.102-py3-none-any.whl
91
+ - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
92
92
  - pypi: https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl
93
93
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
94
94
  - pypi: ./
@@ -131,13 +131,13 @@ environments:
131
131
  - pypi: https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
132
132
  - pypi: https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl
133
133
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
134
- - pypi: https://files.pythonhosted.org/packages/ea/2f/6ae1db51dc34db499bfe340e89f79a63bd115fc32513a7bacdf17d33cd86/coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
134
+ - pypi: https://files.pythonhosted.org/packages/73/dd/508420fb47d09d904d962f123221bc249f64b5e56aa93d5f5f7603be475f/coverage-7.10.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
135
135
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
136
136
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
137
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
138
- - pypi: https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl
137
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
138
+ - pypi: https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl
139
139
  - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
140
- - pypi: https://files.pythonhosted.org/packages/d7/4b/d1048082a7c9af83c0a426880a7bbebb517b3646a6e57f43315421c672b6/griffe-1.12.0-py3-none-any.whl
140
+ - pypi: https://files.pythonhosted.org/packages/aa/8c/b7cfdd8dfe48f6b09f7353323732e1a290c388bd14f216947928dc85f904/griffe-1.13.0-py3-none-any.whl
141
141
  - pypi: https://files.pythonhosted.org/packages/7b/03/699f059a54b7873a11bf53389236c06640bf47be590aa87a521d7c4bb044/griffe_pydantic-1.1.6-py3-none-any.whl
142
142
  - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
143
143
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
@@ -145,7 +145,7 @@ environments:
145
145
  - pypi: https://files.pythonhosted.org/packages/e7/ce/461b60a3ee109518c055953729bf9ed089a04db895d47e95444071dcdef2/identify-2.6.13-py2.py3-none-any.whl
146
146
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
147
147
  - pypi: https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl
148
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
148
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
149
149
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
150
150
  - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl
151
151
  - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
@@ -154,13 +154,13 @@ environments:
154
154
  - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl
155
155
  - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
156
156
  - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
157
- - pypi: https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl
157
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
158
158
  - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
159
- - pypi: https://files.pythonhosted.org/packages/65/f4/90ad67125b4dd66e7884e4dbdfab82e3679eb92b751116f8bb25ccfe2f0c/mkdocs_material-9.6.16-py3-none-any.whl
159
+ - pypi: https://files.pythonhosted.org/packages/22/0b/545a4f8d4f9057e77f1d99640eb09aaae40c4f9034707f25636caf716ff9/mkdocs_material-9.6.18-py3-none-any.whl
160
160
  - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
161
161
  - pypi: https://files.pythonhosted.org/packages/de/b4/3c5eac68f31e124a55d255d318c7445840fa1be55e013f507556d6481913/mkdocstrings-0.30.0-py3-none-any.whl
162
- - pypi: https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl
163
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
162
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
163
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
164
164
  - pypi: https://files.pythonhosted.org/packages/9f/0f/478b4dce1cb4f43cf0f0d00fba3030b21ca04a01b74d1cd272a528cf446f/mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
165
165
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
166
166
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
@@ -168,14 +168,14 @@ environments:
168
168
  - pypi: https://files.pythonhosted.org/packages/1d/0f/571b2c7a3833ae419fe69ff7b479a78d313581785203cc70a8db90121b9a/numpy-2.3.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
169
169
  - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
170
170
  - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
171
- - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl
171
+ - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
172
172
  - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl
173
173
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
174
174
  - pypi: https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
175
- - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl
175
+ - pypi: https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl
176
176
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
177
177
  - pypi: https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl
178
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
178
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
179
179
  - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl
180
180
  - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
181
181
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
@@ -189,15 +189,15 @@ environments:
189
189
  - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
190
190
  - pypi: https://files.pythonhosted.org/packages/8b/6a/c6ec8e124bc621ce0706894f877c6f57d7c9c53cbc73510ac046d40b4dc7/rdkit-2025.3.5-cp313-cp313-manylinux_2_28_x86_64.whl
191
191
  - pypi: https://files.pythonhosted.org/packages/d9/0f/90088510d4758e0ee475ae1fc7f96e7bccd0e31f24107567075482b2fe9e/rdkit_stubs-0.8-py3-none-any.whl
192
- - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl
193
- - pypi: https://files.pythonhosted.org/packages/e8/67/0c3c9179a3ad19791ef1b8f7138aa27d4578c78700551c60d9260b2c660d/ruff-0.12.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
192
+ - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
193
+ - pypi: https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
194
194
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
195
195
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
196
196
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
197
197
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
198
- - pypi: https://files.pythonhosted.org/packages/5b/90/184bc0c808dc643dfd35bd6cca3c7cf0e23cc8a8982fa93fdd9d5d5e7710/stjames-0.0.99-py3-none-any.whl
198
+ - pypi: https://files.pythonhosted.org/packages/ed/96/f3b274b32a711fad65f317731411a6fefc65c6d738926dc9d1e607bddb81/stjames-0.0.102-py3-none-any.whl
199
199
  - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
200
- - pypi: https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl
200
+ - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
201
201
  - pypi: https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl
202
202
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
203
203
  - pypi: https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl
@@ -231,13 +231,13 @@ environments:
231
231
  - pypi: https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl
232
232
  - pypi: https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl
233
233
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
234
- - pypi: https://files.pythonhosted.org/packages/56/da/28717da68f8ba68f14b9f558aaa8f3e39ada8b9a1ae4f4977c8f98b286d5/coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl
234
+ - pypi: https://files.pythonhosted.org/packages/eb/86/2e161b93a4f11d0ea93f9bebb6a53f113d5d6e416d7561ca41bb0a29996b/coverage-7.10.6-cp313-cp313-macosx_11_0_arm64.whl
235
235
  - pypi: https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl
236
236
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
237
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
238
- - pypi: https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl
237
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
238
+ - pypi: https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl
239
239
  - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
240
- - pypi: https://files.pythonhosted.org/packages/d7/4b/d1048082a7c9af83c0a426880a7bbebb517b3646a6e57f43315421c672b6/griffe-1.12.0-py3-none-any.whl
240
+ - pypi: https://files.pythonhosted.org/packages/aa/8c/b7cfdd8dfe48f6b09f7353323732e1a290c388bd14f216947928dc85f904/griffe-1.13.0-py3-none-any.whl
241
241
  - pypi: https://files.pythonhosted.org/packages/7b/03/699f059a54b7873a11bf53389236c06640bf47be590aa87a521d7c4bb044/griffe_pydantic-1.1.6-py3-none-any.whl
242
242
  - pypi: https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl
243
243
  - pypi: https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl
@@ -245,7 +245,7 @@ environments:
245
245
  - pypi: https://files.pythonhosted.org/packages/e7/ce/461b60a3ee109518c055953729bf9ed089a04db895d47e95444071dcdef2/identify-2.6.13-py2.py3-none-any.whl
246
246
  - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl
247
247
  - pypi: https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl
248
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
248
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
249
249
  - pypi: https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl
250
250
  - pypi: https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl
251
251
  - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl
@@ -254,13 +254,13 @@ environments:
254
254
  - pypi: https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl
255
255
  - pypi: https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl
256
256
  - pypi: https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl
257
- - pypi: https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl
257
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
258
258
  - pypi: https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl
259
- - pypi: https://files.pythonhosted.org/packages/65/f4/90ad67125b4dd66e7884e4dbdfab82e3679eb92b751116f8bb25ccfe2f0c/mkdocs_material-9.6.16-py3-none-any.whl
259
+ - pypi: https://files.pythonhosted.org/packages/22/0b/545a4f8d4f9057e77f1d99640eb09aaae40c4f9034707f25636caf716ff9/mkdocs_material-9.6.18-py3-none-any.whl
260
260
  - pypi: https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl
261
261
  - pypi: https://files.pythonhosted.org/packages/de/b4/3c5eac68f31e124a55d255d318c7445840fa1be55e013f507556d6481913/mkdocstrings-0.30.0-py3-none-any.whl
262
- - pypi: https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl
263
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
262
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
263
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
264
264
  - pypi: https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl
265
265
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
266
266
  - pypi: https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl
@@ -268,14 +268,14 @@ environments:
268
268
  - pypi: https://files.pythonhosted.org/packages/20/4e/c116466d22acaf4573e58421c956c6076dc526e24a6be0903219775d862e/numpy-2.3.2-cp313-cp313-macosx_11_0_arm64.whl
269
269
  - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
270
270
  - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl
271
- - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl
271
+ - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
272
272
  - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl
273
273
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
274
274
  - pypi: https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl
275
- - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl
275
+ - pypi: https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl
276
276
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
277
277
  - pypi: https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl
278
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
278
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
279
279
  - pypi: https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl
280
280
  - pypi: https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl
281
281
  - pypi: https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl
@@ -289,15 +289,15 @@ environments:
289
289
  - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl
290
290
  - pypi: https://files.pythonhosted.org/packages/c6/1d/4cc7d00c388dde4cb4ce6ff7c4314f0f2c0e342d5b7a7b779fc12c32cf5a/rdkit-2025.3.5-cp313-cp313-macosx_11_0_arm64.whl
291
291
  - pypi: https://files.pythonhosted.org/packages/d9/0f/90088510d4758e0ee475ae1fc7f96e7bccd0e31f24107567075482b2fe9e/rdkit_stubs-0.8-py3-none-any.whl
292
- - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl
293
- - pypi: https://files.pythonhosted.org/packages/99/9d/e91f84dfe3866fa648c10512904991ecc326fd0b66578b324ee6ecb8f725/ruff-0.12.8-py3-none-macosx_11_0_arm64.whl
292
+ - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
293
+ - pypi: https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl
294
294
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
295
295
  - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl
296
296
  - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl
297
297
  - pypi: https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl
298
- - pypi: https://files.pythonhosted.org/packages/5b/90/184bc0c808dc643dfd35bd6cca3c7cf0e23cc8a8982fa93fdd9d5d5e7710/stjames-0.0.99-py3-none-any.whl
298
+ - pypi: https://files.pythonhosted.org/packages/ed/96/f3b274b32a711fad65f317731411a6fefc65c6d738926dc9d1e607bddb81/stjames-0.0.102-py3-none-any.whl
299
299
  - pypi: https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl
300
- - pypi: https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl
300
+ - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
301
301
  - pypi: https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl
302
302
  - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl
303
303
  - pypi: https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl
@@ -439,17 +439,17 @@ packages:
439
439
  version: 0.4.6
440
440
  sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
441
441
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
442
- - pypi: https://files.pythonhosted.org/packages/56/da/28717da68f8ba68f14b9f558aaa8f3e39ada8b9a1ae4f4977c8f98b286d5/coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl
442
+ - pypi: https://files.pythonhosted.org/packages/73/dd/508420fb47d09d904d962f123221bc249f64b5e56aa93d5f5f7603be475f/coverage-7.10.6-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
443
443
  name: coverage
444
- version: 7.10.3
445
- sha256: 4af09c7574d09afbc1ea7da9dcea23665c01f3bc1b1feb061dac135f98ffc53a
444
+ version: 7.10.6
445
+ sha256: 0f3f56e4cb573755e96a16501a98bf211f100463d70275759e73f3cbc00d4f27
446
446
  requires_dist:
447
447
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
448
448
  requires_python: '>=3.9'
449
- - pypi: https://files.pythonhosted.org/packages/ea/2f/6ae1db51dc34db499bfe340e89f79a63bd115fc32513a7bacdf17d33cd86/coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
449
+ - pypi: https://files.pythonhosted.org/packages/eb/86/2e161b93a4f11d0ea93f9bebb6a53f113d5d6e416d7561ca41bb0a29996b/coverage-7.10.6-cp313-cp313-macosx_11_0_arm64.whl
450
450
  name: coverage
451
- version: 7.10.3
452
- sha256: 913ceddb4289cbba3a310704a424e3fb7aac2bc0c3a23ea473193cb290cf17d4
451
+ version: 7.10.6
452
+ sha256: 95d91d7317cde40a1c249d6b7382750b7e6d86fad9d8eaf4fa3f8f44cf171e80
453
453
  requires_dist:
454
454
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
455
455
  requires_python: '>=3.9'
@@ -462,10 +462,10 @@ packages:
462
462
  name: distlib
463
463
  version: 0.4.0
464
464
  sha256: 9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16
465
- - pypi: https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl
465
+ - pypi: https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl
466
466
  name: executing
467
- version: 2.2.0
468
- sha256: 11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa
467
+ version: 2.2.1
468
+ sha256: 760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017
469
469
  requires_dist:
470
470
  - asttokens>=2.1.0 ; extra == 'tests'
471
471
  - ipython ; extra == 'tests'
@@ -475,24 +475,10 @@ packages:
475
475
  - littleutils ; extra == 'tests'
476
476
  - rich ; python_full_version >= '3.11' and extra == 'tests'
477
477
  requires_python: '>=3.8'
478
- - pypi: https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl
478
+ - pypi: https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl
479
479
  name: filelock
480
- version: 3.18.0
481
- sha256: c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de
482
- requires_dist:
483
- - furo>=2024.8.6 ; extra == 'docs'
484
- - sphinx-autodoc-typehints>=3 ; extra == 'docs'
485
- - sphinx>=8.1.3 ; extra == 'docs'
486
- - covdefaults>=2.3 ; extra == 'testing'
487
- - coverage>=7.6.10 ; extra == 'testing'
488
- - diff-cover>=9.2.1 ; extra == 'testing'
489
- - pytest-asyncio>=0.25.2 ; extra == 'testing'
490
- - pytest-cov>=6 ; extra == 'testing'
491
- - pytest-mock>=3.14 ; extra == 'testing'
492
- - pytest-timeout>=2.3.1 ; extra == 'testing'
493
- - pytest>=8.3.4 ; extra == 'testing'
494
- - virtualenv>=20.28.1 ; extra == 'testing'
495
- - typing-extensions>=4.12.2 ; python_full_version < '3.11' and extra == 'typing'
480
+ version: 3.19.1
481
+ sha256: d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d
496
482
  requires_python: '>=3.9'
497
483
  - pypi: https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl
498
484
  name: ghp-import
@@ -504,10 +490,10 @@ packages:
504
490
  - markdown ; extra == 'dev'
505
491
  - flake8 ; extra == 'dev'
506
492
  - wheel ; extra == 'dev'
507
- - pypi: https://files.pythonhosted.org/packages/d7/4b/d1048082a7c9af83c0a426880a7bbebb517b3646a6e57f43315421c672b6/griffe-1.12.0-py3-none-any.whl
493
+ - pypi: https://files.pythonhosted.org/packages/aa/8c/b7cfdd8dfe48f6b09f7353323732e1a290c388bd14f216947928dc85f904/griffe-1.13.0-py3-none-any.whl
508
494
  name: griffe
509
- version: 1.12.0
510
- sha256: 634cf7bf93ab7d12003f3704043e8e530637fc3d40c67a2a052e57d2fcde173a
495
+ version: 1.13.0
496
+ sha256: 470fde5b735625ac0a36296cd194617f039e9e83e301fcbd493e2b58382d0559
511
497
  requires_dist:
512
498
  - colorama>=0.4
513
499
  requires_python: '>=3.9'
@@ -585,10 +571,10 @@ packages:
585
571
  version: 2.1.0
586
572
  sha256: 9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760
587
573
  requires_python: '>=3.8'
588
- - pypi: https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl
574
+ - pypi: https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl
589
575
  name: ipython
590
- version: 9.4.0
591
- sha256: 25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066
576
+ version: 9.5.0
577
+ sha256: 88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72
592
578
  requires_dist:
593
579
  - colorama ; sys_platform == 'win32'
594
580
  - decorator
@@ -614,7 +600,7 @@ packages:
614
600
  - sphinx>=1.3 ; extra == 'doc'
615
601
  - typing-extensions ; extra == 'doc'
616
602
  - pytest ; extra == 'test'
617
- - pytest-asyncio<0.22 ; extra == 'test'
603
+ - pytest-asyncio ; extra == 'test'
618
604
  - testpath ; extra == 'test'
619
605
  - packaging ; extra == 'test'
620
606
  - ipython[test] ; extra == 'test-extra'
@@ -952,10 +938,10 @@ packages:
952
938
  - pyyaml==5.1 ; extra == 'min-versions'
953
939
  - watchdog==2.0 ; extra == 'min-versions'
954
940
  requires_python: '>=3.8'
955
- - pypi: https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl
941
+ - pypi: https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl
956
942
  name: mkdocs-autorefs
957
- version: 1.4.2
958
- sha256: 83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13
943
+ version: 1.4.3
944
+ sha256: 469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9
959
945
  requires_dist:
960
946
  - markdown>=3.3
961
947
  - markupsafe>=2.0.1
@@ -971,13 +957,14 @@ packages:
971
957
  - platformdirs>=2.2.0
972
958
  - pyyaml>=5.1
973
959
  requires_python: '>=3.8'
974
- - pypi: https://files.pythonhosted.org/packages/65/f4/90ad67125b4dd66e7884e4dbdfab82e3679eb92b751116f8bb25ccfe2f0c/mkdocs_material-9.6.16-py3-none-any.whl
960
+ - pypi: https://files.pythonhosted.org/packages/22/0b/545a4f8d4f9057e77f1d99640eb09aaae40c4f9034707f25636caf716ff9/mkdocs_material-9.6.18-py3-none-any.whl
975
961
  name: mkdocs-material
976
- version: 9.6.16
977
- sha256: 8d1a1282b892fe1fdf77bfeb08c485ba3909dd743c9ba69a19a40f637c6ec18c
962
+ version: 9.6.18
963
+ sha256: dbc1e146a0ecce951a4d84f97b816a54936cdc9e1edd1667fc6868878ac06701
978
964
  requires_dist:
979
965
  - babel~=2.10
980
966
  - backrefs~=5.7.post1
967
+ - click<8.2.2
981
968
  - colorama~=0.4
982
969
  - jinja2~=3.1
983
970
  - markdown~=3.2
@@ -1016,20 +1003,20 @@ packages:
1016
1003
  - mkdocstrings-python-legacy>=0.2.1 ; extra == 'python-legacy'
1017
1004
  - mkdocstrings-python>=1.16.2 ; extra == 'python'
1018
1005
  requires_python: '>=3.9'
1019
- - pypi: https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl
1006
+ - pypi: https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl
1020
1007
  name: mkdocstrings-python
1021
- version: 1.16.12
1022
- sha256: 22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374
1008
+ version: 1.18.2
1009
+ sha256: 944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d
1023
1010
  requires_dist:
1024
- - mkdocstrings>=0.28.3
1011
+ - mkdocstrings>=0.30
1025
1012
  - mkdocs-autorefs>=1.4
1026
- - griffe>=1.6.2
1013
+ - griffe>=1.13
1027
1014
  - typing-extensions>=4.0 ; python_full_version < '3.11'
1028
1015
  requires_python: '>=3.9'
1029
- - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl
1016
+ - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
1030
1017
  name: more-itertools
1031
- version: 10.7.0
1032
- sha256: d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e
1018
+ version: 10.8.0
1019
+ sha256: 52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b
1033
1020
  requires_python: '>=3.9'
1034
1021
  - pypi: https://files.pythonhosted.org/packages/07/ac/ee93fbde9d2242657128af8c86f5d917cd2887584cf948a8e3663d0cd737/mypy-1.17.1-cp313-cp313-macosx_11_0_arm64.whl
1035
1022
  name: mypy
@@ -1141,16 +1128,16 @@ packages:
1141
1128
  - pytest ; extra == 'dev'
1142
1129
  - tox ; extra == 'dev'
1143
1130
  - black ; extra == 'lint'
1144
- - pypi: https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl
1131
+ - pypi: https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl
1145
1132
  name: parso
1146
- version: 0.8.4
1147
- sha256: a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18
1133
+ version: 0.8.5
1134
+ sha256: 646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887
1148
1135
  requires_dist:
1136
+ - pytest ; extra == 'testing'
1137
+ - docopt ; extra == 'testing'
1149
1138
  - flake8==5.0.4 ; extra == 'qa'
1150
1139
  - mypy==0.971 ; extra == 'qa'
1151
1140
  - types-setuptools==67.2.0.1 ; extra == 'qa'
1152
- - docopt ; extra == 'testing'
1153
- - pytest ; extra == 'testing'
1154
1141
  requires_python: '>=3.6'
1155
1142
  - pypi: https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl
1156
1143
  name: pathspec
@@ -1223,10 +1210,10 @@ packages:
1223
1210
  - typing-extensions ; python_full_version < '3.10' and extra == 'typing'
1224
1211
  - defusedxml ; extra == 'xmp'
1225
1212
  requires_python: '>=3.9'
1226
- - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl
1213
+ - pypi: https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl
1227
1214
  name: platformdirs
1228
- version: 4.3.8
1229
- sha256: ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4
1215
+ version: 4.4.0
1216
+ sha256: abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85
1230
1217
  requires_dist:
1231
1218
  - furo>=2024.8.6 ; extra == 'docs'
1232
1219
  - proselint>=0.14 ; extra == 'docs'
@@ -1261,10 +1248,10 @@ packages:
1261
1248
  - pyyaml>=5.1
1262
1249
  - virtualenv>=20.10.0
1263
1250
  requires_python: '>=3.9'
1264
- - pypi: https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl
1251
+ - pypi: https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl
1265
1252
  name: prompt-toolkit
1266
- version: 3.0.51
1267
- sha256: 52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07
1253
+ version: 3.0.52
1254
+ sha256: 9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955
1268
1255
  requires_dist:
1269
1256
  - wcwidth
1270
1257
  requires_python: '>=3.8'
@@ -1480,10 +1467,10 @@ packages:
1480
1467
  purls: []
1481
1468
  size: 252359
1482
1469
  timestamp: 1740379663071
1483
- - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl
1470
+ - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
1484
1471
  name: requests
1485
- version: 2.32.4
1486
- sha256: 27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c
1472
+ version: 2.32.5
1473
+ sha256: 2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6
1487
1474
  requires_dist:
1488
1475
  - charset-normalizer>=2,<4
1489
1476
  - idna>=2.5,<4
@@ -1491,11 +1478,11 @@ packages:
1491
1478
  - certifi>=2017.4.17
1492
1479
  - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks'
1493
1480
  - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3'
1494
- requires_python: '>=3.8'
1481
+ requires_python: '>=3.9'
1495
1482
  - pypi: ./
1496
1483
  name: rowan-python
1497
- version: 2.1.1
1498
- sha256: 73d6bc87006a2cb62e35e15b2e7cf63fe9f57221430af510ea4d83e105001d15
1484
+ version: 2.1.3
1485
+ sha256: 42fdb4e667a0c2c279bbf99762920eda972eb32ca9f885b57dcf438815833ecc
1499
1486
  requires_dist:
1500
1487
  - httpx
1501
1488
  - stjames>=0.0.83
@@ -1504,15 +1491,15 @@ packages:
1504
1491
  - nest-asyncio
1505
1492
  requires_python: '>=3.9'
1506
1493
  editable: true
1507
- - pypi: https://files.pythonhosted.org/packages/99/9d/e91f84dfe3866fa648c10512904991ecc326fd0b66578b324ee6ecb8f725/ruff-0.12.8-py3-none-macosx_11_0_arm64.whl
1494
+ - pypi: https://files.pythonhosted.org/packages/2c/0d/15b72c5fe6b1e402a543aa9d8960e0a7e19dfb079f5b0b424db48b7febab/ruff-0.12.11-py3-none-macosx_11_0_arm64.whl
1508
1495
  name: ruff
1509
- version: 0.12.8
1510
- sha256: 2fae54e752a3150f7ee0e09bce2e133caf10ce9d971510a9b925392dc98d2fec
1496
+ version: 0.12.11
1497
+ sha256: d69fb9d4937aa19adb2e9f058bc4fbfe986c2040acb1a4a9747734834eaa0bfd
1511
1498
  requires_python: '>=3.7'
1512
- - pypi: https://files.pythonhosted.org/packages/e8/67/0c3c9179a3ad19791ef1b8f7138aa27d4578c78700551c60d9260b2c660d/ruff-0.12.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
1499
+ - pypi: https://files.pythonhosted.org/packages/80/22/3c6cef96627f89b344c933781ed38329bfb87737aa438f15da95907cbfd5/ruff-0.12.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
1513
1500
  name: ruff
1514
- version: 0.12.8
1515
- sha256: 560e0cd641e45591a3e42cb50ef61ce07162b9c233786663fdce2d8557d99818
1501
+ version: 0.12.11
1502
+ sha256: 4fc58f9266d62c6eccc75261a665f26b4ef64840887fc6cbc552ce5b29f96cc8
1516
1503
  requires_python: '>=3.7'
1517
1504
  - pypi: https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl
1518
1505
  name: setuptools
@@ -1594,10 +1581,10 @@ packages:
1594
1581
  - pygments ; extra == 'tests'
1595
1582
  - littleutils ; extra == 'tests'
1596
1583
  - cython ; extra == 'tests'
1597
- - pypi: https://files.pythonhosted.org/packages/5b/90/184bc0c808dc643dfd35bd6cca3c7cf0e23cc8a8982fa93fdd9d5d5e7710/stjames-0.0.99-py3-none-any.whl
1584
+ - pypi: https://files.pythonhosted.org/packages/ed/96/f3b274b32a711fad65f317731411a6fefc65c6d738926dc9d1e607bddb81/stjames-0.0.102-py3-none-any.whl
1598
1585
  name: stjames
1599
- version: 0.0.99
1600
- sha256: 28019a6dd4e4dab576aae7b5eb0b6477539ce79a8e22b02f11af2b1b91c32c4a
1586
+ version: 0.0.102
1587
+ sha256: 234b3e9680d1eaaf613cb8cc9f2084f8fe4920d0ac566e1e503c9e8d4ff73a4e
1601
1588
  requires_dist:
1602
1589
  - pydantic>=2.4
1603
1590
  - numpy
@@ -1643,10 +1630,10 @@ packages:
1643
1630
  - pytest-mypy-testing ; extra == 'test'
1644
1631
  - pytest>=7.0,<8.2 ; extra == 'test'
1645
1632
  requires_python: '>=3.8'
1646
- - pypi: https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl
1633
+ - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
1647
1634
  name: typing-extensions
1648
- version: 4.14.1
1649
- sha256: d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76
1635
+ version: 4.15.0
1636
+ sha256: f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
1650
1637
  requires_python: '>=3.9'
1651
1638
  - pypi: https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl
1652
1639
  name: typing-inspection
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rowan-python"
3
- version = "2.1.1"
3
+ version = "2.1.3"
4
4
  description = "Rowan Python Library"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
@@ -162,7 +162,7 @@ def list_proteins(
162
162
  return [Protein(**item) for item in results]
163
163
 
164
164
 
165
- def upload_protein(name: str, file_path: Path) -> Protein:
165
+ def upload_protein(name: str, file_path: Path, project_uuid: str | None = None) -> Protein:
166
166
  """
167
167
  Uploads a protein from a PDB file to the API.
168
168
 
@@ -181,7 +181,11 @@ def upload_protein(name: str, file_path: Path) -> Protein:
181
181
  protein_data = conversion_response.json()
182
182
 
183
183
  # Step 2: Use the converted data to create the final protein object.
184
- creation_payload = {"name": name, "protein_data": protein_data, "ancestor_uuid": None}
184
+ creation_payload = {
185
+ "name": name,
186
+ "protein_data": protein_data,
187
+ "project_uuid": project_uuid,
188
+ }
185
189
  final_response = client.post("/protein", json=creation_payload)
186
190
  final_response.raise_for_status()
187
191
 
@@ -189,7 +193,7 @@ def upload_protein(name: str, file_path: Path) -> Protein:
189
193
  return Protein(**final_response.json())
190
194
 
191
195
 
192
- def create_protein_from_pdb_id(name: str, code: str, project_uuid: str) -> Protein:
196
+ def create_protein_from_pdb_id(name: str, code: str, project_uuid: str | None = None) -> Protein:
193
197
  """
194
198
  Creates a protein from a PDB ID.
195
199
 
@@ -387,20 +387,21 @@ def submit_basic_calculation_workflow(
387
387
  if isinstance(method, str):
388
388
  method = stjames.Method(method)
389
389
 
390
- workflow_data = {
391
- "settings": {
392
- "method": method.name,
393
- "tasks": tasks,
394
- "mode": mode,
395
- },
396
- "engine": engine,
397
- }
390
+ workflow = stjames.BasicCalculationWorkflow(
391
+ initial_molecule=initial_molecule,
392
+ settings=stjames.Settings(
393
+ method=method,
394
+ tasks=tasks,
395
+ mode=mode,
396
+ ),
397
+ engine=engine,
398
+ )
398
399
 
399
400
  data = {
400
401
  "name": name,
401
402
  "folder_uuid": folder_uuid,
402
403
  "workflow_type": "basic_calculation",
403
- "workflow_data": workflow_data,
404
+ "workflow_data": workflow.model_dump(),
404
405
  "initial_molecule": initial_molecule,
405
406
  "max_credits": max_credits,
406
407
  }
@@ -466,19 +467,20 @@ def submit_conformer_search_workflow(
466
467
  optimization_settings=[opt_settings],
467
468
  )
468
469
 
469
- workflow_data = {
470
- "multistage_opt_settings": msos.model_dump(),
471
- "conf_gen_mode": conf_gen_mode,
472
- "mso_mode": "manual",
473
- "solvent": solvent,
474
- "transition_state": transition_state,
475
- }
470
+ workflow = stjames.ConformerSearchWorkflow(
471
+ initial_molecule=initial_molecule,
472
+ multistage_opt_settings=msos,
473
+ conf_gen_mode=conf_gen_mode,
474
+ mso_mode="manual",
475
+ solvent=solvent,
476
+ transition_state=transition_state,
477
+ )
476
478
 
477
479
  data = {
478
480
  "name": name,
479
481
  "folder_uuid": folder_uuid,
480
482
  "workflow_type": "conformer_search",
481
- "workflow_data": workflow_data,
483
+ "workflow_data": workflow.model_dump(),
482
484
  "initial_molecule": initial_molecule,
483
485
  "max_credits": max_credits,
484
486
  }
@@ -516,13 +518,17 @@ def submit_solubility_workflow(
516
518
  if not temperatures:
517
519
  temperatures = [273.15, 298.15, 323.15, 348.15, 373.15]
518
520
 
519
- workflow_data = {"solvents": solvents, "temperatures": temperatures}
521
+ workflow = stjames.SolubilityWorkflow(
522
+ initial_smiles=initial_smiles,
523
+ solvents=solvents,
524
+ temperatures=temperatures,
525
+ )
520
526
 
521
527
  data = {
522
528
  "name": name,
523
529
  "folder_uuid": folder_uuid,
524
530
  "workflow_type": "solubility",
525
- "workflow_data": workflow_data,
531
+ "workflow_data": workflow.model_dump(),
526
532
  "initial_smiles": initial_smiles,
527
533
  "max_credits": max_credits,
528
534
  }
@@ -567,18 +573,19 @@ def submit_pka_workflow(
567
573
  protonate_elements = protonate_elements or [7]
568
574
  deprotonate_elements = deprotonate_elements or [7, 8, 16]
569
575
 
570
- workflow_data = {
571
- "pka_range": pka_range,
572
- "deprotonate_elements": deprotonate_elements,
573
- "protonate_elements": protonate_elements,
574
- "mode": mode,
575
- }
576
+ workflow = stjames.pKaWorkflow(
577
+ initial_molecule=initial_molecule,
578
+ pka_range=pka_range,
579
+ deprotonate_elements=deprotonate_elements,
580
+ protonate_elements=protonate_elements,
581
+ mode=mode,
582
+ )
576
583
 
577
584
  data = {
578
585
  "name": name,
579
586
  "folder_uuid": folder_uuid,
580
587
  "workflow_type": "pka",
581
- "workflow_data": workflow_data,
588
+ "workflow_data": workflow.model_dump(),
582
589
  "initial_molecule": initial_molecule,
583
590
  "max_credits": max_credits,
584
591
  }
@@ -618,17 +625,18 @@ def submit_redox_potential_workflow(
618
625
  elif isinstance(initial_molecule, RdkitMol):
619
626
  initial_molecule = StJamesMolecule.from_rdkit(initial_molecule, cid=0)
620
627
 
621
- workflow_data = {
622
- "oxidation": oxidization,
623
- "reduction": reduction,
624
- "mode": mode,
625
- }
628
+ workflow = stjames.RedoxPotentialWorkflow(
629
+ initial_molecule=initial_molecule,
630
+ oxidation=oxidization,
631
+ reduction=reduction,
632
+ mode=mode,
633
+ )
626
634
 
627
635
  data = {
628
636
  "name": name,
629
637
  "folder_uuid": folder_uuid,
630
638
  "workflow_type": "redox_potential",
631
- "workflow_data": workflow_data,
639
+ "workflow_data": workflow.model_dump(),
632
640
  "initial_molecule": initial_molecule,
633
641
  "max_credits": max_credits,
634
642
  }
@@ -669,6 +677,12 @@ def submit_fukui_workflow(
669
677
  optimization_settings = stjames.Settings(method=optimization_method)
670
678
  fukui_settings = stjames.Settings(method=fukui_method, solvent_settings=solvent_settings)
671
679
 
680
+ stjames.FukuiIndexWorkflow(
681
+ initial_molecule=initial_molecule,
682
+ optimization_settings=optimization_settings,
683
+ fukui_settings=fukui_settings,
684
+ )
685
+
672
686
  workflow_data = {
673
687
  "opt_settings": optimization_settings.model_dump(),
674
688
  "opt_engine": stjames.Method(optimization_method).default_engine(),
@@ -716,15 +730,16 @@ def submit_tautomer_search_workflow(
716
730
  elif isinstance(initial_molecule, RdkitMol):
717
731
  initial_molecule = StJamesMolecule.from_rdkit(initial_molecule, cid=0)
718
732
 
719
- workflow_data = {
720
- "mode": mode,
721
- }
733
+ workflow = stjames.TautomerWorkflow(
734
+ initial_molecule=initial_molecule,
735
+ mode=mode,
736
+ )
722
737
 
723
738
  data = {
724
739
  "name": name,
725
740
  "folder_uuid": folder_uuid,
726
741
  "workflow_type": "tautomers",
727
- "workflow_data": workflow_data,
742
+ "workflow_data": workflow.model_dump(),
728
743
  "initial_molecule": initial_molecule,
729
744
  "max_credits": max_credits,
730
745
  }
@@ -805,24 +820,27 @@ def submit_scan_workflow(
805
820
  if isinstance(calculation_method, str):
806
821
  calculation_method = stjames.Method(calculation_method)
807
822
 
808
- workflow_data = {
809
- "wavefront_propagation": wavefront_propagation,
810
- "scan_settings": scan_settings,
811
- "calc_engine": calculation_engine,
812
- "calc_settings": {
813
- "method": calculation_method.name,
814
- "corrections": [],
815
- "tasks": ["optimize"],
816
- "mode": "auto",
817
- "opt_settings": {"constraints": []},
818
- },
819
- }
823
+ calc_settings = stjames.Settings(
824
+ method=calculation_method,
825
+ tasks=["optimize"],
826
+ corrections=[],
827
+ mode="auto",
828
+ opt_settings={"constraints": []},
829
+ )
830
+
831
+ workflow = stjames.ScanWorkflow(
832
+ initial_molecule=initial_molecule,
833
+ scan_settings=scan_settings,
834
+ calc_settings=calc_settings,
835
+ calc_engine=calculation_engine,
836
+ wavefront_propagation=wavefront_propagation,
837
+ )
820
838
 
821
839
  data = {
822
840
  "name": name,
823
841
  "folder_uuid": folder_uuid,
824
842
  "workflow_type": "scan",
825
- "workflow_data": workflow_data,
843
+ "workflow_data": workflow.model_dump(),
826
844
  "initial_molecule": initial_molecule,
827
845
  "max_credits": max_credits,
828
846
  }
@@ -860,19 +878,20 @@ def submit_macropka_workflow(
860
878
  :raises requests.HTTPError: if the request to the API fails.
861
879
  """
862
880
 
863
- workflow_data = {
864
- "min_pH": min_pH,
865
- "max_pH": max_pH,
866
- "min_charge": min_charge,
867
- "max_charge": max_charge,
868
- "compute_solvation_energy": compute_solvation_energy,
869
- }
881
+ workflow = stjames.MacropKaWorkflow(
882
+ initial_smiles=initial_smiles,
883
+ min_pH=min_pH,
884
+ max_pH=max_pH,
885
+ min_charge=min_charge,
886
+ max_charge=max_charge,
887
+ compute_solvation_energy=compute_solvation_energy,
888
+ )
870
889
 
871
890
  data = {
872
891
  "name": name,
873
892
  "folder_uuid": folder_uuid,
874
893
  "workflow_type": "macropka",
875
- "workflow_data": workflow_data,
894
+ "workflow_data": workflow.model_dump(),
876
895
  "initial_smiles": initial_smiles,
877
896
  "max_credits": max_credits,
878
897
  }
@@ -920,25 +939,25 @@ def submit_irc_workflow(
920
939
  if isinstance(method, str):
921
940
  method = stjames.Method(method)
922
941
 
923
- workflow_data = {
924
- "settings": {
925
- "method": method.name,
926
- "tasks": [],
927
- "corrections": [],
928
- "mode": "auto",
929
- },
930
- "engine": engine,
931
- "preopt": preopt,
932
- "step_size": step_size,
933
- "max_irc_steps": max_irc_steps,
934
- "mode": "manual",
935
- }
936
-
942
+ workflow = stjames.IRCWorkflow(
943
+ initial_molecule=initial_molecule,
944
+ settings=stjames.Settings(
945
+ method=method,
946
+ tasks=[],
947
+ corrections=[],
948
+ mode="auto",
949
+ ),
950
+ engine=engine,
951
+ preopt=preopt,
952
+ step_size=step_size,
953
+ max_irc_steps=max_irc_steps,
954
+ mode="manual",
955
+ )
937
956
  data = {
938
957
  "name": name,
939
958
  "folder_uuid": folder_uuid,
940
959
  "workflow_type": "irc",
941
- "workflow_data": workflow_data,
960
+ "workflow_data": workflow.model_dump(),
942
961
  "initial_molecule": initial_molecule,
943
962
  "max_credits": max_credits,
944
963
  }
@@ -975,19 +994,20 @@ def submit_protein_cofolding_workflow(
975
994
  :return: A Workflow object representing the submitted workflow.
976
995
  :raises requests.HTTPError: if the request to the API fails.
977
996
  """ # noqa: E501
978
- workflow_data = {
979
- "use_msa_server": use_msa_server,
980
- "use_potentials": use_potentials,
981
- "model": model,
982
- "ligand_binding_affinity_index": ligand_binding_affinity_index,
983
- "initial_smiles_list": initial_smiles_list,
984
- "initial_protein_sequences": initial_protein_sequences,
985
- }
997
+
998
+ workflow = stjames.ProteinCofoldingWorkflow(
999
+ use_msa_server=use_msa_server,
1000
+ use_potentials=use_potentials,
1001
+ model=model,
1002
+ ligand_binding_affinity_index=ligand_binding_affinity_index,
1003
+ initial_smiles_list=initial_smiles_list,
1004
+ initial_protein_sequences=initial_protein_sequences,
1005
+ )
986
1006
  data = {
987
1007
  "name": name,
988
1008
  "folder_uuid": folder_uuid,
989
1009
  "workflow_type": "protein_cofolding",
990
- "workflow_data": workflow_data,
1010
+ "workflow_data": workflow.model_dump(),
991
1011
  "max_credits": max_credits,
992
1012
  }
993
1013
 
@@ -1029,18 +1049,19 @@ def submit_docking_workflow(
1029
1049
  if isinstance(protein, Protein):
1030
1050
  protein = protein.uuid
1031
1051
 
1032
- workflow_data = {
1033
- "target_uuid": protein,
1034
- "pocket": pocket,
1035
- "do_csearch": do_csearch,
1036
- "do_optimization": do_optimization,
1037
- }
1052
+ workflow = stjames.DockingWorkflow(
1053
+ initial_molecule=initial_molecule,
1054
+ target_uuid=protein,
1055
+ pocket=pocket,
1056
+ do_csearch=do_csearch,
1057
+ do_optimization=do_optimization,
1058
+ )
1038
1059
 
1039
1060
  data = {
1040
1061
  "name": name,
1041
1062
  "folder_uuid": folder_uuid,
1042
1063
  "workflow_type": "docking",
1043
- "workflow_data": workflow_data,
1064
+ "workflow_data": workflow.model_dump(),
1044
1065
  "initial_molecule": initial_molecule,
1045
1066
  "max_credits": max_credits,
1046
1067
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes