qccompute 0.13.0__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 (80) hide show
  1. qccompute-0.13.0/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  2. qccompute-0.13.0/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  3. qccompute-0.13.0/.github/workflows/basic-code-quality.yaml +54 -0
  4. qccompute-0.13.0/.github/workflows/create-release.yaml +39 -0
  5. qccompute-0.13.0/.github/workflows/publish-to-pypi.yaml +36 -0
  6. qccompute-0.13.0/.github/workflows/test.yaml +51 -0
  7. qccompute-0.13.0/.gitignore +170 -0
  8. qccompute-0.13.0/.pre-commit-config.yaml +44 -0
  9. qccompute-0.13.0/.python-version +1 -0
  10. qccompute-0.13.0/.vscode/settings.json +41 -0
  11. qccompute-0.13.0/CHANGELOG.md +471 -0
  12. qccompute-0.13.0/CONTRIBUTING.md +21 -0
  13. qccompute-0.13.0/LICENSE +21 -0
  14. qccompute-0.13.0/PKG-INFO +222 -0
  15. qccompute-0.13.0/README.md +161 -0
  16. qccompute-0.13.0/docs/CNAME +1 -0
  17. qccompute-0.13.0/docs/assets/optimization_viewer.png +0 -0
  18. qccompute-0.13.0/docs/assets/single_point_viewer.png +0 -0
  19. qccompute-0.13.0/docs/dev-docs/dev-decisions.md +46 -0
  20. qccompute-0.13.0/docs/examples/conformer_search.md +3 -0
  21. qccompute-0.13.0/docs/examples/file_input.md +5 -0
  22. qccompute-0.13.0/docs/examples/optimization.md +11 -0
  23. qccompute-0.13.0/docs/examples/overview.md +35 -0
  24. qccompute-0.13.0/docs/examples/single_point.md +3 -0
  25. qccompute-0.13.0/docs/index.md +161 -0
  26. qccompute-0.13.0/docs/programs/crest.md +4 -0
  27. qccompute-0.13.0/docs/programs/geometric.md +1 -0
  28. qccompute-0.13.0/docs/programs/overview.md +7 -0
  29. qccompute-0.13.0/docs/programs/qcengine.md +3 -0
  30. qccompute-0.13.0/docs/programs/terachem.md +5 -0
  31. qccompute-0.13.0/docs/programs/xtb.md +7 -0
  32. qccompute-0.13.0/examples/__init__.py +0 -0
  33. qccompute-0.13.0/examples/crest.py +51 -0
  34. qccompute-0.13.0/examples/file_input.py +31 -0
  35. qccompute-0.13.0/examples/geometric.py +63 -0
  36. qccompute-0.13.0/examples/gradient.py +44 -0
  37. qccompute-0.13.0/examples/hessian.py +45 -0
  38. qccompute-0.13.0/examples/rdkit.py +45 -0
  39. qccompute-0.13.0/examples/single_point.py +48 -0
  40. qccompute-0.13.0/examples/terachem_opt.py +50 -0
  41. qccompute-0.13.0/examples/xtb.py +29 -0
  42. qccompute-0.13.0/mkdocs.yml +116 -0
  43. qccompute-0.13.0/pyproject.toml +109 -0
  44. qccompute-0.13.0/scripts/format.sh +5 -0
  45. qccompute-0.13.0/scripts/release.py +134 -0
  46. qccompute-0.13.0/scripts/tests.sh +15 -0
  47. qccompute-0.13.0/src/qccompute/__init__.py +10 -0
  48. qccompute-0.13.0/src/qccompute/adapters/__init__.py +12 -0
  49. qccompute-0.13.0/src/qccompute/adapters/base.py +325 -0
  50. qccompute-0.13.0/src/qccompute/adapters/crest.py +134 -0
  51. qccompute-0.13.0/src/qccompute/adapters/file.py +49 -0
  52. qccompute-0.13.0/src/qccompute/adapters/geometric.py +337 -0
  53. qccompute-0.13.0/src/qccompute/adapters/orca.py +102 -0
  54. qccompute-0.13.0/src/qccompute/adapters/qcengine.py +68 -0
  55. qccompute-0.13.0/src/qccompute/adapters/terachem.py +173 -0
  56. qccompute-0.13.0/src/qccompute/adapters/terachem_fe.py +78 -0
  57. qccompute-0.13.0/src/qccompute/adapters/terachem_pbs.py +13 -0
  58. qccompute-0.13.0/src/qccompute/adapters/utils.py +302 -0
  59. qccompute-0.13.0/src/qccompute/adapters/xtb.py +156 -0
  60. qccompute-0.13.0/src/qccompute/exceptions.py +153 -0
  61. qccompute-0.13.0/src/qccompute/main.py +136 -0
  62. qccompute-0.13.0/src/qccompute/py.typed +0 -0
  63. qccompute-0.13.0/src/qccompute/utils.py +112 -0
  64. qccompute-0.13.0/tests/__init__.py +0 -0
  65. qccompute-0.13.0/tests/adaptors/test_file.py +23 -0
  66. qccompute-0.13.0/tests/adaptors/test_geometric.py +117 -0
  67. qccompute-0.13.0/tests/adaptors/test_terachem.py +104 -0
  68. qccompute-0.13.0/tests/conftest.py +122 -0
  69. qccompute-0.13.0/tests/integration_tests/__init__.py +0 -0
  70. qccompute-0.13.0/tests/integration_tests/test_crest.py +35 -0
  71. qccompute-0.13.0/tests/integration_tests/test_geometric_integration.py +51 -0
  72. qccompute-0.13.0/tests/integration_tests/test_terachem_integration.py +216 -0
  73. qccompute-0.13.0/tests/integration_tests/test_xtb.py +41 -0
  74. qccompute-0.13.0/tests/test_base_adapters.py +175 -0
  75. qccompute-0.13.0/tests/test_exceptions.py +49 -0
  76. qccompute-0.13.0/tests/test_main.py +165 -0
  77. qccompute-0.13.0/tests/test_qcng_compat.py +87 -0
  78. qccompute-0.13.0/tests/test_utils.py +146 -0
  79. qccompute-0.13.0/tests/test_xtb.py +62 -0
  80. qccompute-0.13.0/uv.lock +1467 -0
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: "[BUG] - "
5
+ labels: bug
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior. Please provide all necessary data and a runable python script that reproduces your error:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Screenshots**
24
+ If applicable, add screenshots to help explain your problem.
25
+
26
+ **Additional context**
27
+ Add any other context about the problem here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: "[FEATURE] - "
5
+ labels: enhancement
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Is your feature request related to a problem? Please describe.**
11
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12
+
13
+ **Describe the solution you'd like**
14
+ A clear and concise description of what you want to happen.
15
+
16
+ **Describe alternatives you've considered**
17
+ A clear and concise description of any alternative solutions or features you've considered.
18
+
19
+ **Additional context**
20
+ Add any other context or screenshots about the feature request here.
@@ -0,0 +1,54 @@
1
+ name: Basic Code Quality
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ ruff:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v3
10
+ - name: Set up Python
11
+ uses: actions/setup-python@v5
12
+ with:
13
+ python-version-file: ".python-version"
14
+ - name: Install ruff
15
+ run: pip install ruff
16
+ - name: ruff
17
+ run: ruff check .
18
+
19
+ mypy:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version-file: ".python-version"
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@v5
29
+ - name: Install the project
30
+ run: uv sync --all-extras --dev
31
+ - name: mypy
32
+ run: uv run mypy .
33
+
34
+ detect-secrets:
35
+ runs-on: ubuntu-latest
36
+ steps:
37
+ - uses: actions/checkout@v3
38
+ - name: Set up Python
39
+ uses: actions/setup-python@v5
40
+ with:
41
+ python-version-file: ".python-version"
42
+ - name: Install detect secrets
43
+ run: pip install detect-secrets
44
+ - name: Look for secrets
45
+ run: git ls-files -z | xargs -0 detect-secrets-hook -v
46
+
47
+ typos:
48
+ name: "spell check"
49
+ runs-on: ubuntu-latest
50
+ steps:
51
+ - uses: actions/checkout@v3
52
+ - uses: crate-ci/typos@master
53
+ with:
54
+ files: .
@@ -0,0 +1,39 @@
1
+ name: Create Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "*" # Match any tag
7
+ workflow_dispatch: # Enable manual triggering
8
+
9
+ jobs:
10
+ create-release:
11
+ name: Create GitHub Release
12
+ runs-on: ubuntu-latest
13
+ environment: release # Link to the protected environment
14
+
15
+ steps:
16
+ - name: Checkout code
17
+ uses: actions/checkout@v4
18
+
19
+ - name: Extract Release Notes
20
+ id: extract_notes
21
+ run: |
22
+ VERSION=${{ github.ref_name }}
23
+ sed -n "/## \\[$VERSION\\]/,/## \\[/p" CHANGELOG.md | sed '$d' | sed "s/## \\[$VERSION\\]/## $VERSION/" > RELEASE_NOTES.md
24
+
25
+ - name: Create GitHub Release
26
+ id: create_release
27
+ uses: actions/create-release@v1
28
+ with:
29
+ tag_name: ${{ github.ref_name }}
30
+ release_name: Release ${{ github.ref_name }}
31
+ body_path: ./RELEASE_NOTES.md
32
+ draft: false
33
+ prerelease: false
34
+ env:
35
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36
+
37
+ - name: Output release URL
38
+ run: |
39
+ echo "Release URL: ${{ steps.create_release.outputs.html_url }}"
@@ -0,0 +1,36 @@
1
+ # https://github.com/marketplace/actions/pypi-publish
2
+
3
+ name: Publish to PyPI
4
+
5
+ on:
6
+ push:
7
+ tags: # Only publish on tagged commits
8
+ - "*"
9
+
10
+ jobs:
11
+ build-and-publish:
12
+ name: Build and publish Python 🐍 distributions 📦 to PyPI
13
+ runs-on: ubuntu-latest
14
+ environment:
15
+ name: pypi
16
+ url: https://pypi.org/project/qcop/
17
+ permissions:
18
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
19
+
20
+ steps:
21
+ - name: Check out source repository
22
+ uses: actions/checkout@v2
23
+
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version-file: ".python-version"
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v5
31
+
32
+ - name: Build distribution 📦
33
+ run: uv build
34
+
35
+ - name: Publish package 📤 to PyPI
36
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,51 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ tests:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
16
+ include:
17
+ - python-version: "3.12"
18
+ coverage: true
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@v5
29
+
30
+ # uv pip resolves & installs deps like pip (not an environment sync)
31
+ - name: Install package + test deps (uv pip)
32
+ run: uv pip install --system --group dev .
33
+
34
+ - name: Run tests
35
+ run: python -m pytest --cov-report=term-missing --cov-report html:htmlcov --cov-config=pyproject.toml --cov=qcop --cov=tests .
36
+
37
+ - name: Upload coverage HTML
38
+ if: ${{ matrix.coverage == true }}
39
+ uses: actions/upload-artifact@v4
40
+ with:
41
+ name: htmlcov-py${{ matrix.python-version }}
42
+ path: htmlcov
43
+
44
+ # To catch manifest issues, we build and install from sdist on one version
45
+ - name: Build sdist (only on 3.12)
46
+ if: ${{ matrix.coverage == true }}
47
+ run: python -m pip install build && python -m build --sdist
48
+
49
+ - name: Install from sdist (only on 3.12)
50
+ if: ${{ matrix.coverage == true }}
51
+ run: python -m pip install dist/*.tar.gz
@@ -0,0 +1,170 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # Rope project settings
136
+ .ropeproject
137
+
138
+ # mkdocs documentation
139
+ /site
140
+
141
+ # mypy
142
+ .mypy_cache/
143
+ .dmypy.json
144
+ dmypy.json
145
+
146
+ # Pyre type checker
147
+ .pyre/
148
+
149
+ # pytype static type analyzer
150
+ .pytype/
151
+
152
+ # Cython debug symbols
153
+ cython_debug/
154
+
155
+ # PyCharm
156
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
159
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160
+ #.idea/
161
+
162
+ # qcop specific ignores
163
+ # TeraChem scratch files
164
+ scr.*
165
+ tc.in
166
+ *.xyz
167
+ # Keep example file
168
+ !examples/h2o.xyz
169
+ # Psi4 scratch files
170
+ *.dat
@@ -0,0 +1,44 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ repos:
4
+ - repo: https://github.com/pre-commit/pre-commit-hooks
5
+ rev: v4.4.0
6
+ hooks:
7
+ - id: check-yaml
8
+ exclude: mkdocs.yml
9
+ - id: check-added-large-files
10
+ args: ["--maxkb=250"]
11
+ exclude: caffeine.frequencies.out
12
+ - repo: https://github.com/Yelp/detect-secrets
13
+ rev: v1.4.0
14
+ hooks:
15
+ - id: detect-secrets
16
+ stages: [commit]
17
+ exclude: uv.lock
18
+ - repo: https://github.com/charliermarsh/ruff-pre-commit
19
+ # Ruff version.
20
+ rev: "v0.5.7"
21
+ hooks:
22
+ - id: ruff
23
+ args: [--fix, --exit-non-zero-on-fix]
24
+ - repo: https://github.com/pre-commit/mirrors-mypy
25
+ rev: v1.15.0
26
+ hooks:
27
+ - id: mypy
28
+ args: [.]
29
+ pass_filenames: false
30
+ additional_dependencies:
31
+ [pydantic>=2.0.0, qcdata>=0.17.0, types-toml]
32
+ - repo: https://github.com/crate-ci/typos
33
+ rev: v1.24.5
34
+ hooks:
35
+ - id: typos
36
+ - repo: local
37
+ hooks:
38
+ - id: tests
39
+ name: tests
40
+ stages: [push]
41
+ language: system
42
+ entry: uv run pytest
43
+ types: [python]
44
+ pass_filenames: false
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,41 @@
1
+ {
2
+ "cSpell.words": [
3
+ "acetonitrile",
4
+ "addcart",
5
+ "allclose",
6
+ "alpb",
7
+ "arange",
8
+ "calcspec",
9
+ "calctype",
10
+ "calctypes",
11
+ "coordsys",
12
+ "Delocalized",
13
+ "dockerized",
14
+ "excinfo",
15
+ "gfnff",
16
+ "hostcpus",
17
+ "htmlcov",
18
+ "libxtb",
19
+ "mrchem",
20
+ "numhess",
21
+ "pstdout",
22
+ "psutil",
23
+ "pyenv",
24
+ "qcconst",
25
+ "qcdata",
26
+ "qcel",
27
+ "qcio",
28
+ "qcop",
29
+ "qcparse",
30
+ "rotamer",
31
+ "rotamers",
32
+ "singlepoint",
33
+ "spinmult",
34
+ "TCPB",
35
+ "terachem",
36
+ "terachemd",
37
+ "tmpdir",
38
+ "wfns",
39
+ "xyzout"
40
+ ]
41
+ }