Compare commits

...

5 commits

5 changed files with 50 additions and 44 deletions

View file

@ -17,11 +17,11 @@ jobs:
- name: Translate Repo Name For Build Tools filename_prefix
id: repo-name
run: |
echo ::set-output name=repo-name::$(
echo repo-name=$(
echo ${{ github.repository }} |
awk -F '\/' '{ print tolower($2) }' |
tr '_' '-'
)
tr '_' '-'h
)>> $GITHUB_OUTPUTS
- name: Set up Python 3.x
uses: actions/setup-python@v1
with:
@ -52,27 +52,8 @@ jobs:
- name: Pre-commit hooks
run: |
pre-commit run --all-files
- name: Clone and build circuitpython unix port
run: |
set -e
[ -e circuitpython/py/py.mk ] || (git clone --depth=1 https://github.com/adafruit/circuitpython && cd circuitpython && git fetch --tags --recurse-submodules=no --shallow-since="2021-07-01" https://github.com/adafruit/circuitpython HEAD)
[ -e circuitpython/lib/libffi/autogen.sh ] || (cd circuitpython && git submodule update --init lib/libffi lib/axtls lib/berkeley-db-1.xx tools/huffman lib/uzlib extmod/ulab)
[ -x circuitpython/ports/unix/micropython ] || (
make -C circuitpython/mpy-cross -j$(nproc)
make -C circuitpython/ports/unix -j$(nproc) deplibs
make -C circuitpython/ports/unix -j$(nproc) DEBUG=1 STRIP=:
)
- name: Unit Test
run: |
python -m jepler_udecimal.test
if ! env MICROPYPATH=. PYTHONPATH=. MICROPY_MICROPYTHON=circuitpython/ports/unix/micropython circuitpython/tests/run-tests.py -d examples; then
for exp in *.exp; do
testbase=$(basename $exp .exp);
echo -e "\nFAILURE $testbase";
diff -u $testbase.exp $testbase.out;
done
exit 1
fi
- name: Test in circuitpython
run: ./build-test-cp.sh
- name: Build assets
run: circuitpython-build-bundles --package_folder_prefix jepler --filename_prefix ${{ steps.repo-name.outputs.repo-name }} --library_location .
- name: Build docs
@ -83,12 +64,7 @@ jobs:
with:
name: bundles
path: ${{ github.workspace }}/bundles/
- name: Check For setup.py
id: need-pypi
run: |
echo ::set-output name=setup-py::$( find . -wholename './setup.py' )
- name: Build Python package
if: contains(steps.need-pypi.outputs.setup-py, 'setup.py')
run: |
pip install --upgrade setuptools wheel twine readme_renderer testresources
python setup.py sdist

View file

@ -19,11 +19,11 @@ jobs:
- name: Translate Repo Name For Build Tools filename_prefix
id: repo-name
run: |
echo ::set-output name=repo-name::$(
echo repo-name=$(
echo ${{ github.repository }} |
awk -F '\/' '{ print tolower($2) }' |
tr '_' '-'
)
tr '_' '-'h
)>> $GITHUB_OUTPUTS
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:

21
build-test-cp.sh Executable file
View file

@ -0,0 +1,21 @@
#!/bin/sh
# SPDX-FileCopyrightText: 2022 Jeff Epler
# SPDX-License-Identifier: MIT
# SPDX-License-Identifier: Unlicense
set -e
TAG=8.0.0-beta.4
if ! [ -e circuitpython/py/py.mk ]; then
git clone -b $TAG --depth=1 https://github.com/adafruit/circuitpython
fi
(cd circuitpython && git submodule update --init lib/libffi lib/axtls lib/berkeley-db-1.xx tools/huffman extmod/ulab)
if ! [ -x circuitpython/ports/unix/micropython ]; then
make -C circuitpython/ports/unix -j$(nproc) DEBUG=1 STRIP=:
fi
if ! MICROPYPATH=. PYTHONPATH=. MICROPY_MICROPYTHON=circuitpython/ports/unix/micropython circuitpython/tests/run-tests.py -d examples; then
circuitpython/tests/run-tests.py --print-failures
exit 1
fi

View file

@ -50,19 +50,19 @@ with localcontext():
print(neginf * inf)
try:
print(dig / 0)
except Exception as e:
except ZeroDivisionError as e:
print("Division by zero")
getcontext().traps[DivisionByZero] = 1
try:
print(dig / 0)
except Exception as e:
except DivisionByZero as e:
print("Division by zero")
c = Context()
c.traps[InvalidOperation] = 0
print(+c.flags[InvalidOperation])
c.traps[InvalidOperation] = 0
try:
c.divide(Decimal(0), Decimal(0))
except Exception as e:
except ZeroDivisionError as e:
print("Division by zero")
c.traps[InvalidOperation] = 1
print(+c.flags[InvalidOperation])
@ -70,17 +70,18 @@ with localcontext():
print(+c.flags[InvalidOperation])
try:
print(c.divide(Decimal(0), Decimal(0)))
except Exception as e:
print("Division by zero")
except InvalidOperation as e:
print("InvalidOperation")
print(+c.flags[InvalidOperation])
try:
print(c.divide(Decimal(0), Decimal(0)))
except Exception as e:
print("Division by zero")
except InvalidOperation as e:
print("InvalidOperation")
print(+c.flags[InvalidOperation])
import jepler_udecimal.utrig
from jepler_udecimal import Decimal
from jepler_udecimal import InvalidOperation
print(Decimal(".7").atan())
print(Decimal(".1").acos())
@ -96,12 +97,12 @@ print(Decimal("NaN").tan())
print(Decimal("NaN").sin())
try:
print(Decimal("2").acos())
except Exception as e:
print("exception")
except InvalidOperation as e:
print("InvalidOperation")
try:
print(Decimal("2").asin())
except Exception as e:
print("exception")
except InvalidOperation as e:
print("InvalidOperation")
print(Decimal("2").atan())
print(Decimal("1").asin())
print(Decimal("-1").asin())

View file

@ -269,6 +269,10 @@ class DivisionByZero(DecimalException):
The result of the operation is [sign,inf], where sign is the exclusive
or of the signs of the operands for divide, or is 1 for an odd power of
-0, for power.
Due to technical limitations in MicroPython, this exception does not
inherit from ZeroDivisionError, an incompatibility with standard Python's
Decimal library.
"""
def handle(self, context, sign, *args):
@ -425,6 +429,10 @@ class FloatOperation(DecimalException):
Otherwise (the signal is trapped), only equality comparisons and explicit
conversions are silent. All other mixed operations raise FloatOperation.
Due to technical limitations in MicroPython, this exception does not
inherit from TypeError, an incompatibility with standard Python's
Decimal library.
"""