Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3045444
ci: fix PyPI builds (Python 3.14 compat), separate HF READMEs, tag-on…
zevatov Apr 30, 2026
b88cddc
ci: add dev branch to CI, add Python wheel test build
zevatov Apr 30, 2026
a5fed68
ci: fix verify step - nra is native PyO3 module without __version__
zevatov Apr 30, 2026
fdb0b36
ci: add full cross-platform build test on dev branch (5 platforms)
zevatov Apr 30, 2026
f88990f
docs: killer README hero - 3sec wow with code demo, comparison table,…
zevatov Apr 30, 2026
5616510
security: remove hardcoded paths, drop phantom deps, delete deprecate…
zevatov Apr 30, 2026
2d7b15c
refactor: add #[must_use] and #[non_exhaustive] attributes to public API
zevatov Apr 30, 2026
8bb1447
fix: revert clone removal that caused E0502 and handle non_exhaustive…
zevatov Apr 30, 2026
172fc9d
ci: fix Windows UnicodeEncodeError and Linux aarch64 ring compile error
zevatov Apr 30, 2026
3495e9d
ci: replace split macOS builds with a single universal2 build on maco…
zevatov Apr 30, 2026
ced51a7
chore: cleanup workspace, reorganize scripts, remove dead nra-spec cr…
zevatov May 1, 2026
755e34b
fix: remove nra-spec dependency from nra-core
zevatov May 1, 2026
80f67e1
feat: add terminal GIF demos (EN+RU) to README, update roadmap and re…
zevatov May 1, 2026
366df4b
fix: adjust gif recording sizes, remove emojis causing rendering issu…
zevatov May 1, 2026
b9d3ba5
fix: restore Cyrillic comments in RU demo scripts and add 5 second pa…
zevatov May 1, 2026
3e8f00f
feat: premium dracula theme for gifs with JetBrains Mono font, optimi…
zevatov May 1, 2026
74644b7
feat: animate graphs to GIF, implement pure JetBrains Mono for termin…
zevatov May 1, 2026
3d1c080
fix: restore full chart data, implement sequential animation and fix …
zevatov May 1, 2026
2594992
fix: radar grid zorder and bar chart animated labels
zevatov May 1, 2026
6769e6c
fix: add 0.0s unpacking time label for NRA
zevatov May 1, 2026
65e69a4
fix: radar grid visibility, zorder, and color brightness
zevatov May 1, 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
97 changes: 97 additions & 0 deletions .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Cross-Platform Build Test

on:
push:
branches: [ dev ]
workflow_dispatch:

env:
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"

jobs:
linux-x86:
name: "Linux x86_64"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
manylinux: 2_28
- name: Verify
run: |
pip install dist/*.whl
python -c "import nra; print('Linux x86_64 OK')"

linux-arm:
name: "Linux aarch64"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: aarch64
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
manylinux: 2_28
- name: Upload test artifact
uses: actions/upload-artifact@v4
with:
name: test-wheel-linux-aarch64
path: dist

windows:
name: "Windows x64"
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: x64
args: --release --out dist -m nra-python/Cargo.toml -i python
sccache: 'true'
- name: Verify
run: |
pip install (Get-ChildItem dist/*.whl).FullName
python -c "import nra; print('Windows x64 OK')"
shell: pwsh

macos-universal:
name: "macOS Universal2"
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheel
uses: PyO3/maturin-action@v1
with:
target: universal2-apple-darwin
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
- name: Verify
run: |
pip install dist/*.whl
python -c "import nra; print('macOS Universal2 OK')"

summary:
name: "All Platforms ✅"
runs-on: ubuntu-latest
needs: [linux-x86, linux-arm, windows, macos-universal]
steps:
- run: echo "All platforms built and verified successfully!"
28 changes: 25 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@ name: CI

on:
push:
branches: [ main ]
branches: [ main, dev ]
pull_request:
branches: [ main ]

env:
CARGO_TERM_COLOR: always

jobs:
build_and_test:
rust_ci:
name: Rust CI
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -43,3 +42,26 @@ jobs:

- name: Build CLI (Release)
run: cargo build --release -p nra-cli

python_wheel:
name: Python Wheel (test build)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Build Python wheel
uses: PyO3/maturin-action@v1
with:
target: x86_64
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
manylinux: auto

- name: Verify wheel
run: |
pip install dist/*.whl
python -c "import nra; print('✅ nra imported successfully')"
63 changes: 14 additions & 49 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ on:
permissions:
contents: read

env:
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"

jobs:
linux:
runs-on: ${{ matrix.platform.runner }}
Expand All @@ -16,7 +19,7 @@ jobs:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
- runner: ubuntu-22.04
target: aarch64
steps:
- uses: actions/checkout@v4
Expand All @@ -27,7 +30,7 @@ jobs:
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -m nra-python/Cargo.toml --find-interpreter
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
manylinux: auto
- name: Upload wheels
Expand All @@ -36,65 +39,27 @@ jobs:
name: wheels-linux-${{ matrix.platform.target }}
path: dist

musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -m nra-python/Cargo.toml --find-interpreter
sccache: 'true'
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist

windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -m nra-python/Cargo.toml --find-interpreter
target: x64
args: --release --out dist -m nra-python/Cargo.toml -i python
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
name: wheels-windows-x64
path: dist

macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-13
target: x86_64
- runner: macos-14
target: aarch64
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand All @@ -103,13 +68,13 @@ jobs:
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -m nra-python/Cargo.toml --find-interpreter
target: universal2-apple-darwin
args: --release --out dist -m nra-python/Cargo.toml -i python3.10
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
name: wheels-macos-universal2
path: dist

sdist:
Expand All @@ -131,7 +96,7 @@ jobs:
name: Publish to PyPI
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, musllinux, windows, macos, sdist]
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v4
with:
Expand Down
50 changes: 30 additions & 20 deletions .github/workflows/sync_hf.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
name: Sync README to Hugging Face
name: Sync READMEs to Hugging Face

on:
push:
branches:
- main
paths:
- 'docs/HUGGINGFACE_DATASET_README.md'
workflow_dispatch: # Позволяет запускать Action вручную из интерфейса GitHub
tags:
- 'v*'
workflow_dispatch:

jobs:
sync:
Expand All @@ -22,7 +20,7 @@ jobs:
- name: Install dependencies
run: pip install huggingface_hub

- name: Sync README to HF Hub
- name: Sync READMEs to HF Hub
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
run: |
Expand All @@ -31,17 +29,29 @@ jobs:
from huggingface_hub import HfApi

api = HfApi()
try:
api.upload_file(
path_or_fileobj='docs/HUGGINGFACE_DATASET_README.md',
path_in_repo='README.md',
repo_id='zevatov/nra-cifar10',
repo_type='dataset',
token=os.environ['HF_TOKEN'],
commit_message='Sync README from GitHub Actions'
)
print('Successfully synced README to Hugging Face!')
except Exception as e:
print(f'Error syncing to HF: {e}')
exit(1)
token = os.environ['HF_TOKEN']

# Map: local file -> (repo_id, description)
repos = {
'docs/HF_README_CIFAR10.md': ('zevatov/nra-cifar10', 'CIFAR-10'),
'docs/HF_README_FOOD101.md': ('zevatov/nra-food101', 'Food-101'),
}

for local_file, (repo_id, name) in repos.items():
if not os.path.exists(local_file):
print(f'⚠️ {local_file} not found, skipping {name}')
continue
try:
api.upload_file(
path_or_fileobj=local_file,
path_in_repo='README.md',
repo_id=repo_id,
repo_type='dataset',
token=token,
commit_message=f'Sync {name} README from GitHub release'
)
print(f'✅ {name} README synced to {repo_id}')
except Exception as e:
print(f'❌ Error syncing {name}: {e}')
exit(1)
"
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,6 @@ scratch_bench_general.py
docs/*.tex
docs/*.html
docs/*.log

# Benchmark data
.benchmark_data/
Loading
Loading