sect
In what follows python is an alias for python3.7 or pypy3.7
or any later version (python3.8, pypy3.8 and so on).
Installation
Install the latest pip & setuptools packages versions
python -m pip install --upgrade pip setuptools
User
Download and install the latest stable version from PyPI repository
python -m pip install --upgrade sect
Developer
Download the latest version from GitHub repository
git clone https://github.com/lycantropos/sect.git
cd sect
Install dependencies
python -m pip install -r requirements.txt
Install
python setup.py install
Usage
>>> from ground.base import get_context
>>> from sect.triangulation import Triangulation
>>> context = get_context()
>>> Contour, Point = context.contour_cls, context.point_cls
>>> (Triangulation.delaunay([Point(0, 0), Point(1, 0), Point(0, 1)],
... context=context).triangles()
... == [Contour([Point(0, 0), Point(1, 0), Point(0, 1)])])
True
>>> (Triangulation.delaunay([Point(0, 0), Point(3, 0), Point(1, 1),
... Point(0, 3)],
... context=context).triangles()
... == [Contour([Point(0, 0), Point(3, 0), Point(1, 1)]),
... Contour([Point(0, 0), Point(1, 1), Point(0, 3)]),
... Contour([Point(0, 3), Point(1, 1), Point(3, 0)])])
True
>>> (Triangulation.delaunay([Point(0, 0), Point(1, 0), Point(1, 1),
... Point(0, 1)],
... context=context).triangles()
... == [Contour([Point(0, 1), Point(1, 0), Point(1, 1)]),
... Contour([Point(0, 0), Point(1, 0), Point(0, 1)])])
True
>>> Polygon = context.polygon_cls
>>> (Triangulation.constrained_delaunay(
... Polygon(Contour([Point(0, 0), Point(1, 0), Point(0, 1)]), []),
... context=context
... ).triangles()
... == [Contour([Point(0, 0), Point(1, 0), Point(0, 1)])])
True
>>> (Triangulation.constrained_delaunay(
... Polygon(Contour([Point(0, 0), Point(3, 0), Point(1, 1), Point(0, 3)]),
... []),
... context=context
... ).triangles()
... == [Contour([Point(0, 0), Point(3, 0), Point(1, 1)]),
... Contour([Point(0, 0), Point(1, 1), Point(0, 3)])])
True
>>> (Triangulation.constrained_delaunay(
... Polygon(Contour([Point(0, 0), Point(4, 0), Point(0, 4)]),
... [Contour([Point(0, 0), Point(1, 2),
... Point(2, 1)])]),
... context=context
... ).triangles()
... == [Contour([Point(0, 0), Point(4, 0), Point(2, 1)]),
... Contour([Point(1, 2), Point(2, 1), Point(4, 0)]),
... Contour([Point(0, 4), Point(1, 2), Point(4, 0)]),
... Contour([Point(0, 0), Point(1, 2), Point(0, 4)])])
True
>>> from sect.decomposition import Graph
>>> graph = Graph.from_polygon(Polygon(Contour([Point(0, 0), Point(6, 0),
... Point(6, 6), Point(0, 6)]),
... [Contour([Point(2, 2), Point(2, 4),
... Point(4, 4), Point(4, 2)])]),
... context=context)
>>> Point(0, 0) in graph
True
>>> Point(1, 1) in graph
True
>>> Point(2, 2) in graph
True
>>> Point(3, 3) in graph
False
>>> from ground.base import Location
>>> graph.locate(Point(0, 0)) is Location.BOUNDARY
True
>>> graph.locate(Point(1, 1)) is Location.INTERIOR
True
>>> graph.locate(Point(2, 2)) is Location.BOUNDARY
True
>>> graph.locate(Point(3, 3)) is Location.EXTERIOR
True
Development
Bumping version
Preparation
Install bump2version.
Pre-release
Choose which version number category to bump following semver specification.
Test bumping version
bump2version --dry-run --verbose $CATEGORY
where $CATEGORY is the target version number category name, possible
values are patch/minor/major.
Bump version
bump2version --verbose $CATEGORY
This will set version to major.minor.patch-alpha.
Release
Test bumping version
bump2version --dry-run --verbose release
Bump version
bump2version --verbose release
This will set version to major.minor.patch.
Running tests
Install dependencies
python -m pip install -r requirements-tests.txt
Plain
pytest
Inside Docker container:
- with
CPythondocker-compose --file docker-compose.cpython.yml up
- with
PyPydocker-compose --file docker-compose.pypy.yml up
Bash script:
-
with
CPython./run-tests.sh
or
./run-tests.sh cpython -
with
PyPy./run-tests.sh pypy
PowerShell script:
- with
CPython.\run-tests.ps1
or.\run-tests.ps1 cpython
- with
PyPy.\run-tests.ps1 pypy
Release files for sect 7.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sect-7.1.0.tar.gz | 20.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sect-7.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.8 kB
Release files / sect-7.1.0.tar.gz
| Download URL | sect-7.1.0.tar.gz |
|---|---|
| Size | 20.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49dd28c1783b3c25675f608b07e6cea721477b82f68a00ae00eb40f8db0ee56b
|
|
BLAKE2b-256 checksum How to use checksums |
742a95ea5898d6939659113c14825d95074d6282e8f214cf4b4eab090d4d6555
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.3
|
Release files / sect-7.1.0-py3-none-any.whl
| Download URL | sect-7.1.0-py3-none-any.whl |
|---|---|
| Size | 25.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ad2e42a27134c62c1c819620f6648a0cd4357c210a0fe71f99790ced1c168e9
|
|
BLAKE2b-256 checksum How to use checksums |
a437a46e8a1e110add6e3355250fe6b8982419ffcdcccf8380b37e614ad3569b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.11.3
|