Skip to main content

Physical calculation package for the mechanics and geometry of power lines

Project description

Mechaphlowers

PyPI Latest Release MPL-2.0 License versions Documentation Actions Status

Quality Gate Status Coverage

Pydantic v2 Numpy pyodide lite-badge

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 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mechaphlowers-0.3.0.tar.gz (55.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mechaphlowers-0.3.0-py3-none-any.whl (62.6 kB view details)

Uploaded Python 3

File details

Details for the file mechaphlowers-0.3.0.tar.gz.

File metadata

  • Download URL: mechaphlowers-0.3.0.tar.gz
  • Upload date:
  • Size: 55.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mechaphlowers-0.3.0.tar.gz
Algorithm Hash digest
SHA256 4943f1c71cf69fbd9927251cbf42d8b254a43545989be2111c2b6dfe03a4b0b3
MD5 613fe56b9244cdade14e1fe60b446d57
BLAKE2b-256 0466f3104b7629fe5ae69816b56e901f8954f02ec28ab4432b029abe766a0bd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mechaphlowers-0.3.0.tar.gz:

Publisher: publish.yml on phlowers/mechaphlowers

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mechaphlowers-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: mechaphlowers-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 62.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mechaphlowers-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a70876f94374dbe548deb79bc6fa3589422b36c4ff7b40e4862111a3da493926
MD5 f575328f7437fd29eea46175df1a7766
BLAKE2b-256 2f6a2040cc0cf68e436365052f875d5a4339e4e1655e3e43a28a186710d6161c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mechaphlowers-0.3.0-py3-none-any.whl:

Publisher: publish.yml on phlowers/mechaphlowers

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page