Physical calculation package for the mechanics and geometry of power lines
Project description
Mechaphlowers
Physical calculation package for the mechanics and geometry of overhead power lines.
User
Environment
Mechaphlowers is using uv for project, python version and dependencies management. You can use uv which is very similar to pip. You can also use other tools compatible with pip.
See uv documentation to install it.
You need a compatible python version. You may have to install it manually (e.g. with pyenv). Then you may create a virtualenv, install dependencies and activate the env:
uv venv --python 3.11
source .venv/bin/activate
!!! Tip
You would probably use an editor, make sure you configure it to use the same virtual environment you created (it will probably autodetect it) so that you can get autocompletion and inline errors. Here some links for [VSCode](https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment) and [PyCharm](https://www.jetbrains.com/help/pycharm/creating-virtual-environment.html).
Set up mechaphlowers
Install the package.
uv pip install mechaphlowers
Use it ! You can report to the user guide section or go to our tutorials notebook jupyter server to try it.
import mechaphlowers as mph
print(mph.__version__)
Developers
Environment
You need to install the project with all the development and documentation packages:
uv venv --python 3.11
source .venv/bin/activate
uv sync --group all
Checks and rules
Format and linter
Once dev dependencies are installed, you may format and lint python files like this:
uv run ruff format
uv run ruff check
Use following command if you only want to check if files are correctly formatted:
uv run ruff format --check
You may automatically fix some linting errors:
uv run ruff check --fix
Tip: if using VSCode/VSCodium, you may also use Ruff extension.
How to check typing
In order to check type hints consistency, you may run:
uv run mypy .
How to test
uv run coverage run -m pytest
uv run coverage report
Run all checks in one
A Makefile provide a fast access to those different checks.
You may run every check mentioned above with just one command:
make all
Requirements
Lock file
The generation of the lock file is important.
Do not forget to update it with:
uv lock
uv lock --check # to check if changes have been done
Installation from lock file only
When syncing, uv can update the lock file. But it can be an unwanted behavior. In this case use:
uv sync --frozen --group all
Pip compatibility
Requirements can be extracted with pip compile. See here for more information.
Build the library
Framework
We are using the pdm backend to build the package.
Version
The versioning is linked with the tag. To build a local version, you can add a tag, build version and then delete tag.
The tag is expected to have the following form: v0.1.2 and support alpha and beta version v0.1.2a0.
git tag v0.2.0b1
uv build # --> dist/mechaphlowers-0.2.0b1-...whl
git tag -d v0.2.0b1
The variable PACKAGE_BUILD_TEST can be used to add the .devXversion.
git tag v0.2.0b1
export PACKAGE_BUILD_TEST=3
uv build # --> dist/mechaphlowers-0.2.0b1.dev3-...whl
git tag -d v0.2.0b1
Build
In order to build the library (wheel and tar.gz archive):
uv build
You can check the build option to control the output folder or the desired output file types.
How to serve the documentation
You can build and serve the documentation using or make docs:
uv run --only-group docs mkdocs serve -a localhost:8001
Testing in a browser via pyodide
You may test your pyodide package using pyodide console in a browser.
Download pyodide
Download a version of Pyodide from the releases page, extract it and serve it with a web server:
wget https://github.com/pyodide/pyodide/releases/download/0.25.0/pyodide-0.25.0.tar.bz2
tar -xvf pyodide-0.25.0.tar.bz2
cd pyodide
python3 -m http.server
Pyodide console is then available at http://localhost:8000/console.html
Test in pyodide console
Copy needed wheels to pyodide folder. Then, in pyodide console:
import micropip
# load your wheel
await micropip.install("http://localhost:8000/<wheel_name>.whl", keep_going=True)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mechaphlowers-0.7.0.tar.gz.
File metadata
- Download URL: mechaphlowers-0.7.0.tar.gz
- Upload date:
- Size: 140.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee85382c046820e560d3cd2d65ff1221bc252943f953319d28a7dd0085ef5aa
|
|
| MD5 |
238bbc661d717cedccd58dc2b576c486
|
|
| BLAKE2b-256 |
4da4a2a0076992372ac80d51eb5f2ffc922ab57011a438bfbdae92d18fd402f2
|
Provenance
The following attestation bundles were made for mechaphlowers-0.7.0.tar.gz:
Publisher:
publish.yml on phlowers/mechaphlowers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mechaphlowers-0.7.0.tar.gz -
Subject digest:
5ee85382c046820e560d3cd2d65ff1221bc252943f953319d28a7dd0085ef5aa - Sigstore transparency entry: 1200851346
- Sigstore integration time:
-
Permalink:
phlowers/mechaphlowers@8156c3750749766805f7f640c4db8052f75d52fc -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/phlowers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8156c3750749766805f7f640c4db8052f75d52fc -
Trigger Event:
release
-
Statement type:
File details
Details for the file mechaphlowers-0.7.0-py3-none-any.whl.
File metadata
- Download URL: mechaphlowers-0.7.0-py3-none-any.whl
- Upload date:
- Size: 168.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1647cac4d7c34ae0ab596d0d54200658908936c1a2142e1146859c2b2548838
|
|
| MD5 |
badd2bfde0c82813dc776375c4645939
|
|
| BLAKE2b-256 |
e9cb9a1f46d9360b1dd9833987d1febe79c8c457eb184b63260a020a2059c672
|
Provenance
The following attestation bundles were made for mechaphlowers-0.7.0-py3-none-any.whl:
Publisher:
publish.yml on phlowers/mechaphlowers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mechaphlowers-0.7.0-py3-none-any.whl -
Subject digest:
f1647cac4d7c34ae0ab596d0d54200658908936c1a2142e1146859c2b2548838 - Sigstore transparency entry: 1200851389
- Sigstore integration time:
-
Permalink:
phlowers/mechaphlowers@8156c3750749766805f7f640c4db8052f75d52fc -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/phlowers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8156c3750749766805f7f640c4db8052f75d52fc -
Trigger Event:
release
-
Statement type: