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, 3) / Fraction(2, 3)
Fraction(1, 2)
>>> Fraction(1, 6) * 3
Fraction(1, 2)
>>> Fraction(3, 2) / 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.2.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6937cddc76402f1a6c6493342b77df38ae70ff3fcbd5df3ba4c2ce90c7293211 |
|
MD5 | 1dffd81f1c007a0e80120432716392bd |
|
BLAKE2b-256 | 051dd1a7cdc5be341ac2d70f1d04477c9ac10a3b1506aa5c1812f4ee01c0fa7f |
Hashes for cfractions-1.2.1-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f9e7dc7c23b44ef37bc9f4044d56e1ac1992c0720f0adc31fe6c52eda9d0f4d2 |
|
MD5 | c591201c8b7d8d4ad4873a57341bf1fe |
|
BLAKE2b-256 | 5ec8a6933de575a6ea202368ead91fbf105c19439778ef1056469349758158d3 |
Hashes for cfractions-1.2.1-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4728504f9ac88accb97120e76d27a1dd5004e4339c6e278b1c8bae2a1d27a85b |
|
MD5 | 10cda95bacc14f21860c79406424552c |
|
BLAKE2b-256 | 2c3c1412ccec6c36d7a6e1f8b50986ed398047f021b987a272875c0ab3647f6f |
Hashes for cfractions-1.2.1-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ceeb4e44e95a46b79bcebc3ba6e5d58a8774523f4e22c8916b49091ff6f4cfe6 |
|
MD5 | 50b43662ff6b207224550d5cd6250e10 |
|
BLAKE2b-256 | 8324cec6aa28ddf6d103c0fe3cae88e3e7c40f01592f19d345f2a0af47ce6408 |
Hashes for cfractions-1.2.1-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 445d421e7d111ceb5e2fa258ac39d276d9edb11d04023f61396b10cd98fc61f5 |
|
MD5 | e8c5a224c80fb713bba4f989d14e92d5 |
|
BLAKE2b-256 | 3bad80f3c93cd3b1b3ab3adda5f264f138f7a2fdbff20b6fcef26eeb575d6dce |
Hashes for cfractions-1.2.1-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 686f72f6b43ab6d671329f6be03596abfaa7b476e4ba59da8edb4aeae7199499 |
|
MD5 | b29e0e2e085ea2ad3c5770840aa1bcd3 |
|
BLAKE2b-256 | eb47b9663adc30d81f30f6915205d0c4f0423145a07021d4c483c594bcda6860 |
Hashes for cfractions-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18fe09006b4a4d8b8f91e034d4b009f3dc639c449f2befeff66e25c48f17678f |
|
MD5 | 852049514b881119378eb036c88a58ea |
|
BLAKE2b-256 | 2b467fa727e4087e65a05388e24444de6ddcd860efcc7638b640af8cb4be0150 |
Hashes for cfractions-1.2.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9bc4205269b8f8da3d1aedb3ff3f8bef869746323ff91e47f86306604488b3e7 |
|
MD5 | 53c5667c0373cb094c9fa17abf17f8be |
|
BLAKE2b-256 | c95cd833acc9e5dce15038464cd43ab216b79e97a0c1fb8f35ee58eb85863426 |
Hashes for cfractions-1.2.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0d74c25cda0031f2c5fddd22318391f610dbf2f7d9322330b6ce2f5e6f22991 |
|
MD5 | 964db9f8d16eb97b93e2e8a528ba901b |
|
BLAKE2b-256 | 6ad5997b039acaa1e2746f86ae84cc66082e80122cf4090808394a71799a9c7a |
Hashes for cfractions-1.2.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f23663da7a640d4b41aaf69899bfdf22abceeeec5cce540d1341617bcfced75 |
|
MD5 | 4dde365bdca706bbf404761ba81690db |
|
BLAKE2b-256 | b69253df51353fc3d884e1c2ded963e9cf71258656f5fcdcfbca69cf3e3fa7b7 |
Hashes for cfractions-1.2.1-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84f3c61025e616072ac28c477c44fed495f9002d4d3255d55781b7d6661970da |
|
MD5 | eeeffb4b80a498f0027c1a1773c926f1 |
|
BLAKE2b-256 | 0fa90d72d5a3f5fbbb1150ba10a659b50ee5c7ec457ef0d60cea5987c06a8108 |
Hashes for cfractions-1.2.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75cb2c164adf5d77dfb85d6e9d26d5824ddce7c6a45217192e53683cff110cab |
|
MD5 | 1ac6ad7735b7e5f2fef8364efeda068c |
|
BLAKE2b-256 | 6e6b84f0f4cd3f193988a75a7f86d78fd7e5e7d90cd23ee18e15ecea184b37b4 |
Hashes for cfractions-1.2.1-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29ba59cff93e1987157f14a74487347d8a07b3b8430622c7ef78971ef7e2e388 |
|
MD5 | 4f91f4e59885a35fe1fdf72734797497 |
|
BLAKE2b-256 | 6d76415c85911aa382f108c7eecfe5bfc8d555a2789ccfb910923a7573fe914e |
Hashes for cfractions-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc369feb3e6bcfe982f0c0b758a7de7a3b41cf365ec6924220fce4da64e133db |
|
MD5 | 3c8e39546c50cc3655459c19a6bb5980 |
|
BLAKE2b-256 | 365bb4a05ecc1900d7ed11938b4c1c93946f8f3f2442697a0e6f826ed423f536 |
Hashes for cfractions-1.2.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ca6f55ad82ee3f97a18f8cab9c912a1083528f05c8325b0ee747be29a9861e6 |
|
MD5 | b028006d8cab7c27d617bd12a5c96c91 |
|
BLAKE2b-256 | 8dd306bf476b80c8da6c45b8ffecfd83e4bedb5608859449eeff06a2a450b38a |
Hashes for cfractions-1.2.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e47c20c941fc6819b35229da96a724c34724506029e73ee62a9c8b49bbcc074 |
|
MD5 | 3abf85d3ffb4d07b4859d3bfed0b17a5 |
|
BLAKE2b-256 | b9e9878d78eb06814b24e60b123b65f484593a8c1bde14b6e104c3cee694ccfd |
Hashes for cfractions-1.2.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f2875554275a4ecc828830f3154110755c9f5672be96844c6abe1370b857ed15 |
|
MD5 | 989a390504ac46e8bcfbcc6f237d3f0f |
|
BLAKE2b-256 | 13fb52563e230485c01c7d9b234be68565f1acb8ec719c9ae8a5a699e231ac81 |
Hashes for cfractions-1.2.1-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7368b72927a24660b185201df895545ffa19e7b016df535cb351a97c46e27ff |
|
MD5 | 599eff23688f0b1d8be0119f41fcfee3 |
|
BLAKE2b-256 | 22dd085ebfa823444b19ef25c551df88b5b2da0c0566c6b7a25149e2c64a6fec |
Hashes for cfractions-1.2.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce3ba53c40b6da59241e66405e847002c9c31473f6779d3ce8251622e084f417 |
|
MD5 | 09f705f54826556ca9c52e9dbcbfcb89 |
|
BLAKE2b-256 | 8657680b89c0d103676903546c44148ec0a26921d7f4f2a6a15fb65dfd4ffe6b |
Hashes for cfractions-1.2.1-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39ca1ae881cb03107bedd81545255f294f387df139ed3c0d9327e229a5fa4b25 |
|
MD5 | 0c25a2f4d53895ae297d7f27dcea6cb2 |
|
BLAKE2b-256 | d8096220e51c6926fe63ea6eabaed2ff52a7218c3c084b0c5af53e752c1abdfb |
Hashes for cfractions-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1aba5a4f03bd91e95359964710a167e2ec0e82b52843ec194e4015f7306c67a |
|
MD5 | 23929f6a1832bc42ce4b5a4c086c0750 |
|
BLAKE2b-256 | 293ff8b99812e5f21206dcbdff8e84ea94505fc471705558bb27c5c138b67b05 |
Hashes for cfractions-1.2.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 365347c30a7e41df2c19c4e28fb4a8930525673ee350dfe03a2bd4755f62bbb9 |
|
MD5 | a9c52cfa3da017ebd213c7279e60d27a |
|
BLAKE2b-256 | b24d7ceda55ca8b5d346098d7a75d68ee368ae312e4d73d6708e16cc1898d6d2 |
Hashes for cfractions-1.2.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cd339053bed5daee78a56f04d4bc723e58152da45ce6f84877b9c4432758b65 |
|
MD5 | ca4a153dcfbe3f526c74b21db9caef8e |
|
BLAKE2b-256 | 270c544768542667b82fe4e12e4b78069873d07533e8508b39a46f0d3c29facf |
Hashes for cfractions-1.2.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a579d9319f6c4cd8e533e264020dc7fc933b112d8136e0f37c05f0f28ff24b02 |
|
MD5 | 1d7f81c1a8fdc7dd0c2701ae34053466 |
|
BLAKE2b-256 | bc159b7b820c1c21957c925ce6ee06931d1f9e20ec35f6d2434e58e477a5db3c |
Hashes for cfractions-1.2.1-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1309c1760a5d8207f72bedbe07f73dc82f5f23d0bcc51ffe197c2ccad364c7e2 |
|
MD5 | 1312043d2a00b10e04b5a0724fd2b77d |
|
BLAKE2b-256 | 1a34a3114b5f02e44ff575587b54b2dc629a6335524b10e967598648fd116b32 |
Hashes for cfractions-1.2.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de5332c259dfc1e2acab97e4ac926d80cf6c2e0c1af0b4fa7d47e8dcbb010bd4 |
|
MD5 | 29757cf0636cb12dace0860bca65bdd1 |
|
BLAKE2b-256 | 8febd7f9c9c23336ffb80da15147ffc1a5af5f2ffcf4cbaa4221d96e1fa8c5a7 |
Hashes for cfractions-1.2.1-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0574168aa6cc38432ea5001315a29cd8c817a799d86dedb846a8fbaef59d704 |
|
MD5 | f5908ae7d73d3d5345acf2221dc9202b |
|
BLAKE2b-256 | a2c6566e379aae42a55eb1c6568bee8558e1f0ad39d70977d0a908d51c7fc362 |
Hashes for cfractions-1.2.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e09aa839477601e05c9732642ef9fa831d7d39e25a9e2e1ce1b28d4fa1057c4 |
|
MD5 | 12beed47cda56ef01553abcfa4587a85 |
|
BLAKE2b-256 | 3501aeb30f22139ec1604555240b80cb8eaee035e05651595a3bf8533b8fc110 |
Hashes for cfractions-1.2.1-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e481a6656f19087c171f2e806fb184e08b362a97ca9b5f0f8ce10712c1a60924 |
|
MD5 | 7c065a572894d11239099c94863d3248 |
|
BLAKE2b-256 | dec5dbce8280084ae94876c9b02b74a9092c39d75df93bd25eb0a570c9d47016 |
Hashes for cfractions-1.2.1-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b79ae2951b736d3c68853a5cfb3e2e68ba461c30faad9766f9ade4268b48527 |
|
MD5 | 5cd0941294fa40db8ac7bd560df7b7b3 |
|
BLAKE2b-256 | 22192d9e085728847174e1bff9a663106caf82eedde86f034da1ad0c7d245f08 |
Hashes for cfractions-1.2.1-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8de5a061bf89d5154d69f6f27056df9b3276f8888ad288afd1bec0395db0f78 |
|
MD5 | 93e7d27bffaef9a3c6f7bb54047ac8c6 |
|
BLAKE2b-256 | cc897e790a1ae94e40d0d52314a7f58016a2bc1fff0de5bf2decd6342fef6620 |
Hashes for cfractions-1.2.1-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 572a68a464dd8139f73d42ac666c1b0f0072f63b03c7d64ee9d20b55e4792447 |
|
MD5 | ee67a509ed7a55d7e038c9527e8d3a1c |
|
BLAKE2b-256 | 6103445374bc60f2a7343f34477765d91d25878e316c6512b093aaa52f6a3592 |
Hashes for cfractions-1.2.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37debdf778fd322fbec32a8cb49bb2c3258cd761605e54914ac6ad8cfdea7a22 |
|
MD5 | d0081fe5bf7a6e2f4ec264868ca1e341 |
|
BLAKE2b-256 | fc5a379789fe8bf72695babe892e44d5bbf7e6adb04f97d57f45d2f43666458c |
Hashes for cfractions-1.2.1-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a0c5cad32b44faa65e0da49ee0796535f8ccf3a3a80256dd0f3cd7096de01bb |
|
MD5 | d17fb360e1c6e0ff8f2cfe81eac2b29c |
|
BLAKE2b-256 | 0d57b39d9505222895c447e2bd1bf078c8bfac9d1eebc1ba2781ab9436ba3721 |
Hashes for cfractions-1.2.1-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0d3b144d52d910b14bfa11954338e3f4a6bda688777e05bfce1d36c099353df |
|
MD5 | 5c0d3e695b0f55718dcabccb26b7033e |
|
BLAKE2b-256 | 8820c02ac681fa4561880e952671237535df7d4fc3cd4550eaf0b9741a63586a |