ground
In what follows python is an alias for python3.10 or pypy3.10
or any later version (python3.11, pypy3.11 and so on).
Installation
Prerequisites
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 ground
Developer
Download the latest version from GitHub repository
git clone https://github.com/lycantropos/ground.git
cd ground
Install
python -m pip install -e '.'
Usage
>>> import math
>>> from fractions import Fraction
>>> from ground.context import Context
>>> context = Context(coordinate_factory=Fraction, sqrt=math.sqrt)
>>> Multipoint = context.multipoint_cls
>>> Point = context.point_cls
>>> Segment = context.segment_cls
>>> x_unit = Point(1, 0)
>>> y_unit = Point(0, 1)
>>> from ground.enums import Kind
>>> context.angle_kind(context.origin, x_unit, y_unit) is Kind.RIGHT
True
>>> from ground.enums import Orientation
>>> context.angle_orientation(
... context.origin, x_unit, y_unit
... ) is Orientation.COUNTERCLOCKWISE
True
>>> context.cross_product(context.origin, x_unit, context.origin, y_unit) == 1
True
>>> context.dot_product(context.origin, x_unit, context.origin, y_unit) == 0
True
>>> context.multipoint_centroid(Multipoint([context.origin])) == context.origin
True
>>> context.points_convex_hull([context.origin, x_unit, y_unit]) == [
... context.origin,
... x_unit,
... y_unit,
... ]
True
>>> context.segment_contains_point(Segment(context.origin, x_unit), y_unit)
False
>>> context.segment_contains_point(
... Segment(context.origin, x_unit), context.origin
... )
True
>>> context.segments_intersection(
... Segment(context.origin, x_unit), Segment(context.origin, y_unit)
... ) == context.origin
True
>>> from ground.enums import Relation
>>> context.segments_relation(
... Segment(context.origin, x_unit), Segment(context.origin, y_unit)
... ) is Relation.TOUCH
True
Development
Bumping version
Prerequisites
Install bump-my-version.
Release
Choose which version number category to bump following semver specification.
Test bumping version
bump-my-version bump --dry-run --verbose $CATEGORY
where $CATEGORY is the target version number category name, possible
values are patch/minor/major.
Bump version
bump-my-version bump --verbose $CATEGORY
This will set version to major.minor.patch.
Running tests
Plain
Install with dependencies
python -m pip install -e '.[tests]'
Run
pytest
Docker container
Run
-
with
CPythondocker-compose --file docker-compose.cpython.yml up
-
with
PyPydocker-compose --file docker-compose.pypy.yml up
Bash script
Run
-
with
CPython./run-tests.sh
or
./run-tests.sh cpython -
with
PyPy./run-tests.sh pypy
PowerShell script
Run
-
with
CPython.\run-tests.ps1
or
.\run-tests.ps1 cpython
-
with
PyPy.\run-tests.ps1 pypy
Metadata
Release files for ground 12.0.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 | |
|---|---|---|---|
| ground-12.0.0.tar.gz | 33.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ground-12.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.5 kB
Release files / ground-12.0.0.tar.gz
| Download URL | ground-12.0.0.tar.gz |
|---|---|
| Size | 33.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
924ac5e39506043559e833862bdf3ee9c57b4d6a8b3bc48d23119ee2b9eb28f5
|
|
BLAKE2b-256 checksum How to use checksums |
d9a2a8ede9ece8bfbfd9ba3bdf073dc1d926bd2326bc8d4ca849b681ab5dbb00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / ground-12.0.0-py3-none-any.whl
| Download URL | ground-12.0.0-py3-none-any.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c10fd9eadd7dd1621d7c2ec84c11405e6e05333c7ea7fe7ceb77269232cb5d13
|
|
BLAKE2b-256 checksum How to use checksums |
bea0ce548846b04688eed4815c5cf37502c48b2c6452df871a1a73dd4998cca0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|