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.4.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c28ec15e56f34e8eeffd3f3882238109316d9888c14c82edca1ca9b689baf79 |
|
MD5 | 96f6692910a1d89aa06c5b897ca13806 |
|
BLAKE2b-256 | 43dc1a638d5b93d62edf690282a215ea09e3f6a8eb11e37c54e365f6445f9f01 |
Hashes for cfractions-1.4.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b23fe1ce344c6cacf375b2e8f0aac23194bcc56c1720d8314eb15000158fcb8 |
|
MD5 | 8f5a44573e74b31c6f10e6196dfaf3ef |
|
BLAKE2b-256 | ae4dabab273d31f26523e53a3bda4a0160a9751bd03d6ad723150c9d66d0784a |
Hashes for cfractions-1.4.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f6c79cdaeff42d291748c43434d97336e2762d79f2a4e0064ecd3af740093ac |
|
MD5 | 80190ab05bc908ac0bcaa5b574de790f |
|
BLAKE2b-256 | 61617b5396915a989c8b6d477644cab39338eeeb4323826334564513ae512320 |
Hashes for cfractions-1.4.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0db9cda11bbc016f7991a0e2ab9fc2a3675860839ac7f9b4abdd09dccc1e423b |
|
MD5 | f0d2c8c97d8aad6e715d008bd134b2d9 |
|
BLAKE2b-256 | 0bff1bca9300d7204fde3dac00f32888bc79642e7a26b0dd93cbc2b32b5dff4d |
Hashes for cfractions-1.4.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 144abc79dd650df5ca02339b749fada2d990a5d0f4ac8528c4c527172c03ff40 |
|
MD5 | fe14a53ab4fa5dade2b78eb0d8c004e7 |
|
BLAKE2b-256 | 9ae81b34d56e38eb9f2a9d70ad6f839a7eafb435be5cf854d49f483b8f28b1c1 |
Hashes for cfractions-1.4.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19c4aca23599031abd9c7ef36be6b109d0b1d79750a869eff6a650b9575f9f76 |
|
MD5 | b0cd7b7a2fb32d601d917ebf7444eabd |
|
BLAKE2b-256 | e20242b71b857465dbf8a049f55b39c7ade82c1fe38bc112796bf487f0c64a96 |
Hashes for cfractions-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 704f7aee0bf727f2187c6bf37b25a06adeb576b154f6be08ac8d17a022696fa9 |
|
MD5 | a541de8549a12098caaea70afec48475 |
|
BLAKE2b-256 | cffd2b8820a426db677c2288b3396b26dadc7a45999351c7feea66a659f363a5 |
Hashes for cfractions-1.4.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15386963b695ac6621d6ae55282533591ecff5edc3517b7f9210ce61e46051ab |
|
MD5 | 669f35c6d0e9102abbee64d25c5290cd |
|
BLAKE2b-256 | 3a5c6c0b30e41cb01127e6815eee051df87102994408b4c5b8439a282ef3752b |
Hashes for cfractions-1.4.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39effda651f2ceb638f4208ef52f74caf3c055af18fa4d8e06a9aae8a940ecb1 |
|
MD5 | 61dc55666e90d09b6eedfae687b3c672 |
|
BLAKE2b-256 | 841a83e5118434ef2c9164090d79fbb8b83e8a6e3172cad84b7592429bfb8d5c |
Hashes for cfractions-1.4.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ae271333bb7a87a7799c59a84fd219b89da4bbcbe3873c25c61523f06300199 |
|
MD5 | 91cdab098db1d2677ddcfba596d651cc |
|
BLAKE2b-256 | 9375e2d40d47b0706e34e281fd93c12a2eb50b43f976a878fc0650e555dfc92e |
Hashes for cfractions-1.4.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ef76b5473e44111f12ea73df3a517b7a68964e9ee974ad20c5e01419b292ac2 |
|
MD5 | 0b8e7f149e76138dd340aa3600ae1707 |
|
BLAKE2b-256 | 4d04f319b46d9d8e2298c042bdb2ce0780c5d25ad6f0c8f24f63cfc2f55653ae |
Hashes for cfractions-1.4.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c47764d51fc74a473c477a51d5cf887d2ff47a1865fcb088541e98b22d9de18 |
|
MD5 | 8fbe9f35b09e97028ec36a205ccbcacc |
|
BLAKE2b-256 | 5579cfb0db26ba52d2e3006678b353c406117461f019a2aed5d52b7069202ea9 |
Hashes for cfractions-1.4.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b78b8904492af8f0bb75afc8dff44934bdda98d38a043ef1b3547c4c10cd7e96 |
|
MD5 | 6af10284c625391cafc3275c284bc9fe |
|
BLAKE2b-256 | 1a51cdbd48a53c5c28a519db0a487f856f2aa18fd26e1647a5c65bf06a73f876 |
Hashes for cfractions-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70b0c75867d96f0285e8c6fdbd6337d9f89dbd27523b8fc111dfc46a86b53602 |
|
MD5 | c110b1cf1978d926fc1083864cf0c153 |
|
BLAKE2b-256 | 1cc8903638b75fc1278b856eb9c69e17a2fbee771552ff8555bb17b95fd08c9c |
Hashes for cfractions-1.4.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24aea1b396deb49d1315ba1c3534680493ad30f1651a30ad09d0491827953a42 |
|
MD5 | 2d82bc0047cdb9176121c0f3121a3892 |
|
BLAKE2b-256 | 6073c3375c38d035395e9d03998b5fdd111226d29389c7184730553cc1eaadb0 |
Hashes for cfractions-1.4.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e09e392e153a3bb15509d6ced61e99a08354d712105b1a718d154b0b15834e18 |
|
MD5 | b05e21f5695a10e7b8fbb5f0ffdd34d3 |
|
BLAKE2b-256 | 3a6e01ca2017bbea656b91ba147b1aabfc1946fc060b02bf3d06f1ed0f9b134b |
Hashes for cfractions-1.4.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b593ebe9f1dca032674ec5585737d58e5d1af97e63fe6a4866395aa6de6683d1 |
|
MD5 | 8d064f7bde35e6c1f3210ba3be94adeb |
|
BLAKE2b-256 | 69f46d9454f3f445fda6054cdf5b6a2a47f7c1827e08b69b78f064c5583222ed |
Hashes for cfractions-1.4.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b31b55622a72cb506e097b290142628692dd452afe993185e44181c18111bb7 |
|
MD5 | 72851ac6db4b0092e9f8d3307bf1c5c8 |
|
BLAKE2b-256 | 87eb5ef3356fbf299ff6fe908135b5ca93fe7b2d5c09671e12076dcad7ed4648 |
Hashes for cfractions-1.4.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8d99db04f9d71e49a52b55a27d77e7639e57b27830f4b2739f64ae13829ac08 |
|
MD5 | 9c87d46d957c1537344d62a9ad9ac2f5 |
|
BLAKE2b-256 | bebc8c94db2f19f5daf936b6bad450e34190b5457b2887e30752e112a194206d |
Hashes for cfractions-1.4.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa884ef74956328bbd00d217c375c234019836487f5dce160da8097eb269a34b |
|
MD5 | ecc5cf1a069ca683a0c3f4f860a634b9 |
|
BLAKE2b-256 | f21cc5891a7db25b4a2095f7da00f85b5b8f5d27efc7b5b1ccc1d78028238a69 |
Hashes for cfractions-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bda35d061c913ff25d68f96ed3ab4f24c85f8695ca3825414e8cb12d86c14fff |
|
MD5 | f10edfe39c0932ba9bdde3c3cc195285 |
|
BLAKE2b-256 | 3717cb513ffd0cc123efd4280040835ce0bcc3a0d01f2217811ed29c84ff9a62 |
Hashes for cfractions-1.4.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 679957ff5fdaa98826b4d7200091a3cd0f9e67f305634c731fa4e75071367417 |
|
MD5 | 9b993cbef9277d2b5fdd8cc8ecfdb0e9 |
|
BLAKE2b-256 | 560c1f7b42f7e7d9d30f7bf4ffd4e25acb33612146da769357da932a6037187f |
Hashes for cfractions-1.4.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d89100c5df41fae28e0dc4af4462c9e6518cd9e3d699452834ef8b80ba0e2b63 |
|
MD5 | a66bcd2705f65a8a1df18f2426134d55 |
|
BLAKE2b-256 | a848a535f0397c6ae67c54c2946b185967747b704f0be6a5b92db76ad1a0e7a6 |
Hashes for cfractions-1.4.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e23ff9dd64f39b02026adc4e4c114224db7e419a55f291e1972f4a85787acc0 |
|
MD5 | 39b1adac1d29f3ff0221174c21301615 |
|
BLAKE2b-256 | 5d2627bfc1f53ced0880f781abf3328fe42c9dfe6a783e8da7e711867a7f64e3 |
Hashes for cfractions-1.4.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ae4388bb5d312ea9cea741081efade03666ec93b3e61e3d1bdacb7838660986 |
|
MD5 | 97c2bd21d2d555fef749e5e9d1cecd03 |
|
BLAKE2b-256 | ccf171f31fdd4b34576f38b3757b986ba37a9048f7d4e4198c33947353b44238 |
Hashes for cfractions-1.4.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39f4b188d2c8f926f6ca24f98cbc7e58368c2f5984de7590aca8b335d19286b7 |
|
MD5 | bb159856c9bfdf4e72b1ff6c6d54ae1d |
|
BLAKE2b-256 | c1f34aaabf5570f694cdd27e0d8d1ea1703c5031f60cc0794e9b6e114cf4555f |
Hashes for cfractions-1.4.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a540cc0fc057c019e21b8c46fd18481c9bb8c6b7de03eb7a23608f546703582c |
|
MD5 | 80a0c0f7a6ebadcd59f962d33dc9a6fe |
|
BLAKE2b-256 | d29d3e99d9629e9e7354e790a6498737c360bcac4bba7a061fd201b81cf1b1bc |
Hashes for cfractions-1.4.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 597ad6ab630174b2aefd3de4ba51a215186214eeae70b28c9630d85f6ecf4656 |
|
MD5 | 7f514d8fad344dd86d38c40d530293bb |
|
BLAKE2b-256 | 5cca2e11b01d434bd705bb822ac8c45f7063e2595d2cc4639487e1ab66b5c9d5 |
Hashes for cfractions-1.4.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57356bcaa033082395e0d9dbcb7e40b98906632ace8d2e674a7b24b34cf6b141 |
|
MD5 | 50aebaf371fad95032e401beaeb5f161 |
|
BLAKE2b-256 | 18a70303c81c772b142b7fe33f26ff32447ad40feb16367f2ec8e756bcd0c0f0 |
Hashes for cfractions-1.4.0-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3d71068516c7b2dfe8e7ea5ae359480ee6e9ad521fbf1cf51f433220bc9fe1d |
|
MD5 | ee3f46a2852fe16822b072455482ef70 |
|
BLAKE2b-256 | 596897d1f94f825d79224a86f0f5336ac02e39dfe3234222d667bbd309f66f31 |
Hashes for cfractions-1.4.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf5811e991e8e5d3c1707e21c9a9af350fee06fb6330282a8177c431e944b112 |
|
MD5 | a21e75f1f1341842f350551bee3fae8c |
|
BLAKE2b-256 | 6b03a775f48b51b7d22aa4bad5a9fcb84aa56547db4ee71914399b4b1d6a4a6d |
Hashes for cfractions-1.4.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b21a7a7d982b0b04c374c56ce30a2c903ffa226476bcfd70fb87cbb3f72aa058 |
|
MD5 | 1fecf1611d083d59fddd0b11518e62f9 |
|
BLAKE2b-256 | 2b25fd060187fdedede1a0bf073a18e6de64dd85639c5a1b7c8e476e64d93703 |
Hashes for cfractions-1.4.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9d3a0b998c85e667e24f61483e274927b1465c2a3fbb9938d4dd04e09972813 |
|
MD5 | 829955f265628d520471de6293239916 |
|
BLAKE2b-256 | 80b6bbadf96d16093b06ed564b9c240bd5e839c88e8544b883416dbc10b25ef7 |
Hashes for cfractions-1.4.0-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6dcf39873f79b1f7cae46f29f68aab6ded1749aaf092c271b8efdeed718c3e6 |
|
MD5 | 78e79aece893078d5079ac18c582a8f4 |
|
BLAKE2b-256 | 2bacd3094f080047f46dd841ba1fae7aa11167686e3184ac535df246290f5265 |
Hashes for cfractions-1.4.0-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54ff3dec1edf5c61f7e7142973f737a6f1b69a0b0f2655ce2a5e5e7328220115 |
|
MD5 | b3299a0e46e78a303188722961522ef0 |
|
BLAKE2b-256 | d58a6f20e451e36b98e3981a4e4ec5be21871490791e2d4b1a52f34baf7ac359 |