Python C API alternative to `fractions` module.
Project description
cfractions
Summary
cfractions
is a drop-in replacement for fractions
module
written using Python C API
.
Main features are:
- speed & memory efficiency compared to pure-
Python
counterpart, - full spectre of arithmetic & comparison operations,
Python3.5+
support,PyPy
support (by falling back tofractions.Fraction
proxy).
In what follows python
is an alias for python3.5
or pypy3.5
or any later version (python3.6
, pypy3.6
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 cfractions
Developer
Download the latest version from GitHub
repository
git clone https://github.com/lycantropos/cfractions.git
cd cfractions
Install
python setup.py install
Usage
>>> from cfractions import Fraction
>>> Fraction()
Fraction(0, 1)
>>> Fraction(1, 2)
Fraction(1, 2)
>>> Fraction(50, 100)
Fraction(1, 2)
>>> Fraction(0.5)
Fraction(1, 2)
>>> Fraction(1, 3) + Fraction(1, 6)
Fraction(1, 2)
>>> Fraction(3, 2) - 1
Fraction(1, 2)
>>> 1 - Fraction(1, 2)
Fraction(1, 2)
>>> Fraction(1, 3) * Fraction(3, 2)
Fraction(1, 2)
>>> Fraction(1, 6) * 3
Fraction(1, 2)
>>> str(Fraction(1, 2))
'1/2'
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
CPython
docker-compose --file docker-compose.cpython.yml up
- with
PyPy
docker-compose --file docker-compose.pypy.yml up
Bash
script (e.g. can be used in Git
hooks):
-
with
CPython
./run-tests.sh
or
./run-tests.sh cpython
-
with
PyPy
./run-tests.sh pypy
PowerShell
script (e.g. can be used in Git
hooks):
- with
CPython
.\run-tests.ps1
or.\run-tests.ps1 cpython
- with
PyPy
.\run-tests.ps1 pypy
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 Distributions
Hashes for cfractions-1.1.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 545fb6a1c69bbd6d847f09ade6484ec2e6332dbda7f5dc67c27715c189170cb1 |
|
MD5 | a81a3f5c7037398d3697f81c222031be |
|
BLAKE2b-256 | 616e920f03c3c0cf96ef4285ede340cf66bca2066b45bd1bc71ba03485491d1b |
Hashes for cfractions-1.1.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8da160a6046624d540e78d2f002ff5cbaa5efcc3f7d754f48b27a7439279b80e |
|
MD5 | 614b8431b788c5f0d7fd794cc6af4361 |
|
BLAKE2b-256 | 05a93ccc229ae1b1e8a360ace48f73a68c66181c61777d9d977036d222ff6595 |
Hashes for cfractions-1.1.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7593967e448522a203b5d3bc0a001fd6de5fcd265fe7d4c79f2edc1c92b860e8 |
|
MD5 | 7cdc8a81be33590428efe2f748f64501 |
|
BLAKE2b-256 | 9070c5ddd73b832b5f502e318792119850f5cfaab074163103ef99ef091f94aa |
Hashes for cfractions-1.1.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84e08f008de10aea785a39e7a69a25729c0c97b2098eafbf7351597ba1ab91e4 |
|
MD5 | a77fe5b61636538d6996d357bd52e5fc |
|
BLAKE2b-256 | e4e2c75ccd97a18335e091ddfbbd4b28e8367233d479b8144acec10e18ea836f |
Hashes for cfractions-1.1.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e8c3c95bee23c8b3630528e1f9985567f1bf9bf42bdc4d3f6057cc156e2c6db |
|
MD5 | 2d360eb63813bd907ba4f8b611d1cf99 |
|
BLAKE2b-256 | b8c4f5c8bdf46825b9ba973b281cfcc6e8f95d160f2611cb6dbf90182d5ecd59 |
Hashes for cfractions-1.1.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64c13f6ab81e4725dc14e821450077f44894636e2d83cf27d6ce5f465071fe37 |
|
MD5 | fba64973b7d93600a99532d7bb3b96a5 |
|
BLAKE2b-256 | c91388f049938cc9932edb82e85605391a895639ada9e7821df30ff563cf78de |
Hashes for cfractions-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e335141e127eda725dd75ed103abc17ddc779c82c0e9040a12a8a1f2d55222d |
|
MD5 | 15c15077203722c208525bf4c61d495f |
|
BLAKE2b-256 | 4366c2d14ca45f13e8c1537b45e545002cb10b54bb21c7787b83a68c19db1f76 |
Hashes for cfractions-1.1.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b4ad756df6b7d1b62357c4ad8c4f64fc0e2fdf7df5c7e698823993c19f124bf |
|
MD5 | 24ad5c4bd2a2961a2b4226d8e434f961 |
|
BLAKE2b-256 | 4af62549fff5f4de67fb7f30788476ba4bedb5b2164c3b371ad54d9ce08c332e |
Hashes for cfractions-1.1.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51ffd1dcbdc821c805b5ba6e0bced1d6befb4dced00b136291a7a53309f93ffe |
|
MD5 | 5ae9b5d26b8cb47fc60b23aeee1db08a |
|
BLAKE2b-256 | f8e5072dbcb2cfa9232771730c0536a28ce8fb1dfa530d099b45d35b026f27be |
Hashes for cfractions-1.1.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8906299432f55c890755a81e278a198a95411bc626bd420fcd62adbec6c9996 |
|
MD5 | 8fd31efd9ba7b271ba07178f0516aace |
|
BLAKE2b-256 | d2523b5b5a23facf2a96f64872ffa770ac494b37aead8ba99d55e982f2a28f7a |
Hashes for cfractions-1.1.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8aeb4ff5933039d9fb357af29230d94f1a8d2a0716a79be6fb11c807630bfed5 |
|
MD5 | 506b46b098b8da89a8ca0f2bdb0be71e |
|
BLAKE2b-256 | 535c8813d99bc78fa19f5d4cf812714be088e6c0196e48adeafbcd3a0a526b07 |
Hashes for cfractions-1.1.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 156c8addc450627f726bfd59d654bd3e3b4894ddc6b900c5cab740070af34869 |
|
MD5 | 4e2b5125f542b48777ff8d921fe71f69 |
|
BLAKE2b-256 | 703962d7fd883a7fe931c3615d9dd44a2400bedc4ec9ce8fb7e67810ef0a07a6 |
Hashes for cfractions-1.1.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 237067bf2d1b56354a0bfe7949fdfc54acfafdae8cfa7c103a175ea08ee9b41a |
|
MD5 | 6eac1b5314d0e305557cae393cf30a5e |
|
BLAKE2b-256 | 6a315eac9696a4b43cfa09c3033bbfe6ee2e6620525b976d70fb9b11f6065db6 |
Hashes for cfractions-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 873312bb1ebb23a48ead9cc486c174143ae80287f585546a9fabae579b486a3d |
|
MD5 | f88b8fac969fa3097d92f67956e4da7b |
|
BLAKE2b-256 | 390cdb99d77f5725839d551e8e192f015bdfbf0aff7dcdae4e9fcf26c587a6d4 |
Hashes for cfractions-1.1.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d774f40146f54f81b39cc724595045c8bb6bfecfb64fa9a87c61f4f18b693da9 |
|
MD5 | 38786e11484c65f1c1177dd05dd0f865 |
|
BLAKE2b-256 | f53aafd3be9b38c6153a806857f46a9d2ca6256f76daadf31635b56519d7f4ea |
Hashes for cfractions-1.1.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdd575bec3e338b61078466128098565d3a2c45ee4d7c76963e03b065bb72746 |
|
MD5 | c8a1a316ea0bfd42bc5354172750c0a4 |
|
BLAKE2b-256 | 67437b7c4c0bd028240f6d5aada2c98aa44af08b2bff43b48789e094c57a3f3d |
Hashes for cfractions-1.1.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec97b424b926d3685f35f7ca72552c2616672215ad64acbbca23f67a637e858f |
|
MD5 | 47e90b31e796cf3e068e2d5f3fa1260c |
|
BLAKE2b-256 | 87d02e0f8bbcb6bdad91b21f6e4f9b2bbad035a413a3ad5daeff3841dd55aed6 |
Hashes for cfractions-1.1.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a7fc4ac7f901ccb03453c7d14d5fdabadad62f697857bfd97ded919c647d120 |
|
MD5 | 690945e3a2eb2fa50e7d8cdadf1c91bb |
|
BLAKE2b-256 | 21f1462dfc7505d3daff6ed50c8c6fb7d18511f84b59792338042d9579d21ae0 |
Hashes for cfractions-1.1.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ca473ed2763206dbc11cf3b6c8a1fafb59ec98f4cf77e9c45fd5b7e7574fd9c |
|
MD5 | 17997b6fe06f630f95b6f157ddd56807 |
|
BLAKE2b-256 | 94580dce172a461b9dea4a5a0ca1b686d87e3d75ebc0a42481e77392a33238f4 |
Hashes for cfractions-1.1.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02784d678329a3abe0ce4749402dfe125b3fb1829d4b95c9dab78078b4bdba3d |
|
MD5 | 1680b0b60d5e9a6d24721ec9190addad |
|
BLAKE2b-256 | b93532bf6aabf5093d0d6e701ea69b7c539c87e1810507141d53c3d62f0c16de |
Hashes for cfractions-1.1.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b63280a6637517dbdbc37bc7814883cbbea620899ea325ed2e5202ffe349698 |
|
MD5 | 392cfb9f24454f1c04932bb8f2ccd63a |
|
BLAKE2b-256 | 8507edea52dc6dced6de6286a70f316ed418996215337851a245fb7a3f40610c |
Hashes for cfractions-1.1.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f409e3c23db83c89ccc31109b1a8c636b42d8661e420bffe00868b437959488a |
|
MD5 | c2e355d80569867538534e89a6fe07a8 |
|
BLAKE2b-256 | 102121963ac3675fd61f77dc4fae9d99994503242e2d5798e833a4ab12839ce4 |
Hashes for cfractions-1.1.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a11ca75074f929c14923224d106057f3a99f30cf58fd95b94f63faa7f62262b4 |
|
MD5 | 48a075bdd3536b82bfec493aa345f03c |
|
BLAKE2b-256 | 29ac6733d24f31a756bc069eae30c1901b21d59855c027993324b0526b462b55 |
Hashes for cfractions-1.1.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6df4f934374d7ccbeca0e815ba7312677ada8a5c2b596740b7d5ac28f70fee1 |
|
MD5 | f9a41f798a645097be72229e6e3a01d4 |
|
BLAKE2b-256 | bf27175efebafeafd3bab871eae0211f9ecb743ae53a416809eb34ccf92d5e0e |
Hashes for cfractions-1.1.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4961c71c7e26bb73ca130dd72b67e02f626c2fbbba2f359356b135de3cb297e |
|
MD5 | f058f6aad791145c0d92d672df48a4b4 |
|
BLAKE2b-256 | da27a78a3a5fbe46913dd14f4bab8cf664cfba1efcca8f8dba7d8b2dcf7dc268 |
Hashes for cfractions-1.1.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03f6c9c3dd8fb5ab83c08ed37a1f7c1b4383daa13d5c1db8d9e8c50cb6498a8e |
|
MD5 | df1efa05e588feaf8d538bac1841b045 |
|
BLAKE2b-256 | 6b1b7067c2cd7e98e55b557b73075f8e9c15fb13f514bda92a19518c343ad4ae |
Hashes for cfractions-1.1.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf409684daf15f541fa6a29e428c3cc30832e9148ff3a3f2e1259b39abb64a6b |
|
MD5 | 40c1661bd3ba56c7109b7666698c4a1f |
|
BLAKE2b-256 | 0f3b6bcdd3dc25dc6376de3d72a64c04a48dc04fc8fe9a35e4b2a12dea11190f |
Hashes for cfractions-1.1.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2306c9a9f05f5ebd1908221eece669bb60cc308f35169cc85e45c1cb1773b76b |
|
MD5 | dd2dd6fbe337b8e50c72f269eba82ace |
|
BLAKE2b-256 | 9fe46b4f6399b818b38bbc52c414d0d22f171db6060849588357427d3a2c120d |
Hashes for cfractions-1.1.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11c241a4600b106f51fe497c49297519f147afe224f5bc087e859ea11dc656a9 |
|
MD5 | 706d97262d7e1f0c086938355009cdb1 |
|
BLAKE2b-256 | 9b7978675aa41496d97eb4ab256d11c5cf0c887e3c5f60dd5e9b5ad03c86c9aa |
Hashes for cfractions-1.1.0-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e675be40788b60f42e0c407ca22b173dcf6ff588f0c3f975a012aaf0d5320a3 |
|
MD5 | ba05465ffe44ca4aaa080f17a08ce444 |
|
BLAKE2b-256 | ddc78a3a60d803f81cee0687bd530521bcad3f8eb2c9e18c760a810e3682020c |
Hashes for cfractions-1.1.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7532d6779babd1158b52798c6bf043a5a01029a5562a2441347230aef20d25d5 |
|
MD5 | dbd1bf9a3f0999832c7fa83859ef0561 |
|
BLAKE2b-256 | 32888ddbeabc9761682bc17e1f230eccb8fd5bef045867effe30e6543d55a5ce |
Hashes for cfractions-1.1.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 830d1de110399577144e3abb2afe2073f413fe182a26a6800d714c189aa6a119 |
|
MD5 | 126d987f05496b7e0609c5068d2880b4 |
|
BLAKE2b-256 | 33934ca4de139af74dff10c69fa5e9eec9f1de5a94aa665960e60f7884becc33 |
Hashes for cfractions-1.1.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f88a7d20880fc272d3d578001a5ee73ad7d1bd6cfa829be4b34d889c1753c67 |
|
MD5 | 3d76f347b0b8b03c9309e32c0269efdc |
|
BLAKE2b-256 | dff17d242167c8d6fa1c46b36f409fc03913e75eb9e10b32d02948a1fb5a7290 |
Hashes for cfractions-1.1.0-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f5fb3bd80d2d4c795b06e0204d0cdad313867e0ccf04ead4b238a4b4d1ba14c |
|
MD5 | 465980998ad9276b34c581c86a35005a |
|
BLAKE2b-256 | a1505a9d88bfc701e512324ab28d29d2c517095bf3b81f25e91271b18f5e3a33 |
Hashes for cfractions-1.1.0-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bad103d97fbb29af04c5c50a93a9db48536e7fcbbf20affd7a8fe98a8bfd7915 |
|
MD5 | d3601d927317636a0f7c365723feedbb |
|
BLAKE2b-256 | 781509cfe5d1a7c97ea1de5740f6c572a6a51bfc19c5bb3d6904f686a27d8185 |