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.3.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4e6b87d703eeba79886a6aa31a68a1419bb4b40c85e3a882cceb91f4d5a4b11 |
|
MD5 | 85ca6e6cdb34de497ddb4f6fcf2876d5 |
|
BLAKE2b-256 | 9480fb13b712d42e946a331bc41626a5b705d56f43fb67cf8b58cedb3777b4b5 |
Hashes for cfractions-1.3.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb0b0506b7446063c573522660536c71d7262f44f5a49afdb91fd48f709c6343 |
|
MD5 | 10e8ec4ed511d997a8a17dc7150f33b6 |
|
BLAKE2b-256 | 3fdb517d029eda2506e4fde5f581ba5c932ddfd0097dbd1bd896badf51034956 |
Hashes for cfractions-1.3.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2d08dc505105c16c33e8129b7ab0b451e928cd5f82d78324de35b32b50275d7 |
|
MD5 | a8d6277028ef69c2a2800c4a7e0aa2f8 |
|
BLAKE2b-256 | 45f50469fe055786c79ac7c58a83218d188aec59f61a0c1a270d94543c9e0a71 |
Hashes for cfractions-1.3.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af462426c2e51a003325bb2281006b74eb05574fb9fb98557563fff271fbd5f2 |
|
MD5 | d31e7fac5710c060615c0c7c55482102 |
|
BLAKE2b-256 | a11b94ba062d18011f7df70d1fb8569f3bff41f7f977793629014c3f462b4355 |
Hashes for cfractions-1.3.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba96e3800f2302ce52ce434a4d6f66c4ebcbfb1d7e1807fddf345381827df4c5 |
|
MD5 | a4329d3858605e4b9722f8d51f340348 |
|
BLAKE2b-256 | 76e0a5097e19b528f1bc011313da9b8daeb9e02b42555114c2576ca981f0e710 |
Hashes for cfractions-1.3.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f46c65e8cb5ffa51dcbe1a8884119ef6474136307657a53b18ddf14e995300ad |
|
MD5 | bb44ef3a4381a613400799787a396f9d |
|
BLAKE2b-256 | 6369c6e91ae718399ec71b14304b3f0de69ee51217e2cff21b8f5f9554d78e84 |
Hashes for cfractions-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d85656950403c1f0343d159e4469c392fef82466f0c416edde856b8373bce649 |
|
MD5 | 75c3daa0a241276562374ff7704c1c6d |
|
BLAKE2b-256 | 38f7572998bcf9a72c50195f0a7b3227c053082b513e8bc45426c5e1bb2b6610 |
Hashes for cfractions-1.3.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f96130e5bc7b2616af54c962af77046d54707bd79441489433903ca2d3a99608 |
|
MD5 | 8d7fabfca1a3759f7489984038db0cda |
|
BLAKE2b-256 | 25fb04e33be0027f83e2a0ad3ec1d0a14615b91c3775c8d63591f79f1d575fc2 |
Hashes for cfractions-1.3.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37bda6f377dbe4a3ffeca2aa60cc33f22fa527569daf6d12271d495253dd7506 |
|
MD5 | 04aff2b20442084e12e5359cbd00d82f |
|
BLAKE2b-256 | 68c30d320e20a5ba26d968798575f449fabee56b32faf05aa61edac830142f7f |
Hashes for cfractions-1.3.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ad19525f251355aa260abb2ec5952aacc13c691bc6ef1b7e1c15ae664847206 |
|
MD5 | adbc08d93bed65b5d2f3997a0f3bfc19 |
|
BLAKE2b-256 | c48e3fd5c6cd1c16ca42624a52b7d268bbd1425e901d5d6317650f0d0a5be711 |
Hashes for cfractions-1.3.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d74fb45bd284f3e634e62f543ba68aeda28bf49a5d31d35f128ee13b69cb198 |
|
MD5 | ebdf07ca8f459886de906b15da4743a2 |
|
BLAKE2b-256 | ace2773e55128d2bb67c149468f6e7d3d836edc0da4daec5451d1b529b697993 |
Hashes for cfractions-1.3.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59fcfd9fcb530378f03a18499bc751ce066d1cbe1c6dc4a811f776196373e5c5 |
|
MD5 | 0fa463470c055b5d64c4ebd39352e407 |
|
BLAKE2b-256 | 7dcfbbbb7e32f988e494275732112ec8166a3fdd7b001857ed3e9d1cb709da68 |
Hashes for cfractions-1.3.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0428f3abb1efb132bee014c7f4542187e35d75053313c883599c1462514a31de |
|
MD5 | 2d39602d01e98563ccfee9133e763548 |
|
BLAKE2b-256 | e5b006567ca4414f3337319c30c8ebe5be93323eb5e4a0dea7ca9a720255bfc4 |
Hashes for cfractions-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b330c5ce08ce153a3a05d362e9dc9ad311df74e9bc629220ff5f5120ea7dd29 |
|
MD5 | 34c7a6e8ece00eb92fc0492c163c7703 |
|
BLAKE2b-256 | 96fa90c19d7424febfef92144a1683f7f1be158c5ca47bf5caa975a3ec8c2a56 |
Hashes for cfractions-1.3.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27c4f855162beb115ae85720c3e04b924b499b9ffa45696e930c311d84071a93 |
|
MD5 | 0f05c073edecc70ab4efb44fe479d7ee |
|
BLAKE2b-256 | f2a1c9463a32555e2af623651aa29dfb16287b2266f49282ffe4bb8ed4612120 |
Hashes for cfractions-1.3.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c28500aee00a2177170b245fb1dc63e8e98f14f9389da45cc431585daa67a3cc |
|
MD5 | a2f55d567ddbd9a13cc42c12f8dad373 |
|
BLAKE2b-256 | 78890deea6518e47a1918c38452766e016321a21a530c13af773039966ac03c3 |
Hashes for cfractions-1.3.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b260d0461c5588e97d37d830f703d8c99c73e1e011ecfdbcfc2f3e47398ffb75 |
|
MD5 | 3560ff26231f0fa1f38f1fb1f469c8df |
|
BLAKE2b-256 | f0df0a4ab806db8ca141ddaeb3187a71643a9ab54da9c49b787bb5af0b8a9232 |
Hashes for cfractions-1.3.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9a033dc22875738a6e059bb6665cac9cc3bf43d6fd76bf1cc15ac8b9db1fb94 |
|
MD5 | 55d95898e17c053320c526cb2caf02a9 |
|
BLAKE2b-256 | 3429988204b3ee012ad0ae37c5d43afaeff3c410047be14094d9daaf5db56b0e |
Hashes for cfractions-1.3.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bbad7449c8ff1f74d211fc62d0aced39b93473ed1791da72c5cebe1fe83f0aa |
|
MD5 | 7e21c76d281d74ddfeb566035423227a |
|
BLAKE2b-256 | 12de1af9f1b23f6a1f8624c8d17db3a9a26657f0dddff1cddf879f90d5e423c9 |
Hashes for cfractions-1.3.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8a7b9949d6a728935baf7a0e3c555a20c834e84f0dc34a4830d9934409f1b23 |
|
MD5 | cfcdaa0f907306ed5adfe58c2ac311a6 |
|
BLAKE2b-256 | 0f64a3d9baef2dc4c032c76c9f6220c2341c4211f6f27ae5930fb60a2351af13 |
Hashes for cfractions-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95ae1817b6e1d4a85cacb4ef910e3130bf20722ceebf0a7fa29b8d0c073081b6 |
|
MD5 | 27eaa72ab17823dbd06ef009e7b0c564 |
|
BLAKE2b-256 | e60bdaff8a5fed6cbe33daf2244fced027b0c85e82c29176bfb9f090a49717cc |
Hashes for cfractions-1.3.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6cd9f0cd27912869ff935ba196cc8b92987ea94bfebc7bd6ce57c58e969d2cbb |
|
MD5 | a9b1bd075776ce7e27930a2339474f04 |
|
BLAKE2b-256 | b32620da526210d4bbed878f552fc3e482fd3626f5b971e02128da317bb55ee3 |
Hashes for cfractions-1.3.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52cf71f41819c869aab5f56162d163bfffead9695d826b47663679b0ef7b4b9f |
|
MD5 | d230eebf8f904a12e127edf47d6485ef |
|
BLAKE2b-256 | 6bafd4ebc8f8130c302fc32f3f0b94099e824d397fd21f9e3fcbcb8b2730d47a |
Hashes for cfractions-1.3.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fc2f1fbf0a236197e91dd501e6df5d5e0b9560c2df5acd25ef56e31ba60091e |
|
MD5 | d522aefbeac948b44da6aa3184d292ae |
|
BLAKE2b-256 | a63f9e43ae61d35aa4bdaa5f2b8052e8f95735308ee3935939b73cbfe8f69cab |
Hashes for cfractions-1.3.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e59e092b337ef15bb4de3250adcd858cb420cb7e297caf6d3599ff37b14828e |
|
MD5 | 3b6443a05488943ba42f560b9bed6e6e |
|
BLAKE2b-256 | 939a060e06763a6840f03cfe1d6ea25d08f5ea5926d69936b2d187762fc4475a |
Hashes for cfractions-1.3.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f35fdc92bda5167bc5956dc5e49170f3e1c3dace17c89d506087304f7110a727 |
|
MD5 | 565265895b443c8cd53555dbfac6592e |
|
BLAKE2b-256 | 124efbb4662e7e7ff92dca8c5a1fc2553f37bb33cad0e5c3fd9d06b67c5b710b |
Hashes for cfractions-1.3.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8612e270c28c2ee06b103a96123d8cad600d4f24e32cf2b4a7a328f1e338bc5d |
|
MD5 | 8e8099548544275349b46925e87d77d5 |
|
BLAKE2b-256 | 27a8dda5c64a5bd9796dff51aaf3f50bc2479485d744ea281518eb983c0251cd |
Hashes for cfractions-1.3.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cd9abf40500b65ae08d4fa7a15c5968539261451e0e7d656fedf9d9d9724d8c |
|
MD5 | 02225ae1d292fa2d9075cc4053859864 |
|
BLAKE2b-256 | f033c3ab21e79a81f4b185e1e647f9e28235cbd60c8b26d36a8955bb5932117f |
Hashes for cfractions-1.3.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ca3b8a132a419c5b886ec1983c207ba88caedcace263d6e6be6abea418d2210 |
|
MD5 | 73140485dfacf80bd2f64c164c46c634 |
|
BLAKE2b-256 | d2af393c9c63338ebcdcb9d50200a629b9ab83f1fec2458105b4ad6f99f12aff |
Hashes for cfractions-1.3.0-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fac2f3b5bc563622e5e5b8d999b369d529d0491296651e9dc897b9a0828681bb |
|
MD5 | 4740380cbaec786bc9d57f3282cd2c35 |
|
BLAKE2b-256 | 55dc1e54ae3c9902e42ea43182b4bbf700897c2006ccbf9d66a24e9342842b86 |
Hashes for cfractions-1.3.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 625bf83b0c66ce6c2536f9629dea751ec8bda3db3311c1ad79e72f4987a2c98c |
|
MD5 | 763e7b938869a33befa2ff6d8e953a45 |
|
BLAKE2b-256 | 0508c12853fb817b393901fbd7cd885c889a418120f4a6398edca4cc2b1c01e3 |
Hashes for cfractions-1.3.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6547ea4f0c9455eba23e1e7f543153ad2b6882a9ba8508ea15d093a72bf485f |
|
MD5 | b64324fd3ef88e529b6f43aaf918b184 |
|
BLAKE2b-256 | 99d318067dd17e766d62bf130072b631919ca8e8bf38d71abc1662297a64d7cb |
Hashes for cfractions-1.3.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31e6eaef81dc519f8ce5988fe732e898fd3d42574a7c080bca16c1a814e52622 |
|
MD5 | 623bb9c3d0ddd61cbd9151ffe827ea72 |
|
BLAKE2b-256 | b6bfd291fd05a082dcdbc5e304d622412ddeca7055a5cbb6bf5a757b27a487c0 |
Hashes for cfractions-1.3.0-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e4ee1762a52fbfc931a6ef8a59bfb7527645c6a76ec5c53d96c59b65dddc190 |
|
MD5 | 58b5a0c1c9b36fbb5c7411d384a64ce1 |
|
BLAKE2b-256 | 26a74679dca4dad4bb8f8316c48b72c49e4e46a43b2cb6df9be42e2277164314 |
Hashes for cfractions-1.3.0-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9c21ef436d0fb82e889583e9dbeaf264d4fbde7abaca3d2be932e5a7d9d0a06 |
|
MD5 | 70ef976d1ff283bc19338df57dc7f68e |
|
BLAKE2b-256 | 882abcef7c3af488d4e588f0e167720fe392a90511af4290edbe7b78836dc69f |