Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
342e036
chore: add local development roadmap, devcontainer setup, and ignore …
Mar 10, 2026
3065450
add host ssh folder as volume in devcontainer
Mar 10, 2026
a145cdc
add support to host ssh keys usage
Mar 11, 2026
f19b1c9
devcontainer: configure ubuntu startup, env support, and dev requirem…
Mar 11, 2026
8c84f66
fix(reshape): support NumPy 2.4 shape kwarg with newshape backward co…
Mar 11, 2026
ae3ca78
fix: harden raw overflow handling across operators and NumPy dispatch
Mar 12, 2026
1f59c8f
docs: overhaul docstrings across fxpmath API and tests
Mar 12, 2026
de8a769
`ci: add manual Windows workflow to run full pytest suite`
Mar 12, 2026
970bbfb
fix: add complex guard bit to mul optimal sizing
Mar 12, 2026
86ecfa9
`docs(rounding): clarify trunc semantics for signed fixed-point conve…
Mar 12, 2026
3b798ef
fix(shifting): implement keep-left semantics with N-D support
Mar 12, 2026
ee91e5c
test(shifting): add keep right-shift coverage for sign extension and …
Mar 12, 2026
73f9e45
build(packaging): migrate to PEP 621 pyproject metadata and setuptool…
Mar 23, 2026
9714994
fix: correct complex uraw conversion and add issue #102 regression
Mar 23, 2026
6cbcdc1
fix: harden int casting for scalar/object paths and add issue #98 reg…
Mar 23, 2026
3639f2b
`docs: add generalized sizing chapter and issue #95 regression coverage`
Mar 23, 2026
d9e4a1a
`fix(typing): ship py.typed marker and add issue #94 regression test`
Mar 23, 2026
ece8ae3
feat(rounding): add SystemC/IEEE tie-breaking modes, aliases, docs ma…
Mar 23, 2026
82a27d7
`test: split issue #55 regression and expand complex/multidimensional…
Mar 23, 2026
acafd57
`feat(bitwise): support array-vs-array broadcasting and add >64-bit s…
Mar 24, 2026
0bc848a
update changelog
Mar 24, 2026
a726b85
feat(reshape): align Fxp shape/reshape API with NumPy semantics
Mar 24, 2026
2f390ec
ci: consolidate workflows and enforce multi-OS test gates for develop…
Mar 24, 2026
7a00470
ci: fix workflow failures across OS matrix (lint gating + Windows ins…
Mar 24, 2026
f68394e
ci: expand Python test matrix to 3.9-3.14 and drop 3.8
Mar 24, 2026
f60e3cb
ci: upgrade checkout/setup-python actions to Node 24-compatible versi…
Mar 24, 2026
d32625e
release: set package version to 0.4.10
Mar 24, 2026
0bcfd3f
Merge master into release-0.4.10: resolve setup.cfg conflict
Mar 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .devcontainer/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
UBUNTU_PASSWORD=put-your-devcontainer-user-password-here
30 changes: 30 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM ubuntu:24.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash-completion \
build-essential \
ca-certificates \
curl \
git \
openssh-client \
python3 \
python3-pip \
python3-venv \
sudo \
&& rm -rf /var/lib/apt/lists/*

RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1

RUN if ! id -u ubuntu >/dev/null 2>&1; then useradd -m -s /bin/bash ubuntu; fi \
&& usermod -aG sudo ubuntu

COPY .devcontainer/init-user.sh /usr/local/share/devcontainer/init-user.sh
RUN chmod 755 /usr/local/share/devcontainer/init-user.sh

WORKDIR /workspace

ENTRYPOINT ["/usr/local/share/devcontainer/init-user.sh"]
CMD ["sleep", "infinity"]
27 changes: 27 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"name": "fxpmath-dev",
"dockerComposeFile": "docker-compose.yml",
"service": "dev",
"workspaceFolder": "/workspace",
"shutdownAction": "stopCompose",
"remoteUser": "ubuntu",
"updateRemoteUserUID": true,
"mounts": [
"source=${localEnv:SSH_AUTH_SOCK},target=/ssh-agent,type=bind",
"source=${localEnv:HOME}/.ssh,target=/home/ubuntu/.ssh,type=bind,consistency=cached"
],
"remoteEnv": {
"SSH_AUTH_SOCK": "/ssh-agent"
},
"customizations": {
"vscode": {
"settings": {
"python.defaultInterpreterPath": "/usr/bin/python3"
},
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance"
]
}
}
}
11 changes: 11 additions & 0 deletions .devcontainer/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
services:
dev:
build:
context: ..
dockerfile: .devcontainer/Dockerfile
env_file:
- .env
volumes:
- ..:/workspace:cached
working_dir: /workspace
command: sleep infinity
10 changes: 10 additions & 0 deletions .devcontainer/init-user.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail

if [[ -n "${UBUNTU_PASSWORD:-}" ]]; then
echo "ubuntu:${UBUNTU_PASSWORD}" | chpasswd
else
echo "UBUNTU_PASSWORD is not set; sudo will keep asking for a password that does not exist." >&2
fi

exec "$@"
50 changes: 50 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: CI

on:
push:
branches: [develop]
pull_request:
branches: [develop, master]

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
lint-and-test:
name: Lint and test (Python ${{ matrix.python-version }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04, macos-14, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]

steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements-dev.txt
pip install flake8 pytest

- name: Lint
run: |
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

- name: Test
run: pytest -q
44 changes: 44 additions & 0 deletions .github/workflows/manual-windows-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Manual Windows Tests

on:
workflow_dispatch:
inputs:
python-version:
description: Python version to use
required: true
default: "3.11"
type: choice
options:
- "3.10"
- "3.11"
- "3.12"

jobs:
windows-tests:
name: Windows tests (Python ${{ inputs.python-version }})
runs-on: windows-latest
timeout-minutes: 45

steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest

- name: Print environment details
run: |
python --version
pip --version
python -c "import platform, sys, numpy; print('platform:', platform.platform()); print('python:', sys.version.replace('\n', ' ')); print('numpy:', numpy.__version__)"

- name: Run full test suite
run: pytest -q
46 changes: 46 additions & 0 deletions .github/workflows/master-release-gate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Master Release Gate

on:
push:
branches: [master]

concurrency:
group: master-release-gate-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
test-before-release:
name: Test before release (Python ${{ matrix.python-version }}, ${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 50
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04, macos-14, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]

steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements-dev.txt
pip install pytest build

- name: Run tests
run: pytest -q

- name: Build package artifacts
run: python -m build
43 changes: 0 additions & 43 deletions .github/workflows/python-app.yml

This file was deleted.

41 changes: 0 additions & 41 deletions .github/workflows/python-os.yml

This file was deleted.

41 changes: 0 additions & 41 deletions .github/workflows/python-package.yml

This file was deleted.

6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ celerybeat.pid

# Environments
.env
.venv
.venv*
env/
venv/
ENV/
Expand Down Expand Up @@ -143,7 +143,6 @@ results/*
# !.vscode/launch.json
# !.vscode/extensions.json
*.code-workspace
.devcontainer

# Local History for Visual Studio Code
.history/
Expand All @@ -164,3 +163,6 @@ temp/

# docker
docker/

# local planning docs
/development-plan.md
Loading