rcsb.exdb 1.30__tar.gz → 1.32__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 (107) hide show
  1. rcsb_exdb-1.32/.gitignore +112 -0
  2. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/HISTORY.txt +2 -0
  3. {rcsb_exdb-1.30/rcsb.exdb.egg-info → rcsb_exdb-1.32}/PKG-INFO +36 -46
  4. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/README.md +4 -7
  5. rcsb_exdb-1.32/pyproject.toml +95 -0
  6. rcsb_exdb-1.32/rcsb/exdb/examples-seq/EntityInstanceExtractor.py +557 -0
  7. rcsb_exdb-1.32/rcsb/exdb/examples-seq/EntityPolymerExtractor.py +544 -0
  8. rcsb_exdb-1.32/rcsb/exdb/examples-seq/EntityPolymerExtractorFullTests.py +176 -0
  9. rcsb_exdb-1.32/rcsb/exdb/examples-seq/ReferenceSequenceAssignmentUpdater.py +449 -0
  10. rcsb_exdb-1.32/rcsb/exdb/examples-seq/ReferenceSequenceUtils.py +123 -0
  11. rcsb_exdb-1.32/rcsb/exdb/examples-seq/ReferenceSequenceUtilsTests.py +109 -0
  12. rcsb_exdb-1.32/rcsb/exdb/examples-seq/exampleObjectExtractor.py +109 -0
  13. rcsb_exdb-1.32/rcsb/exdb/examples-seq/fixtureEntityPolymerExtractor.py +85 -0
  14. rcsb_exdb-1.32/rcsb/exdb/examples-seq/testEntityInstanceExtractor.py +170 -0
  15. rcsb_exdb-1.32/rcsb/exdb/examples-seq/testEntityPolymerExtractor.py +171 -0
  16. rcsb_exdb-1.32/rcsb/exdb/examples-seq/testReferenceSequenceAssignmentUpdater.py +79 -0
  17. rcsb_exdb-1.32/rcsb/exdb/examples-seq/testReferenceSequenceUtils.py +108 -0
  18. rcsb_exdb-1.32/rcsb/exdb/wf/__init__.py +0 -0
  19. rcsb_exdb-1.30/MANIFEST.in +0 -7
  20. rcsb_exdb-1.30/PKG-INFO +0 -113
  21. rcsb_exdb-1.30/rcsb/exdb/cli/__init__.py +0 -5
  22. rcsb_exdb-1.30/rcsb.exdb.egg-info/SOURCES.txt +0 -91
  23. rcsb_exdb-1.30/rcsb.exdb.egg-info/dependency_links.txt +0 -1
  24. rcsb_exdb-1.30/rcsb.exdb.egg-info/not-zip-safe +0 -1
  25. rcsb_exdb-1.30/rcsb.exdb.egg-info/requires.txt +0 -20
  26. rcsb_exdb-1.30/rcsb.exdb.egg-info/top_level.txt +0 -1
  27. rcsb_exdb-1.30/requirements.txt +0 -17
  28. rcsb_exdb-1.30/setup.cfg +0 -10
  29. rcsb_exdb-1.30/setup.py +0 -67
  30. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/LICENSE +0 -0
  31. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/__init__.py +0 -0
  32. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/__init__.py +0 -0
  33. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/branch/BranchedEntityExtractor.py +0 -0
  34. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/branch/GlycanProvider.py +0 -0
  35. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/branch/GlycanUtils.py +0 -0
  36. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/branch/__init__.py +0 -0
  37. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/ChemRefEtlWorker.py +0 -0
  38. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/ChemRefExtractor.py +0 -0
  39. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/ChemRefMappingProvider.py +0 -0
  40. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/PubChemDataCacheProvider.py +0 -0
  41. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/PubChemEtlWrapper.py +0 -0
  42. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/PubChemIndexCacheProvider.py +0 -0
  43. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/chemref/__init__.py +0 -0
  44. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/citation/CitationAdapter.py +0 -0
  45. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/citation/CitationExtractor.py +0 -0
  46. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/citation/CitationUtils.py +0 -0
  47. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/citation/__init__.py +0 -0
  48. {rcsb_exdb-1.30/rcsb/exdb/entry → rcsb_exdb-1.32/rcsb/exdb/cli}/__init__.py +0 -0
  49. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/entry/EntryInfoProvider.py +0 -0
  50. {rcsb_exdb-1.30/rcsb/exdb/seq → rcsb_exdb-1.32/rcsb/exdb/entry}/__init__.py +0 -0
  51. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/AnnotationExtractor.py +0 -0
  52. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/LigandNeighborMappingExtractor.py +0 -0
  53. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/LigandNeighborMappingProvider.py +0 -0
  54. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/PolymerEntityExtractor.py +0 -0
  55. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/ReferenceSequenceAnnotationAdapter.py +0 -0
  56. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/ReferenceSequenceAnnotationProvider.py +0 -0
  57. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/ReferenceSequenceAssignmentAdapter.py +0 -0
  58. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/ReferenceSequenceAssignmentProvider.py +0 -0
  59. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/ReferenceSequenceCacheProvider.py +0 -0
  60. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/TaxonomyExtractor.py +0 -0
  61. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/UniProtCoreEtlWorker.py +0 -0
  62. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/seq/UniProtExtractor.py +0 -0
  63. {rcsb_exdb-1.30/rcsb/exdb/tests → rcsb_exdb-1.32/rcsb/exdb/seq}/__init__.py +0 -0
  64. {rcsb_exdb-1.30/rcsb/exdb/tree → rcsb_exdb-1.32/rcsb/exdb/tests}/__init__.py +0 -0
  65. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/fixtureDictMethodResourceProvider.py +0 -0
  66. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/fixturePdbxLoader.py +0 -0
  67. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testAnnotationExtractor.py +0 -0
  68. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testBranchedEntityExtractor.py +0 -0
  69. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testChemRefLoader.py +0 -0
  70. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testChemRefMappingProvider.py +0 -0
  71. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testCitationAdapter.py +0 -0
  72. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testCitationExtractor.py +0 -0
  73. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testCitationUtils.py +0 -0
  74. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testEntryInfoEtlWorkflow.py +0 -0
  75. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testEntryInfoProvider.py +0 -0
  76. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testGlycanEtlWorkflow.py +0 -0
  77. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testGlycanProvider.py +0 -0
  78. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testGlycanUtils.py +0 -0
  79. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testLigandNeighborMappingProvider.py +0 -0
  80. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testObjectExtractor.py +0 -0
  81. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testObjectTransformer.py +0 -0
  82. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testObjectUpdater.py +0 -0
  83. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testPolymerEntityExtractor.py +0 -0
  84. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testPubChemDataCacheProvider.py +0 -0
  85. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testPubChemEtlWorkflow.py +0 -0
  86. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testPubChemEtlWrapper.py +0 -0
  87. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testPubChemIndexCacheProvider.py +0 -0
  88. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testReferenceSequenceAnnotationAdapter.py +0 -0
  89. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testReferenceSequenceAssignmentAdapter.py +0 -0
  90. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testReferenceSequenceAssignmentAdapterValidate.py +0 -0
  91. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testReferenceSequenceAssignmentProvider.py +0 -0
  92. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testReferenceSequenceCacheProvider.py +0 -0
  93. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testTaxonomyExtractor.py +0 -0
  94. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testTreeNodeListWorker.py +0 -0
  95. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testUniProtCoreEtlWorker.py +0 -0
  96. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tests/testUniProtExtractor.py +0 -0
  97. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/tree/TreeNodeListWorker.py +0 -0
  98. {rcsb_exdb-1.30/rcsb/exdb/utils → rcsb_exdb-1.32/rcsb/exdb/tree}/__init__.py +0 -0
  99. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/utils/ObjectAdapterBase.py +0 -0
  100. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/utils/ObjectExtractor.py +0 -0
  101. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/utils/ObjectTransformer.py +0 -0
  102. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/utils/ObjectUpdater.py +0 -0
  103. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/utils/ObjectValidator.py +0 -0
  104. {rcsb_exdb-1.30/rcsb/exdb/wf → rcsb_exdb-1.32/rcsb/exdb/utils}/__init__.py +0 -0
  105. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/wf/EntryInfoEtlWorkflow.py +0 -0
  106. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/wf/GlycanEtlWorkflow.py +0 -0
  107. {rcsb_exdb-1.30 → rcsb_exdb-1.32}/rcsb/exdb/wf/PubChemEtlWorkflow.py +0 -0
@@ -0,0 +1,112 @@
1
+ .vscode
2
+ test-output/
3
+ !test-output/.gitkeep
4
+ test-cache-preserve/
5
+ LOGTOX
6
+ CACHE/
7
+ Archive/
8
+ .idea/
9
+ # Byte-compiled / optimized / DLL files
10
+ __pycache__/
11
+ *.py[cod]
12
+ *$py.class
13
+
14
+ # C extensions
15
+ *.so
16
+
17
+ # Distribution / packaging
18
+ .Python
19
+ build/
20
+ develop-eggs/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ *.egg-info/
32
+ .installed.cfg
33
+ *.egg
34
+ MANIFEST
35
+
36
+ # PyInstaller
37
+ # Usually these files are written by a python script from a template
38
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
39
+ *.manifest
40
+ *.spec
41
+
42
+ # Installer logs
43
+ pip-log.txt
44
+ pip-delete-this-directory.txt
45
+
46
+ # Unit test / coverage reports
47
+ htmlcov/
48
+ .tox/
49
+ .coverage
50
+ .coverage.*
51
+ .cache
52
+ nosetests.xml
53
+ coverage.xml
54
+ *.cover
55
+ .hypothesis/
56
+ .pytest_cache/
57
+
58
+ # Translations
59
+ *.mo
60
+ *.pot
61
+
62
+ # Django stuff:
63
+ *.log
64
+ local_settings.py
65
+ db.sqlite3
66
+
67
+ # Flask stuff:
68
+ instance/
69
+ .webassets-cache
70
+
71
+ # Scrapy stuff:
72
+ .scrapy
73
+
74
+ # Sphinx documentation
75
+ docs/_build/
76
+
77
+ # PyBuilder
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # pyenv
84
+ .python-version
85
+
86
+ # celery beat schedule file
87
+ celerybeat-schedule
88
+
89
+ # SageMath parsed files
90
+ *.sage.py
91
+
92
+ # Environments
93
+ .env
94
+ .venv
95
+ env/
96
+ venv/
97
+ ENV/
98
+ env.bak/
99
+ venv.bak/
100
+
101
+ # Spyder project settings
102
+ .spyderproject
103
+ .spyproject
104
+
105
+ # Rope project settings
106
+ .ropeproject
107
+
108
+ # mkdocs documentation
109
+ /site
110
+
111
+ # mypy
112
+ .mypy_cache/
@@ -112,3 +112,5 @@
112
112
  11-Feb-2025 V1.28 Move ExDB CLI code (workflow, exec, and tests) and Dockerfile to rcsb.workflow to avoid circular imports
113
113
  8-Apr-2025 V1.29 Add more logging to PubChemIndexCacheProvider and increase default numProc
114
114
  2-Oct-2025 V1.30 Make use of ExDB configuration file for loading drugbank and tree node list DBs/collections and setting indexed fields
115
+ 2-Dec-2025 V1.31 Switch to 'pyproject.toml' file and update test pipelines to python 3.12
116
+ 8-Dec-2025 V1.32 Correction to pyproject.toml
@@ -1,50 +1,43 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rcsb.exdb
3
- Version: 1.30
3
+ Version: 1.32
4
4
  Summary: RCSB Python ExDB data extraction and loading workflows
5
- Home-page: https://github.com/rcsb/py-rcsb_exdb
6
- Author: John Westbrook
7
- Author-email: john.westbrook@rcsb.org
8
- License: Apache 2.0
9
- Classifier: Development Status :: 3 - Alpha
5
+ Project-URL: Homepage, https://github.com/rcsb/py-rcsb_exdb
6
+ Author-email: John Westbrook <john.westbrook@rcsb.org>
7
+ Maintainer-email: Dennis Piehl <dennis.piehl@rcsb.org>
8
+ License-Expression: Apache-2.0
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 5 - Production/Stable
10
11
  Classifier: Intended Audience :: Developers
11
12
  Classifier: Natural Language :: English
12
- Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Description-Content-Type: text/markdown
18
- License-File: LICENSE
19
- Requires-Dist: numpy
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.9
20
17
  Requires-Dist: jsonschema>=2.6.0
21
- Requires-Dist: rcsb.utils.io>=1.48
22
- Requires-Dist: rcsb.db>=1.808
23
- Requires-Dist: rcsb.utils.chem>=0.84
24
- Requires-Dist: rcsb.utils.chemref>=0.91
25
- Requires-Dist: rcsb.utils.config>=0.40
26
- Requires-Dist: rcsb.utils.ec>=0.25
27
- Requires-Dist: rcsb.utils.go>=0.18
28
- Requires-Dist: rcsb.utils.seq>=0.82
29
- Requires-Dist: rcsb.utils.targets>=0.82
30
- Requires-Dist: rcsb.utils.struct>=0.47
31
- Requires-Dist: rcsb.utils.taxonomy>=0.43
32
- Requires-Dist: rcsb.utils.dictionary>=1.27
33
- Provides-Extra: dev
34
- Requires-Dist: check-manifest; extra == "dev"
35
- Provides-Extra: test
36
- Requires-Dist: coverage; extra == "test"
37
- Dynamic: author
38
- Dynamic: author-email
39
- Dynamic: classifier
40
- Dynamic: description
41
- Dynamic: description-content-type
42
- Dynamic: home-page
43
- Dynamic: license
44
- Dynamic: license-file
45
- Dynamic: provides-extra
46
- Dynamic: requires-dist
47
- Dynamic: summary
18
+ Requires-Dist: numpy
19
+ Requires-Dist: openeye-toolkits>=2024.1.1
20
+ Requires-Dist: rcsb-db>=1.808
21
+ Requires-Dist: rcsb-utils-chem>=0.84
22
+ Requires-Dist: rcsb-utils-chemref>=0.91
23
+ Requires-Dist: rcsb-utils-config>=0.40
24
+ Requires-Dist: rcsb-utils-dictionary>=1.27
25
+ Requires-Dist: rcsb-utils-ec>=0.25
26
+ Requires-Dist: rcsb-utils-go>=0.18
27
+ Requires-Dist: rcsb-utils-io>=1.48
28
+ Requires-Dist: rcsb-utils-seq>=0.82
29
+ Requires-Dist: rcsb-utils-struct>=0.47
30
+ Requires-Dist: rcsb-utils-targets>=0.82
31
+ Requires-Dist: rcsb-utils-taxonomy>=0.43
32
+ Provides-Extra: tests
33
+ Requires-Dist: black>=21.5b1; extra == 'tests'
34
+ Requires-Dist: check-manifest; extra == 'tests'
35
+ Requires-Dist: coverage; extra == 'tests'
36
+ Requires-Dist: flake8; extra == 'tests'
37
+ Requires-Dist: pylint; extra == 'tests'
38
+ Requires-Dist: rcsb-utils-citation>=0.25; extra == 'tests'
39
+ Requires-Dist: tox; extra == 'tests'
40
+ Description-Content-Type: text/markdown
48
41
 
49
42
  # py-rcsb_exdb
50
43
 
@@ -68,14 +61,9 @@ git clone --recurse-submodules https://github.com/rcsb/py-rcsb_exdb.git
68
61
  ```
69
62
 
70
63
  Optionally, run test suite (Python versions 2.7 and 3.7) using
71
- [setuptools](https://setuptools.readthedocs.io/en/latest/) or
72
64
  [tox](http://tox.readthedocs.io/en/latest/example/platform.html):
73
65
 
74
66
  ```bash
75
- python setup.py test
76
-
77
- or simply run
78
-
79
67
  tox
80
68
  ```
81
69
 
@@ -83,9 +71,11 @@ Installation is via the program [pip](https://pypi.python.org/pypi/pip). To run
83
71
  from the source tree, the package must be installed in editable mode (i.e. -e):
84
72
 
85
73
  ```bash
86
- pip install -r requirements.txt # OR: pip install -i https://pypi.anaconda.org/OpenEye/simple OpenEye-toolkits
74
+ pip install -e . --extra-index-url https://pypi.anaconda.org/OpenEye/simple
75
+
76
+ # or using uv
87
77
 
88
- pip install -e .
78
+ uv pip install -e .
89
79
  ```
90
80
 
91
81
  #### Installing in Ubuntu Linux (tested in 18.04)
@@ -20,14 +20,9 @@ git clone --recurse-submodules https://github.com/rcsb/py-rcsb_exdb.git
20
20
  ```
21
21
 
22
22
  Optionally, run test suite (Python versions 2.7 and 3.7) using
23
- [setuptools](https://setuptools.readthedocs.io/en/latest/) or
24
23
  [tox](http://tox.readthedocs.io/en/latest/example/platform.html):
25
24
 
26
25
  ```bash
27
- python setup.py test
28
-
29
- or simply run
30
-
31
26
  tox
32
27
  ```
33
28
 
@@ -35,9 +30,11 @@ Installation is via the program [pip](https://pypi.python.org/pypi/pip). To run
35
30
  from the source tree, the package must be installed in editable mode (i.e. -e):
36
31
 
37
32
  ```bash
38
- pip install -r requirements.txt # OR: pip install -i https://pypi.anaconda.org/OpenEye/simple OpenEye-toolkits
33
+ pip install -e . --extra-index-url https://pypi.anaconda.org/OpenEye/simple
34
+
35
+ # or using uv
39
36
 
40
- pip install -e .
37
+ uv pip install -e .
41
38
  ```
42
39
 
43
40
  #### Installing in Ubuntu Linux (tested in 18.04)
@@ -0,0 +1,95 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "rcsb.exdb"
7
+ description = "RCSB Python ExDB data extraction and loading workflows"
8
+ version = "1.32"
9
+ readme = "README.md"
10
+ authors = [
11
+ { name="John Westbrook", email="john.westbrook@rcsb.org" }
12
+ ]
13
+ maintainers = [
14
+ { name="Dennis Piehl", email="dennis.piehl@rcsb.org" }
15
+ ]
16
+ license = "Apache-2.0"
17
+ license-files = ["LICENSE"]
18
+ requires-python = ">=3.9" # Latest OpenEye (2025.1.1) only supports up to 3.12 (as of Nov. 2025)
19
+ classifiers = [
20
+ "Development Status :: 5 - Production/Stable",
21
+ "Intended Audience :: Developers",
22
+ "Natural Language :: English",
23
+ "Programming Language :: Python",
24
+ "Programming Language :: Python :: 3",
25
+ "Programming Language :: Python :: 3.12", # Latest OpenEye (2025.1.1) only supports up to 3.12 (as of Nov. 2025)
26
+ ]
27
+
28
+ dependencies = [
29
+ # OpenEye is needed here despite it not being a direct requirement of this package (it's used by rcsb.utils.chem)
30
+ "OpenEye-toolkits >= 2024.1.1",
31
+ #
32
+ "numpy",
33
+ "jsonschema >= 2.6.0",
34
+ "rcsb.utils.io >= 1.48",
35
+ "rcsb.db >= 1.808",
36
+ "rcsb.utils.chem >= 0.84",
37
+ "rcsb.utils.chemref >= 0.91",
38
+ "rcsb.utils.config >= 0.40",
39
+ "rcsb.utils.ec >= 0.25",
40
+ "rcsb.utils.go >= 0.18",
41
+ "rcsb.utils.seq >= 0.82",
42
+ "rcsb.utils.targets >= 0.82",
43
+ "rcsb.utils.struct >= 0.47",
44
+ "rcsb.utils.taxonomy >= 0.43",
45
+ "rcsb.utils.dictionary >= 1.27",
46
+ ]
47
+
48
+ [project.optional-dependencies]
49
+ tests = ["tox", "pylint", "black>=21.5b1", "flake8", "coverage", "rcsb.utils.citation>=0.25", "check-manifest"]
50
+
51
+ [project.urls]
52
+ Homepage = "https://github.com/rcsb/py-rcsb_exdb"
53
+
54
+ # ---------------- hatch configuration ----------------
55
+ [tool.hatch.build.targets.sdist]
56
+ include = [
57
+ "/rcsb/**",
58
+ "/README.md",
59
+ "/LICENSE",
60
+ "/HISTORY.txt",
61
+ "/pyproject.toml",
62
+ ]
63
+ exclude = [
64
+ "/rcsb/mock-*",
65
+ "/rcsb/exdb/test*/test*-*",
66
+ "/rcsb/exdb/test*/**.tdd",
67
+ "/rcsb/exdb/test*/**.txt",
68
+ "/rcsb/exdb/test*/**.sh",
69
+ ]
70
+
71
+ [tool.hatch.build.targets.wheel]
72
+ packages = ["rcsb"]
73
+ exclude = [
74
+ "/rcsb/exdb/test*",
75
+ "/rcsb/mock-*",
76
+ ]
77
+
78
+ [tool.hatch.envs.default]
79
+ skip-install = true
80
+ dependencies = ["OpenEye-toolkits>=2024.1.1"]
81
+
82
+ [tool.hatch.envs.default.env-vars]
83
+ PIP_EXTRA_INDEX_URL = "https://pypi.anaconda.org/OpenEye/simple"
84
+
85
+ # ---------------- test configuration ----------------
86
+ [tool.hatch.envs.hatch-test]
87
+ dependencies = ["tox"]
88
+
89
+ [tool.hatch.envs.hatch-test.scripts]
90
+ run = ["tox"]
91
+
92
+ # ---------------- UV configuration ----------------
93
+ [tool.uv]
94
+ extra-index-url = ["https://pypi.anaconda.org/OpenEye/simple"]
95
+ managed = false # This prevents uv from automatically creating venvs within individual packages when running 'uv run ...' from within the package directory