Metadata-Version: 2.4
Name: pyasc-dev
Version: 1.1.1.dev20261021192114
Summary: Programming language for writing efficient custom operators with native support for Python standard specifications
Home-page: https://gitcode.com/cann/pyasc
License: CANN Open Software License Agreement Version 2.0
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: LICENSE-LLVM.txt
License-File: LICENSE-ZSTD.txt
Requires-Dist: pybind11==2.10.3
Requires-Dist: numpy<2
Requires-Dist: typing_extensions
Provides-Extra: coverage
Requires-Dist: coverage[toml]; extra == "coverage"
Requires-Dist: gcovr; extra == "coverage"
Requires-Dist: pytest-cov; extra == "coverage"
Provides-Extra: dev
Requires-Dist: isort>=6.0.1; extra == "dev"
Requires-Dist: mypy>=1.15.0; extra == "dev"
Requires-Dist: ruff>=0.11.5; extra == "dev"
Requires-Dist: yapf>=0.43.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: myst-parser==4.0.0; extra == "docs"
Requires-Dist: Sphinx; extra == "docs"
Requires-Dist: sphinx-gallery==0.21.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "docs"
Requires-Dist: sphinx-markdown-builder==0.6.8; extra == "docs"
Provides-Extra: test
Requires-Dist: lit; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-xdist; extra == "test"
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary

# PyAsc development wheels

`pyasc-dev` provides PyAsc and its experimental AscTile programming model.
It installs the `asc` Python package. Use a dedicated environment; do not
install `pyasc` and `pyasc-dev` together.

## Install

The initial wheel supports **CPython 3.10, Linux AArch64, glibc 2.35 or newer**.
No x86-64, macOS, Windows, or other Python wheels are provided yet.

```bash
python3.10 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --pre pyasc-dev
python -c 'from asc.experimental import asctile; print(asctile.__file__)'
```

CANN is required to compile and execute kernels and is installed separately.
Kernel execution also needs a C++17 compiler and matching Python headers
(`g++` and `python3.10-dev` on Ubuntu 22.04).
The initial runtime smoke uses CANN 9.0.0 and the Ascend950PR_9599 simulator.
This is a development release, not broad numerical or hardware qualification.

## Build

GitHub Actions checks the default branch of
[compiler-team-ru/pyasc](https://github.com/compiler-team-ru/pyasc) hourly and
supports manual dispatch. The GitCode-to-GitHub mirror is maintained separately.
Each build records an exact source SHA and uses `PYASC_SETUP_EXPERIMENTAL=1`.
An unchanged source and recipe are skipped while a successful artifact remains
available. Artifacts expire after 90 days.

The builder uses Ubuntu 22.04 and the exact LLVM archive in
[`ci/toolchain.json`](https://github.com/compiler-team-ru/pyasc-wheels/blob/main/ci/toolchain.json), as specified by the selected PyAsc
source instructions. A changed LLVM download URL stops the build for review.

Only the package description and required LLVM/zstd license notices are added
to the exported source. Compiler and runtime code are unchanged. `auditwheel`
checks the ABI and bundles zstd. The resulting wheel is checked for unexpected
files and installed in two fresh environments outside the source directory.

Each artifact contains exactly one wheel, `build-passport.json`, and
`SHA256SUMS`. Build trees, caches, logs, SDKs, and source checkouts are excluded.
The passport records build inputs and the actual scope of checks. The wheel
metadata also records the source, LLVM, and recipe identifiers, so provenance
survives artifact expiration.

## Publish

Scheduled builds never publish. To publish a checked artifact, manually run
`wheels.yml` with its successful build run ID and the wheel's full SHA256.
The publishing job downloads and verifies that artifact; it does not rebuild it.

Trusted Publisher settings:

| Setting | Value |
| --- | --- |
| PyPI project | `pyasc-dev` |
| GitHub owner | `compiler-team-ru` |
| Repository | `pyasc-wheels` |
| Workflow | `wheels.yml` |
| Environment | `pypi` |

Before publishing, run the CANN smoke on the exact downloaded wheel in a clean
environment outside the repository, with `WHEEL_VERSION` set to its version
and the exact wheel installed:

```bash
source /usr/local/Ascend/cann-9.0.0/set_env.sh
export LD_LIBRARY_PATH="$ASCEND_HOME_PATH/tools/simulator/Ascend950PR_9599/lib:${LD_LIBRARY_PATH:-}"
python -I /path/to/ci/runtime-smoke.py compile
python -I /path/to/ci/runtime-smoke.py model
```

The smoke tests one float32 addition. It does not measure hardware performance.
PyPI versions are immutable: a new build must use a new development version.

## Build provenance

Source: `3bec0127fe75b332c5f35bf10b6c130f77b3c069` in `compiler-team-ru/pyasc`.

LLVM: `cd708029e0b2869e80abe31ddb175f7c35361f90`; archive SHA256: `25315ef5a0f1f51ae0474ad39be58244c660bc7d984cd9056c3c66b3635743b1`.

Recipe SHA256: `3b615e6996bb4b911d689ecd6d32112a4c59a223be12375ec886d89bc379fce6`.

Recipe commit: `39e4e1ec757e971dac45dd24e2991ec4daf5c1c0` in `compiler-team-ru/pyasc-wheels`.
