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.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fcde5ea46478198a7af983d192f5a73a0c7630c049323d145c7dc0b49be3d97 |
|
MD5 | 52431c316405bb968d7df41fe4854e33 |
|
BLAKE2b-256 | 87d6258d2a8e4631a6869811d4ef5e68ce00f61b9913e2fc9d82ce703f0b3fce |
Hashes for cfractions-1.2.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 666a1ac96a8d5da7834789cae6fd9c76b90b28a6722ca1e75e1210e519a053e4 |
|
MD5 | 784c639a136733f65a99811c5a9d7e46 |
|
BLAKE2b-256 | 9eef4fd6cc538caf6628dedca125ab4484cabc560b9ba75d7dffb8ca862bea3b |
Hashes for cfractions-1.2.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07df1702dde53f5d81114427ef62fc06366c48b09bafbbfc09251bf816aef5dc |
|
MD5 | bf1b87b8ab9105d3e9ea0b771beb0ab4 |
|
BLAKE2b-256 | ab1a53fea08ab3899a8df064ccc25422d28c87e07d450bda5ad9a7e0bb44e62e |
Hashes for cfractions-1.2.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 249c5c6fc19deaa4a32a95d208f586d875ef70506f5cdc83a7a300bd69d8c56c |
|
MD5 | ccb9258bc575553e797d862a18458635 |
|
BLAKE2b-256 | 7295b3cd1c1ce159d7df7e7ded84d3e420dfa308dec37fbbd92749665a19df94 |
Hashes for cfractions-1.2.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 747b6ea6106ce26e83610903423d3351e4e6ad90f76f6a7207bc7cdb79cc0ff1 |
|
MD5 | 975050f389de229ed02220620c8be1cb |
|
BLAKE2b-256 | 9a694b8c90569423c447dd83ba03630ee457fb1950e35c5baa4f42dc84501647 |
Hashes for cfractions-1.2.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 345cb32cfde46628c0224d297831a4a7ea1819c1c68a62bee6d8046904f9c984 |
|
MD5 | 5fdf7c8f5225143f633a1fb1b2b9c725 |
|
BLAKE2b-256 | 590d3e0b3a48398f6b1991a7be7f29e9117aee720a6a880b148bf47f3c6fd9b2 |
Hashes for cfractions-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04dc39eb69684e124b6dbfa368f9a28f3aff7795d0582755b3fe91cdd0a49bab |
|
MD5 | 65188cf974d23f5311ad76e84c739b10 |
|
BLAKE2b-256 | 7c996a1f451640c39e76018c0b07225e4be69ce9d40e5cd8ab02012556241c40 |
Hashes for cfractions-1.2.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0f4e2b54caa87237631447a103875f642a3d4b6b4a7e996f72427a6824c87ca |
|
MD5 | f1f5f4f24be5bc450a0496ab6c29e92b |
|
BLAKE2b-256 | 97a63674f2964d4799af4613effe8b0a9ea19c5625796e1a7ed7af14dd8ec30e |
Hashes for cfractions-1.2.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec7feb92409cac46886ca443b70d1e8036e1db36887fb3e30ea7a910c4c1bac5 |
|
MD5 | 42386f287ccbb40b571ea8ab518ec8d8 |
|
BLAKE2b-256 | a41bce34f5773667808c32fc89bb0e682dc8d80eafd2ec8e36c4311fcbfd5fe9 |
Hashes for cfractions-1.2.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 501a001a996b71c52e6388a32a43c18658ac904e109ea345200f74f25caa93fb |
|
MD5 | 3e8fd40caceab90b8cdb465c1118bc22 |
|
BLAKE2b-256 | f7d177a116422025bdf4ae397fe549a22cdc2aaf73ed87e3d42e9ff5426df239 |
Hashes for cfractions-1.2.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d13b469a6cefff076756f4d802936213fbeeaba0b58b454401a75db317f6977 |
|
MD5 | 63ba511a2fc3579f43fab0344d7209ae |
|
BLAKE2b-256 | 13f2a5e18d9196bdf1c163976527d7fb88f2a8bc745a263e104d083c0cf84520 |
Hashes for cfractions-1.2.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | feb49db25d2575292ac18314815e14784aba6809a45a4fbe82575daa17c74b27 |
|
MD5 | 9fa317725516df1700d717f9392a06c0 |
|
BLAKE2b-256 | 9a8433d81736d76feffe3d51f5c496505ebd9e1e906385213196d15d002b2a5d |
Hashes for cfractions-1.2.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 569c5d601a259bd88030bebde24c9e7cb35172b6b91e88c6317553a035215a05 |
|
MD5 | e30e23bec211587c857553e8c93cae39 |
|
BLAKE2b-256 | a44aeb746d1ca3676967dff9ac2fded045e4b5fd040b3636297d41b61d0eca67 |
Hashes for cfractions-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b056512f6849fe5d0d476c06be22ced8ac1b5a0b5e4f107d6b6e5e6a3a7d1c6a |
|
MD5 | b01a9fd6726a305348ae55554dae53bc |
|
BLAKE2b-256 | 763684a985257e5a56e84a3f0310588a777707554eb1afe5de0ed5576fa48ea8 |
Hashes for cfractions-1.2.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f2818b6ebcfdc4c2ea729c0706efd2155eb2d37cda69b7e6cce79b61d6cd06c |
|
MD5 | 3f3272dfa4cb18ffd774bac3fb17d89c |
|
BLAKE2b-256 | 7262e4677b021c69a375f3484af2775724596f7fb194065f42867cf74c22cd7d |
Hashes for cfractions-1.2.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19a5c11c79ff75f3b53e49e589321423a8b10a65119ba0b88654242d3a79328c |
|
MD5 | 56ee902a1e79017a3400b1d8119e7b57 |
|
BLAKE2b-256 | 44a678cb285c964bdccbd966bd0583f35af0b1efc42ed8b311ef67dcf153d02a |
Hashes for cfractions-1.2.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6364393fcbfcd94a7a82a23ecd56ccf5adf773c9a90814a2bbce19caa13917c3 |
|
MD5 | 77a7c0b6a3036f480e7f68c47b141b1d |
|
BLAKE2b-256 | 13fd376254ace091e5f7d01356664061690d4289f195df2f49daf4c17b656099 |
Hashes for cfractions-1.2.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6402fb8b7965a3351847e300f3a3e3e6fe9a07481179e578ff7c08dc82865bdc |
|
MD5 | 47adb89aa06f132bef706029fe4347b9 |
|
BLAKE2b-256 | 733d30d3c0c6dd9345d7c04957f00f7032e5a7d7cdd5b02c98f960d9e3e52b02 |
Hashes for cfractions-1.2.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1e24368e5f0fb6f5b69d91faed3a7f76e170723053f4e44909b79245dddf84c |
|
MD5 | 74b1efa7f70853c622bd4dc13e1d31e9 |
|
BLAKE2b-256 | ac7bec0f5e7f496887ff4c8a51aaa275efff9902a51b2824e43e2331135df734 |
Hashes for cfractions-1.2.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e41bff73a2e57cb22dc98f53d24150017e6d7bc591431a0cd84483f25010ee4f |
|
MD5 | 486483145d8c6658df435dd4808eef0e |
|
BLAKE2b-256 | 3153db658c4caeff248ed973ca5099063c04fb203e25f2c3ec684bfd562bccca |
Hashes for cfractions-1.2.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8d6a14c7cae508baaf65ad773f2cf5347ac2712a02f7a9bf2e253a771fbc479 |
|
MD5 | f64d4da82603672b2bec28255931d923 |
|
BLAKE2b-256 | 04f846873fe3a03b9736374204a2ebcff67cf1273e511d650d2a6d08ab684f0f |
Hashes for cfractions-1.2.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92c506344156a31c9e062e4d8db0da17a77cd0658901703621fe66bf5490581a |
|
MD5 | 4c7b30caced0b72f66b973e2bef2304a |
|
BLAKE2b-256 | c2b9a1e3b5d01993f579441474956c147c8a5217fe65f16c621d9b2dbc216429 |
Hashes for cfractions-1.2.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 608e383f3a18adcb7a1941be2b96b68f4c74b0418ed9b423e6f7e6ec4d26c952 |
|
MD5 | 15d9c554ab2a3ae542de753f908cda45 |
|
BLAKE2b-256 | 07500f2f2e0e9faa5786a88a55e3b8be2753bdf771964478e8c87480003a72a6 |
Hashes for cfractions-1.2.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2663016034a3c1c060d42d37b6c7dbb006980bce26f6baac7fd605164d1f14ad |
|
MD5 | 75698462c846e8897a280aa2affd14a3 |
|
BLAKE2b-256 | 5f7a72e234596346838319b38157c5a6ad558d91bcd286a7da05c7cc0b44ecb7 |
Hashes for cfractions-1.2.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 853a47e50ddc5cb5cc9e69db90007f83b5a874b135b19a5a65a172264a82015a |
|
MD5 | b36dea5d6c8610c931fd1b88c096e7ba |
|
BLAKE2b-256 | 9242f6792b4f219905e6c6c513da29c23019f0d38409eb24d0d2cd4a07daf6cb |
Hashes for cfractions-1.2.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78606dc66bbf286c51ffc3eb7df736c777091bcb24e6f164592b57067aba26f2 |
|
MD5 | 08a2e3cea78b81ddaeeebc6248639d65 |
|
BLAKE2b-256 | ab855696772fd1c538a562b303b95c676becbf3b5e48759985956fce5a301a4b |
Hashes for cfractions-1.2.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b09314fb99d2b13d712498d9ef3c6c7cf04dc55efc1d25a0e61382f090448886 |
|
MD5 | 0100f717d87602846e0a2a6afa60be8d |
|
BLAKE2b-256 | e17a06d191ba67ac7d0f12375103b7b1a7caf9306ad717cead24ce0af0c22f3a |
Hashes for cfractions-1.2.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1b896735dff7f39095652b3635ca2f6dc9a7e030c01422a085daae99e21420b |
|
MD5 | 3c167d2fd9ebe4020fabe9ea10edfd67 |
|
BLAKE2b-256 | 346fcdd5f83e2e1fdf9761814a1e5641ea367132281c7491bc537e746eed4f82 |
Hashes for cfractions-1.2.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ee188802f4b9546a6abb0a849f63ebc535c24a6ccb0b5d2ad406b8e6282ae04 |
|
MD5 | 984e604556fbcbec3a4ad08d9e9a8300 |
|
BLAKE2b-256 | 6bf35b87233a3c27adbfa9d0a5286327a9b89f02263580344fe052bffd376b83 |
Hashes for cfractions-1.2.0-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36d6c5cf6ded5518b23f0f6cfafd70e53ae887ca6fac45769cfa112a7987d12a |
|
MD5 | bdcfd5c1cda5dd0a4bc88832937be66c |
|
BLAKE2b-256 | c3e603e7f8d0f86085afb08fd2518781ebf50594993a08eb5d5830e7b7b49c6f |
Hashes for cfractions-1.2.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfa80b40a0b1048de75bb9b9a77185958274c0e86a6608d17c17946f6c7839cb |
|
MD5 | 52bea1584e398b4022d0dac3f47b0038 |
|
BLAKE2b-256 | 9689d529198485bc559e2925f8bc95dda2cdcb8456388cc8526c67824241a6cc |
Hashes for cfractions-1.2.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b52fe5066aaf1ce10e8a3dbc4f5c47a75c683b1700f6ddac8e0673a1908c0af7 |
|
MD5 | 3aa5da75720e6802950b4d23273b73a6 |
|
BLAKE2b-256 | e6d813baebdfad1f6e5be6479b29823840f4a7e77d91604da6cc5b12b4feed33 |
Hashes for cfractions-1.2.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b374459e8275110e66bab5cd54417cc33af70a5648a1d6e3261a9e9018694219 |
|
MD5 | 9df9b5fdb2462ea6ef7d524574e71d27 |
|
BLAKE2b-256 | f741188a7b0426b2a4b2885bde824bf683ba57be69355cb9464afccf295df7d6 |
Hashes for cfractions-1.2.0-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19d41409857232e6cbc8e6fc0190d995404da414000d5a02e1f749dd2fc98dd5 |
|
MD5 | bca26602e6f365db19e04b28720dc497 |
|
BLAKE2b-256 | 8546d49e07bae38cc6781b743a232d930635e1df5e336aa1f20008d677e73cb7 |
Hashes for cfractions-1.2.0-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4a4769bf27a375f247def8fdabf3ec2f6a482ab76faa40a6f3ca5a142e2fecc |
|
MD5 | 713e2d3f8e3374a8d2cdd2894d89b07c |
|
BLAKE2b-256 | df39ba93f9c1e22bd6802174b8d73c9d62fd7a42d2cc975b48ca530d6beee1e0 |