pypsbuilder 2.6.4__tar.gz → 2.6.6__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.
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/.github/workflows/release.yml +9 -9
- pypsbuilder-2.6.6/.github/workflows/testing.yml +45 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/.github/workflows/testrelease.yml +2 -2
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/.gitignore +3 -0
- pypsbuilder-2.6.6/.pre-commit-config.yaml +21 -0
- pypsbuilder-2.6.6/.readthedocs.yaml +27 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/CHANGELOG.md +19 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/CONTRIBUTING.md +3 -2
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/PKG-INFO +74 -23
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/README.md +69 -7
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.TCResult.rst +1 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psexplorer.PXPS.rst +0 -1
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psexplorer.TXPS.rst +0 -1
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.tcapi.TC34API.rst +11 -9
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.tcapi.TC35API.rst +11 -10
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/command-line.rst +38 -8
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/psbuilders-tutorial.rst +31 -17
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/psexplorer-tutorial.rst +11 -5
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pyproject.toml +16 -7
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/__init__.py +4 -4
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/psbuilders.py +497 -71
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/psclasses.py +211 -55
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/psexplorer.py +513 -674
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/tcapi.py +95 -137
- pypsbuilder-2.6.6/pypsbuilder/tcinit.py +845 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/tests/test_pclasses.py +36 -0
- pypsbuilder-2.6.6/pypsbuilder/tests/test_psbuilders.py +200 -0
- pypsbuilder-2.6.6/pypsbuilder/tests/test_psclasses.py +364 -0
- pypsbuilder-2.6.6/pypsbuilder/tests/test_psexplorer.py +593 -0
- pypsbuilder-2.6.6/pypsbuilder/tests/test_tcapi.py +551 -0
- pypsbuilder-2.6.6/pypsbuilder/tests/test_tcinit.py +247 -0
- pypsbuilder-2.6.6/pypsbuilder/ui/compile_ui.sh +22 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/ptbuilder.ui +6 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/pxbuilder.ui +6 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/txbuilder.ui +6 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_ptbuilder.py +5 -1
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_pxbuilder.py +5 -1
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_txbuilder.py +5 -1
- pypsbuilder-2.6.4/.github/workflows/testing.yml +0 -43
- pypsbuilder-2.6.4/.pre-commit-config.yaml +0 -28
- pypsbuilder-2.6.4/.readthedocs.yaml +0 -24
- pypsbuilder-2.6.4/pypsbuilder/tcinit.py +0 -992
- pypsbuilder-2.6.4/pypsbuilder/ui/compile_ui.sh +0 -10
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/.github/dependabot.yml +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/.zenodo.json +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/AUTHORS.md +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/LICENSE +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/codecov.yml +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/_static/theme_overrides.css +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.Dogmin.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.InvPoint.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.PTsection.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.PXsection.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.TCResultSet.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.TXsection.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psclasses.UniLine.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api/pypsbuilder.psexplorer.PTPS.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/api.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/authors.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/conf.py +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/create_environment.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/crossing.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/delta.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/install_locally.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/invsearch.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/isopleths_1.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/isopleths_2.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/modes.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_areas.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_dogmin.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_finished.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_highlight.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_init.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_inv.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_modes.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psbuilder_uni.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psiso_alm.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psiso_labelkey.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psiso_mode.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psiso_other.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/psshow_out.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/ptpath.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/show_data.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/show_grid.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/show_label.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/show_out.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/show_plain.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/images/status.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/index.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/docs/readme.rst +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/environment.yml +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite/tc-avgpelite.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite/tc-ds62.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite/tc-mp50MnNCKFMASHTO.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite/tc-prefs.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite_34/tc-6axmn.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite_34/tc-avgpelite.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite_34/tc-ds62.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/avgpelite_34/tc-prefs.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv1-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv1-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv2-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv2-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv3-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/inv3-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni1-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni1-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni2-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni2-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni3-ic.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/examples/outputs/uni3-log.txt +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/notebooks/pypsbuilder.ipynb +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/images/ptbuilder.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/images/pxbuilder.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/images/pypsbuilder.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/images/txbuilder.png +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/tests/__init__.py +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/addinv.ui +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/adduni.ui +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui/uniguess.ui +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_addinv.py +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_adduni.py +0 -0
- {pypsbuilder-2.6.4 → pypsbuilder-2.6.6}/pypsbuilder/ui_uniguess.py +0 -0
|
@@ -13,20 +13,20 @@ jobs:
|
|
|
13
13
|
|
|
14
14
|
permissions:
|
|
15
15
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
16
|
+
contents: read
|
|
16
17
|
|
|
17
18
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
19
|
+
- uses: actions/checkout@v7
|
|
19
20
|
with:
|
|
20
21
|
persist-credentials: false
|
|
22
|
+
|
|
21
23
|
- name: Set up Python
|
|
22
|
-
uses:
|
|
24
|
+
uses: astral-sh/setup-uv@v7
|
|
23
25
|
with:
|
|
24
|
-
python-version: "3.
|
|
25
|
-
|
|
26
|
-
run: |
|
|
27
|
-
python -m pip install --upgrade pip
|
|
28
|
-
pip install build
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
|
|
29
28
|
- name: Build package
|
|
30
|
-
run:
|
|
29
|
+
run: uv build
|
|
30
|
+
|
|
31
31
|
- name: Publish distribution 📦 to PyPI
|
|
32
|
-
|
|
32
|
+
run: uv publish
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Python testing
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "**"
|
|
7
|
+
pull_request:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
name: Package testing
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.12", "3.13", "3.14"]
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
QT_QPA_PLATFORM: offscreen
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout repository
|
|
22
|
+
uses: actions/checkout@v7
|
|
23
|
+
|
|
24
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
+
uses: astral-sh/setup-uv@v7
|
|
26
|
+
with:
|
|
27
|
+
python-version: ${{ matrix.python-version }}
|
|
28
|
+
enable-cache: true
|
|
29
|
+
|
|
30
|
+
- name: Install Qt runtime dependencies
|
|
31
|
+
run: |
|
|
32
|
+
sudo apt-get update
|
|
33
|
+
sudo apt-get install -y libegl1 libxkbcommon0
|
|
34
|
+
|
|
35
|
+
- name: Install the project
|
|
36
|
+
run: uv sync --extra pyqt6 --extra tests
|
|
37
|
+
|
|
38
|
+
- name: Run Python tests
|
|
39
|
+
run: uv run pytest --cov --cov-branch --cov-report=xml
|
|
40
|
+
|
|
41
|
+
- name: Upload coverage to Codecov
|
|
42
|
+
uses: codecov/codecov-action@v7
|
|
43
|
+
with:
|
|
44
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
45
|
+
slug: ondrolexa/pypsbuilder
|
|
@@ -14,11 +14,11 @@ jobs:
|
|
|
14
14
|
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v7
|
|
18
18
|
with:
|
|
19
19
|
persist-credentials: false
|
|
20
20
|
- name: Set up Python
|
|
21
|
-
uses: actions/setup-python@
|
|
21
|
+
uses: actions/setup-python@v7
|
|
22
22
|
with:
|
|
23
23
|
python-version: "3.x"
|
|
24
24
|
- name: Install dependencies
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
default_stages: [pre-commit, pre-push]
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
4
|
+
rev: v0.16.4
|
|
5
|
+
hooks:
|
|
6
|
+
- id: ruff-check
|
|
7
|
+
args: [--fix]
|
|
8
|
+
exclude: ^(venv/|docs/)
|
|
9
|
+
types: ['python']
|
|
10
|
+
- id: ruff-format
|
|
11
|
+
exclude: ^(venv/|docs/)
|
|
12
|
+
types: ['python']
|
|
13
|
+
- repo: local
|
|
14
|
+
hooks:
|
|
15
|
+
- id: pytest
|
|
16
|
+
name: pytest
|
|
17
|
+
entry: uv run pytest
|
|
18
|
+
language: system
|
|
19
|
+
types: [python]
|
|
20
|
+
pass_filenames: false
|
|
21
|
+
always_run: true
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#.readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.com/platform/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
# Build documentation in the docs/ directory with Sphinx
|
|
9
|
+
sphinx:
|
|
10
|
+
configuration: docs/conf.py
|
|
11
|
+
|
|
12
|
+
# Optionally build your docs in additional formats such as PDF and ePub
|
|
13
|
+
formats: all
|
|
14
|
+
|
|
15
|
+
build:
|
|
16
|
+
os: ubuntu-26.04
|
|
17
|
+
tools:
|
|
18
|
+
python: "3.13"
|
|
19
|
+
|
|
20
|
+
# Install pypsbuilder with its docs extra via uv, matching the project's
|
|
21
|
+
# uv-based dev workflow (see README.md).
|
|
22
|
+
python:
|
|
23
|
+
install:
|
|
24
|
+
- method: uv
|
|
25
|
+
path: .
|
|
26
|
+
extras:
|
|
27
|
+
- docs
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable pypsbuilder changes.
|
|
3
3
|
|
|
4
|
+
## [2.6.6] - 2026-08-29
|
|
5
|
+
### Fixed
|
|
6
|
+
- project extra jupyter renamed to lab
|
|
7
|
+
|
|
8
|
+
## [2.6.5] - 2026-08-29
|
|
9
|
+
### Added
|
|
10
|
+
- `Import from JSON` menu item in ptbuilder/txbuilder/pxbuilder to batch-import invariant points and univariant lines JSON
|
|
11
|
+
- THERMOCALC 3.51 support in `tcinit`
|
|
12
|
+
### Fixed
|
|
13
|
+
- security: project files now load through a restricted unpickler, closing an arbitrary-code-execution risk from opening a crafted `.ptb`/`.txb`/`.pxb` file
|
|
14
|
+
- `eval_expr` now supports unary +/- (e.g. `-mode`)
|
|
15
|
+
- fixed crash opening some real project files (`annotate()` got an array instead of a scalar)
|
|
16
|
+
- `PS.show_grid` no longer silently drops its `expr`/`interpolation` arguments
|
|
17
|
+
- fixed `PXPS.fix_solutions` not reseeding THERMOCALC guesses from a solved neighbor before retrying a failed grid point
|
|
18
|
+
- THERMOCALC/drawpd subprocess calls no longer hang indefinitely on an unresponsive process
|
|
19
|
+
- fixed deprecated matplotlib colormap API usage
|
|
20
|
+
### Changed
|
|
21
|
+
- faster diagram field lookups and grid calculation via spatial indexing and vectorized nearest-point search
|
|
22
|
+
|
|
4
23
|
## [2.6.4] - 2025-08-03
|
|
5
24
|
### Fixed
|
|
6
25
|
- TC 3.51 compatibility added
|
|
@@ -50,8 +50,9 @@ Ready to contribute? Here's how to set up `pypsbuilder` for local development.
|
|
|
50
50
|
|
|
51
51
|
1. Just head over to the [GitHub page](https://github.com/ondrolexa/pypsbuilder) and click the "Fork" button. It's just that simple. Once you've done that, you can use your favorite git client to clone your repo.
|
|
52
52
|
|
|
53
|
-
2.
|
|
53
|
+
2. Set up a development environment with [uv](https://docs.astral.sh/uv/) and create a branch for local development. See the "Contributing / development install" section in [README.md](README.md) for the full command reference (running tests, formatting/linting with ruff, pre-commit hooks).
|
|
54
54
|
```
|
|
55
|
+
$ uv sync --group dev
|
|
55
56
|
$ git checkout -b name-of-your-bugfix-or-feature
|
|
56
57
|
```
|
|
57
58
|
Now you can make your changes locally.
|
|
@@ -70,4 +71,4 @@ Before you submit a pull request, check that it meets these guidelines.
|
|
|
70
71
|
|
|
71
72
|
1. If the pull request adds functionality, the docs should be updated. Put
|
|
72
73
|
your new functionality into a function with a docstring, and add the
|
|
73
|
-
feature to the list in README.
|
|
74
|
+
feature to the list in README.md.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: pypsbuilder
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.6
|
|
4
4
|
Summary: THERMOCALC front-end for constructing and analyzing PT pseudosections
|
|
5
5
|
Project-URL: Homepage, https://github.com/ondrolexa/pypsbuilder
|
|
6
6
|
Project-URL: Documentation, https://pypsbuilder.readthedocs.io
|
|
@@ -37,11 +37,9 @@ Keywords: THERMOCALC,petrology
|
|
|
37
37
|
Classifier: Development Status :: 4 - Beta
|
|
38
38
|
Classifier: Intended Audience :: Science/Research
|
|
39
39
|
Classifier: Programming Language :: Python :: 3
|
|
40
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
41
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
42
40
|
Classifier: Topic :: Scientific/Engineering
|
|
43
41
|
Classifier: Topic :: Utilities
|
|
44
|
-
Requires-Python: >=3.
|
|
42
|
+
Requires-Python: >=3.12
|
|
45
43
|
Requires-Dist: matplotlib>=3.8
|
|
46
44
|
Requires-Dist: networkx
|
|
47
45
|
Requires-Dist: numpy
|
|
@@ -50,21 +48,12 @@ Requires-Dist: scikit-image
|
|
|
50
48
|
Requires-Dist: scipy
|
|
51
49
|
Requires-Dist: shapely>=2
|
|
52
50
|
Requires-Dist: tqdm
|
|
53
|
-
Provides-Extra: dev
|
|
54
|
-
Requires-Dist: black; extra == 'dev'
|
|
55
|
-
Requires-Dist: jupyterlab; extra == 'dev'
|
|
56
|
-
Requires-Dist: pyqt6; extra == 'dev'
|
|
57
|
-
Requires-Dist: pytest; extra == 'dev'
|
|
58
|
-
Requires-Dist: pytest-cov; extra == 'dev'
|
|
59
|
-
Requires-Dist: sphinx; extra == 'dev'
|
|
60
|
-
Requires-Dist: sphinx-mdinclude; extra == 'dev'
|
|
61
|
-
Requires-Dist: sphinx-rtd-theme; extra == 'dev'
|
|
62
51
|
Provides-Extra: docs
|
|
63
52
|
Requires-Dist: sphinx; extra == 'docs'
|
|
64
53
|
Requires-Dist: sphinx-mdinclude; extra == 'docs'
|
|
65
54
|
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
|
|
66
|
-
Provides-Extra:
|
|
67
|
-
Requires-Dist: jupyterlab; extra == '
|
|
55
|
+
Provides-Extra: lab
|
|
56
|
+
Requires-Dist: jupyterlab; extra == 'lab'
|
|
68
57
|
Provides-Extra: pyqt5
|
|
69
58
|
Requires-Dist: pyqt5; extra == 'pyqt5'
|
|
70
59
|
Provides-Extra: pyqt6
|
|
@@ -78,12 +67,28 @@ Description-Content-Type: text/markdown
|
|
|
78
67
|
|
|
79
68
|
[](https://pypi.org/project/pypsbuilder/)
|
|
80
69
|
[](https://github.com/ondrolexa/pypsbuilder)
|
|
81
|
-
[](https://pypsbuilder.readthedocs.io/en/latest/?badge=latest)
|
|
82
71
|
|
|
83
72
|
Not that simplistic THERMOCALC front-end for constructing and visualizations of P-T, T-X and P-X pseudosections
|
|
84
73
|
|
|
85
74
|
## How to install
|
|
86
75
|
|
|
76
|
+
### Using uv (recommended)
|
|
77
|
+
|
|
78
|
+
If you don't already have [uv](https://docs.astral.sh/uv/) installed, see the
|
|
79
|
+
[installation instructions](https://docs.astral.sh/uv/getting-started/installation/).
|
|
80
|
+
|
|
81
|
+
Create an isolated environment and install **pypsbuilder** into it. **You should choose the UI framework using option** `pyqt5` **or** `pyqt6`:
|
|
82
|
+
|
|
83
|
+
uv venv
|
|
84
|
+
uv pip install pypsbuilder[pyqt6]
|
|
85
|
+
|
|
86
|
+
JupyterLab could also be installed providing the `lab` option:
|
|
87
|
+
|
|
88
|
+
uv pip install pypsbuilder[pyqt6,lab]
|
|
89
|
+
|
|
90
|
+
### Using pip and venv
|
|
91
|
+
|
|
87
92
|
It is strongly suggested to install **pypsbuilder** into separate environment. You can create
|
|
88
93
|
Python virtual environment. For Linux and macOS use:
|
|
89
94
|
|
|
@@ -111,9 +116,9 @@ and install **pypsbuilder** using pip within the environment. **You should choos
|
|
|
111
116
|
|
|
112
117
|
pip install pypsbuilder[pyqt6]
|
|
113
118
|
|
|
114
|
-
JupyterLab could also be installed providing the `
|
|
119
|
+
JupyterLab could also be installed providing the `lab` option:
|
|
115
120
|
|
|
116
|
-
pip install pypsbuilder[pyqt6,
|
|
121
|
+
pip install pypsbuilder[pyqt6,lab]
|
|
117
122
|
|
|
118
123
|
## I'm using conda or mamba to manage environments
|
|
119
124
|
|
|
@@ -143,15 +148,61 @@ and install with pip. As PyQt is already installed with mamba/conda, we will ins
|
|
|
143
148
|
> pip install --no-deps pypsbuilder
|
|
144
149
|
> ```
|
|
145
150
|
|
|
146
|
-
|
|
151
|
+
### Upgrade existing installation
|
|
147
152
|
|
|
148
153
|
To upgrade an already installed **pypsbuilder** to the latest release:
|
|
149
154
|
|
|
150
|
-
pip install --upgrade pypsbuilder
|
|
155
|
+
uv pip install --upgrade pypsbuilder[pyqt6]
|
|
156
|
+
|
|
157
|
+
## Contributing / development install
|
|
158
|
+
|
|
159
|
+
Clone the repository and install with uv:
|
|
160
|
+
|
|
161
|
+
uv sync --group dev
|
|
162
|
+
|
|
163
|
+
This installs pypsbuilder in editable mode with UI, notebook, test and docs
|
|
164
|
+
extras plus dev tooling (ruff, pre-commit).
|
|
165
|
+
|
|
166
|
+
### Running tests
|
|
167
|
+
|
|
168
|
+
Run the full test suite (must be run from the repo root, since tests
|
|
169
|
+
reference `./examples/outputs` with a relative path):
|
|
170
|
+
|
|
171
|
+
uv run pytest
|
|
172
|
+
uv run pytest --cov --cov-report=xml
|
|
173
|
+
|
|
174
|
+
Run a single test:
|
|
175
|
+
|
|
176
|
+
uv run pytest pypsbuilder/tests/test_pclasses.py::test_parse_ini1
|
|
177
|
+
|
|
178
|
+
### Formatting and linting
|
|
179
|
+
|
|
180
|
+
pypsbuilder uses [ruff](https://docs.astral.sh/ruff/) for both formatting and linting:
|
|
181
|
+
|
|
182
|
+
uv run ruff format pypsbuilder
|
|
183
|
+
uv run ruff check pypsbuilder
|
|
184
|
+
|
|
185
|
+
### pre-commit hooks
|
|
186
|
+
|
|
187
|
+
Formatting, linting and the test suite also run automatically via
|
|
188
|
+
[pre-commit](https://pre-commit.com/):
|
|
189
|
+
|
|
190
|
+
uv run pre-commit install
|
|
191
|
+
uv run pre-commit run --all-files
|
|
192
|
+
|
|
193
|
+
### Building the package
|
|
194
|
+
|
|
195
|
+
uv build
|
|
196
|
+
|
|
197
|
+
### Rebuilding Qt UI modules
|
|
198
|
+
|
|
199
|
+
After editing a `.ui` file in Qt Designer, regenerate the corresponding
|
|
200
|
+
`ui_*.py` module (requires `pyuic6`):
|
|
151
201
|
|
|
152
|
-
|
|
202
|
+
cd pypsbuilder/ui && ./compile_ui.sh
|
|
153
203
|
|
|
154
|
-
|
|
204
|
+
The script rewrites each generated file's `PyQt6` imports to `qtpy`
|
|
205
|
+
imports, so the app stays usable with either `pyqt5` or `pyqt6`.
|
|
155
206
|
|
|
156
207
|
## Documentation and tutorials
|
|
157
208
|
|
|
@@ -2,12 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://pypi.org/project/pypsbuilder/)
|
|
4
4
|
[](https://github.com/ondrolexa/pypsbuilder)
|
|
5
|
-
[](https://pypsbuilder.readthedocs.io/en/latest/?badge=latest)
|
|
6
6
|
|
|
7
7
|
Not that simplistic THERMOCALC front-end for constructing and visualizations of P-T, T-X and P-X pseudosections
|
|
8
8
|
|
|
9
9
|
## How to install
|
|
10
10
|
|
|
11
|
+
### Using uv (recommended)
|
|
12
|
+
|
|
13
|
+
If you don't already have [uv](https://docs.astral.sh/uv/) installed, see the
|
|
14
|
+
[installation instructions](https://docs.astral.sh/uv/getting-started/installation/).
|
|
15
|
+
|
|
16
|
+
Create an isolated environment and install **pypsbuilder** into it. **You should choose the UI framework using option** `pyqt5` **or** `pyqt6`:
|
|
17
|
+
|
|
18
|
+
uv venv
|
|
19
|
+
uv pip install pypsbuilder[pyqt6]
|
|
20
|
+
|
|
21
|
+
JupyterLab could also be installed providing the `lab` option:
|
|
22
|
+
|
|
23
|
+
uv pip install pypsbuilder[pyqt6,lab]
|
|
24
|
+
|
|
25
|
+
### Using pip and venv
|
|
26
|
+
|
|
11
27
|
It is strongly suggested to install **pypsbuilder** into separate environment. You can create
|
|
12
28
|
Python virtual environment. For Linux and macOS use:
|
|
13
29
|
|
|
@@ -35,9 +51,9 @@ and install **pypsbuilder** using pip within the environment. **You should choos
|
|
|
35
51
|
|
|
36
52
|
pip install pypsbuilder[pyqt6]
|
|
37
53
|
|
|
38
|
-
JupyterLab could also be installed providing the `
|
|
54
|
+
JupyterLab could also be installed providing the `lab` option:
|
|
39
55
|
|
|
40
|
-
pip install pypsbuilder[pyqt6,
|
|
56
|
+
pip install pypsbuilder[pyqt6,lab]
|
|
41
57
|
|
|
42
58
|
## I'm using conda or mamba to manage environments
|
|
43
59
|
|
|
@@ -67,15 +83,61 @@ and install with pip. As PyQt is already installed with mamba/conda, we will ins
|
|
|
67
83
|
> pip install --no-deps pypsbuilder
|
|
68
84
|
> ```
|
|
69
85
|
|
|
70
|
-
|
|
86
|
+
### Upgrade existing installation
|
|
71
87
|
|
|
72
88
|
To upgrade an already installed **pypsbuilder** to the latest release:
|
|
73
89
|
|
|
74
|
-
pip install --upgrade pypsbuilder
|
|
90
|
+
uv pip install --upgrade pypsbuilder[pyqt6]
|
|
91
|
+
|
|
92
|
+
## Contributing / development install
|
|
93
|
+
|
|
94
|
+
Clone the repository and install with uv:
|
|
95
|
+
|
|
96
|
+
uv sync --group dev
|
|
97
|
+
|
|
98
|
+
This installs pypsbuilder in editable mode with UI, notebook, test and docs
|
|
99
|
+
extras plus dev tooling (ruff, pre-commit).
|
|
100
|
+
|
|
101
|
+
### Running tests
|
|
102
|
+
|
|
103
|
+
Run the full test suite (must be run from the repo root, since tests
|
|
104
|
+
reference `./examples/outputs` with a relative path):
|
|
105
|
+
|
|
106
|
+
uv run pytest
|
|
107
|
+
uv run pytest --cov --cov-report=xml
|
|
108
|
+
|
|
109
|
+
Run a single test:
|
|
110
|
+
|
|
111
|
+
uv run pytest pypsbuilder/tests/test_pclasses.py::test_parse_ini1
|
|
112
|
+
|
|
113
|
+
### Formatting and linting
|
|
114
|
+
|
|
115
|
+
pypsbuilder uses [ruff](https://docs.astral.sh/ruff/) for both formatting and linting:
|
|
116
|
+
|
|
117
|
+
uv run ruff format pypsbuilder
|
|
118
|
+
uv run ruff check pypsbuilder
|
|
119
|
+
|
|
120
|
+
### pre-commit hooks
|
|
121
|
+
|
|
122
|
+
Formatting, linting and the test suite also run automatically via
|
|
123
|
+
[pre-commit](https://pre-commit.com/):
|
|
124
|
+
|
|
125
|
+
uv run pre-commit install
|
|
126
|
+
uv run pre-commit run --all-files
|
|
127
|
+
|
|
128
|
+
### Building the package
|
|
129
|
+
|
|
130
|
+
uv build
|
|
131
|
+
|
|
132
|
+
### Rebuilding Qt UI modules
|
|
133
|
+
|
|
134
|
+
After editing a `.ui` file in Qt Designer, regenerate the corresponding
|
|
135
|
+
`ui_*.py` module (requires `pyuic6`):
|
|
75
136
|
|
|
76
|
-
|
|
137
|
+
cd pypsbuilder/ui && ./compile_ui.sh
|
|
77
138
|
|
|
78
|
-
|
|
139
|
+
The script rewrites each generated file's `PyQt6` imports to `qtpy`
|
|
140
|
+
imports, so the app stays usable with either `pyqt5` or `pyqt6`.
|
|
79
141
|
|
|
80
142
|
## Documentation and tutorials
|
|
81
143
|
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
.. autoclass:: TC34API
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
.. automethod:: __init__
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
.. rubric:: Methods
|
|
13
13
|
|
|
14
14
|
.. autosummary::
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
~TC34API.__init__
|
|
17
17
|
~TC34API.calc_assemblage
|
|
18
18
|
~TC34API.calc_p
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
~TC34API.rundr
|
|
32
32
|
~TC34API.runtc
|
|
33
33
|
~TC34API.update_scriptfile
|
|
34
|
+
|
|
35
|
+
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
|
|
38
|
+
|
|
39
39
|
.. rubric:: Attributes
|
|
40
40
|
|
|
41
41
|
.. autosummary::
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
~TC34API.axfile
|
|
44
44
|
~TC34API.csvfile
|
|
45
45
|
~TC34API.dataset
|
|
@@ -52,5 +52,7 @@
|
|
|
52
52
|
~TC34API.ofile
|
|
53
53
|
~TC34API.prefsfile
|
|
54
54
|
~TC34API.scriptfile
|
|
55
|
-
~TC34API.tcversionfloat
|
|
56
55
|
~TC34API.tcversion
|
|
56
|
+
~TC34API.tcversionfloat
|
|
57
|
+
|
|
58
|
+
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
.. autoclass:: TC35API
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
.. automethod:: __init__
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
.. rubric:: Methods
|
|
13
13
|
|
|
14
14
|
.. autosummary::
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
~TC35API.__init__
|
|
17
17
|
~TC35API.calc_assemblage
|
|
18
18
|
~TC35API.calc_p
|
|
@@ -24,21 +24,20 @@
|
|
|
24
24
|
~TC35API.dogmin
|
|
25
25
|
~TC35API.parse_dogmin
|
|
26
26
|
~TC35API.parse_logfile
|
|
27
|
-
~TC35API.parse_logfile_backup
|
|
28
27
|
~TC35API.read_prefsfile
|
|
29
28
|
~TC35API.read_scriptfile
|
|
30
29
|
~TC35API.rundr
|
|
31
30
|
~TC35API.runtc
|
|
32
31
|
~TC35API.update_scriptfile
|
|
32
|
+
|
|
33
|
+
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
|
|
36
|
+
|
|
38
37
|
.. rubric:: Attributes
|
|
39
38
|
|
|
40
39
|
.. autosummary::
|
|
41
|
-
|
|
40
|
+
|
|
42
41
|
~TC35API.axfile
|
|
43
42
|
~TC35API.csvfile
|
|
44
43
|
~TC35API.dataset
|
|
@@ -51,5 +50,7 @@
|
|
|
51
50
|
~TC35API.ofile
|
|
52
51
|
~TC35API.prefsfile
|
|
53
52
|
~TC35API.scriptfile
|
|
54
|
-
~TC35API.tcversionfloat
|
|
55
53
|
~TC35API.tcversion
|
|
54
|
+
~TC35API.tcversionfloat
|
|
55
|
+
|
|
56
|
+
|
|
@@ -2,8 +2,9 @@ Command line scripts
|
|
|
2
2
|
====================
|
|
3
3
|
|
|
4
4
|
Before any further calculations you can check and draw your pseudosection using
|
|
5
|
-
`psshow` command which
|
|
6
|
-
options to label pseudosection with
|
|
5
|
+
the `psshow` command, which draws the finished areas within your project. It has
|
|
6
|
+
a few options to label the pseudosection with assemblages or highlight out-phase
|
|
7
|
+
lines.
|
|
7
8
|
|
|
8
9
|
.. parsed-literal::
|
|
9
10
|
|
|
@@ -18,9 +19,9 @@ options to label pseudosection with assamblages or highlight out phase lines.
|
|
|
18
19
|
positional arguments:
|
|
19
20
|
project builder project file(s)
|
|
20
21
|
|
|
21
|
-
|
|
22
|
+
options:
|
|
22
23
|
-h, --help show this help message and exit
|
|
23
|
-
-o
|
|
24
|
+
-o, --out OUT [OUT ...]
|
|
24
25
|
highlight out lines for given phases
|
|
25
26
|
-l, --label show area labels
|
|
26
27
|
--origwd use stored original working directory
|
|
@@ -61,7 +62,7 @@ aware that calculations takes some time.
|
|
|
61
62
|
positional arguments:
|
|
62
63
|
project builder project file(s)
|
|
63
64
|
|
|
64
|
-
|
|
65
|
+
options:
|
|
65
66
|
-h, --help show this help message and exit
|
|
66
67
|
--nx NX number of T steps
|
|
67
68
|
--ny NY number of P steps
|
|
@@ -95,12 +96,12 @@ Once gridded you can draw isopleths diagrams using `psiso` command:
|
|
|
95
96
|
project builder project file(s)
|
|
96
97
|
phase phase used for contouring
|
|
97
98
|
|
|
98
|
-
|
|
99
|
+
options:
|
|
99
100
|
-h, --help show this help message and exit
|
|
100
|
-
-e
|
|
101
|
+
-e, --expr EXPR expression evaluated to calculate values
|
|
101
102
|
-f, --filled filled contours
|
|
102
103
|
--origwd use stored original working directory
|
|
103
|
-
-o
|
|
104
|
+
-o, --out OUT [OUT ...]
|
|
104
105
|
highlight out lines for given phases
|
|
105
106
|
--nosplit controls whether the underlying contour is removed or
|
|
106
107
|
not
|
|
@@ -166,3 +167,32 @@ Another example of some other options.
|
|
|
166
167
|
--out chl ep --cmap YlGnBu_r
|
|
167
168
|
|
|
168
169
|
.. image:: images/psiso_other.png
|
|
170
|
+
|
|
171
|
+
Export project for drawpd
|
|
172
|
+
--------------------------
|
|
173
|
+
|
|
174
|
+
The `psdrawpd` command exports a project into the legacy ``drawpd`` format,
|
|
175
|
+
useful for compatibility with older THERMOCALC tooling or for archiving a
|
|
176
|
+
diagram outside of pypsbuilder.
|
|
177
|
+
|
|
178
|
+
.. parsed-literal::
|
|
179
|
+
|
|
180
|
+
$ psdrawpd -h
|
|
181
|
+
usage: psdrawpd [-h] [-a] [--origwd] [--tolerance TOLERANCE]
|
|
182
|
+
project [project ...]
|
|
183
|
+
|
|
184
|
+
Generate drawpd file from project
|
|
185
|
+
|
|
186
|
+
positional arguments:
|
|
187
|
+
project psbuilder project file(s)
|
|
188
|
+
|
|
189
|
+
options:
|
|
190
|
+
-h, --help show this help message and exit
|
|
191
|
+
-a, --areas export also areas
|
|
192
|
+
--origwd use stored original working directory
|
|
193
|
+
--tolerance TOLERANCE
|
|
194
|
+
tolerance to simplify univariant lines
|
|
195
|
+
|
|
196
|
+
.. parsed-literal::
|
|
197
|
+
|
|
198
|
+
$ psdrawpd '/path/to/project.ptb' -a
|