anpyra 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- anpyra-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
- anpyra-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
- anpyra-0.1.0/.github/pull_request_template.md +23 -0
- anpyra-0.1.0/.github/workflows/publish.yml +112 -0
- anpyra-0.1.0/.github/workflows/tests.yml +36 -0
- anpyra-0.1.0/.gitignore +227 -0
- anpyra-0.1.0/CHANGELOG.md +51 -0
- anpyra-0.1.0/CONTRIBUTING.md +58 -0
- anpyra-0.1.0/LICENSE +201 -0
- anpyra-0.1.0/MANIFEST.in +7 -0
- anpyra-0.1.0/PKG-INFO +96 -0
- anpyra-0.1.0/README.md +173 -0
- anpyra-0.1.0/docs/README.md +23 -0
- anpyra-0.1.0/docs/architecture.md +10 -0
- anpyra-0.1.0/docs/developer_guide/README.md +30 -0
- anpyra-0.1.0/docs/developer_guide/android_backend.md +67 -0
- anpyra-0.1.0/docs/developer_guide/architecture.md +77 -0
- anpyra-0.1.0/docs/developer_guide/compiler.md +86 -0
- anpyra-0.1.0/docs/developer_guide/debugging.md +86 -0
- anpyra-0.1.0/docs/developer_guide/development_setup.md +60 -0
- anpyra-0.1.0/docs/developer_guide/extending.md +57 -0
- anpyra-0.1.0/docs/developer_guide/native_platforms.md +70 -0
- anpyra-0.1.0/docs/developer_guide/publishing.md +190 -0
- anpyra-0.1.0/docs/developer_guide/release.md +56 -0
- anpyra-0.1.0/docs/developer_guide/repository_structure.md +91 -0
- anpyra-0.1.0/docs/developer_guide/source_reference.md +239 -0
- anpyra-0.1.0/docs/developer_guide/testing.md +71 -0
- anpyra-0.1.0/docs/pypi_readme.md +67 -0
- anpyra-0.1.0/docs/roadmap.md +259 -0
- anpyra-0.1.0/docs/user_guide/README.md +29 -0
- anpyra-0.1.0/docs/user_guide/build_outputs.md +67 -0
- anpyra-0.1.0/docs/user_guide/cli.md +107 -0
- anpyra-0.1.0/docs/user_guide/concepts.md +56 -0
- anpyra-0.1.0/docs/user_guide/configuration.md +76 -0
- anpyra-0.1.0/docs/user_guide/first_app.md +82 -0
- anpyra-0.1.0/docs/user_guide/installation.md +180 -0
- anpyra-0.1.0/docs/user_guide/language.md +123 -0
- anpyra-0.1.0/docs/user_guide/migration.md +40 -0
- anpyra-0.1.0/docs/user_guide/platforms.md +38 -0
- anpyra-0.1.0/docs/user_guide/python_api.md +96 -0
- anpyra-0.1.0/docs/user_guide/troubleshooting.md +58 -0
- anpyra-0.1.0/examples/README.md +17 -0
- anpyra-0.1.0/examples/hello/README.md +25 -0
- anpyra-0.1.0/examples/hello/anpyra.toml +9 -0
- anpyra-0.1.0/examples/hello/app.py +8 -0
- anpyra-0.1.0/examples/score/README.md +30 -0
- anpyra-0.1.0/examples/score/anpyra.toml +9 -0
- anpyra-0.1.0/examples/score/app.py +18 -0
- anpyra-0.1.0/pyproject.toml +54 -0
- anpyra-0.1.0/scripts/README.md +26 -0
- anpyra-0.1.0/scripts/check_docs.py +140 -0
- anpyra-0.1.0/scripts/check_release.py +129 -0
- anpyra-0.1.0/setup.cfg +4 -0
- anpyra-0.1.0/src/README.md +18 -0
- anpyra-0.1.0/src/anpyra/__init__.py +22 -0
- anpyra-0.1.0/src/anpyra/__main__.py +3 -0
- anpyra-0.1.0/src/anpyra/android/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/android/manifest.py +14 -0
- anpyra-0.1.0/src/anpyra/android/manifest_inspect.py +14 -0
- anpyra-0.1.0/src/anpyra/android/signing.py +14 -0
- anpyra-0.1.0/src/anpyra/android/verify.py +14 -0
- anpyra-0.1.0/src/anpyra/api.py +5 -0
- anpyra-0.1.0/src/anpyra/build.py +16 -0
- anpyra-0.1.0/src/anpyra/cli.py +124 -0
- anpyra-0.1.0/src/anpyra/common/README.md +17 -0
- anpyra-0.1.0/src/anpyra/common/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/common/compiler/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/common/compiler/frontend.py +544 -0
- anpyra-0.1.0/src/anpyra/common/compiler/ir.py +156 -0
- anpyra-0.1.0/src/anpyra/common/config.py +30 -0
- anpyra-0.1.0/src/anpyra/common/project.py +59 -0
- anpyra-0.1.0/src/anpyra/compiler/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/compiler/dex.py +14 -0
- anpyra-0.1.0/src/anpyra/compiler/frontend.py +14 -0
- anpyra-0.1.0/src/anpyra/compiler/ir.py +14 -0
- anpyra-0.1.0/src/anpyra/config.py +7 -0
- anpyra-0.1.0/src/anpyra/platforms/README.md +9 -0
- anpyra-0.1.0/src/anpyra/platforms/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/linux/README.md +7 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/linux/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/macos/README.md +7 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/macos/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/windows/README.md +7 -0
- anpyra-0.1.0/src/anpyra/platforms/desktop/windows/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/README.md +20 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/api.py +16 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/backend.py +17 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/build.py +142 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/config.py +48 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/dex.py +721 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/manifest.py +322 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/manifest_inspect.py +166 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/signing.py +327 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/android/verify.py +269 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/ios/README.md +7 -0
- anpyra-0.1.0/src/anpyra/platforms/mobile/ios/__init__.py +1 -0
- anpyra-0.1.0/src/anpyra/platforms/registry.py +50 -0
- anpyra-0.1.0/src/anpyra/py.typed +0 -0
- anpyra-0.1.0/src/anpyra/scaffold.py +35 -0
- anpyra-0.1.0/src/anpyra.egg-info/PKG-INFO +96 -0
- anpyra-0.1.0/src/anpyra.egg-info/SOURCES.txt +124 -0
- anpyra-0.1.0/src/anpyra.egg-info/dependency_links.txt +1 -0
- anpyra-0.1.0/src/anpyra.egg-info/entry_points.txt +2 -0
- anpyra-0.1.0/src/anpyra.egg-info/requires.txt +4 -0
- anpyra-0.1.0/src/anpyra.egg-info/top_level.txt +2 -0
- anpyra-0.1.0/src/pyandroid/__init__.py +5 -0
- anpyra-0.1.0/tests/README.md +20 -0
- anpyra-0.1.0/tests/__init__.py +1 -0
- anpyra-0.1.0/tests/fixtures/exp005.py +8 -0
- anpyra-0.1.0/tests/fixtures/exp006.py +17 -0
- anpyra-0.1.0/tests/fixtures/exp007.py +24 -0
- anpyra-0.1.0/tests/fixtures/exp008.py +21 -0
- anpyra-0.1.0/tests/integration/__init__.py +1 -0
- anpyra-0.1.0/tests/integration/test_build.py +119 -0
- anpyra-0.1.0/tests/integration/test_cli.py +102 -0
- anpyra-0.1.0/tests/regression/__init__.py +1 -0
- anpyra-0.1.0/tests/regression/test_functions.py +101 -0
- anpyra-0.1.0/tests/unit/__init__.py +1 -0
- anpyra-0.1.0/tests/unit/test_compiler.py +105 -0
- anpyra-0.1.0/tests/unit/test_config.py +71 -0
- anpyra-0.1.0/tests/unit/test_dex.py +134 -0
- anpyra-0.1.0/tests/unit/test_platforms.py +95 -0
- anpyra-0.1.0/tests/unit/test_release.py +87 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Report a failure in documented Anpyra behavior
|
|
4
|
+
title: "[Bug] "
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ๐ Bug Report
|
|
8
|
+
|
|
9
|
+
## ๐ฏ Expected and actual behavior
|
|
10
|
+
|
|
11
|
+
Describe what should happen and what happened.
|
|
12
|
+
|
|
13
|
+
## ๐ Minimal reproduction
|
|
14
|
+
|
|
15
|
+
Provide the exact command, smallest app source, relevant `anpyra.toml` and complete error. State whether the syntax is documented as supported.
|
|
16
|
+
|
|
17
|
+
## ๐งฐ Environment
|
|
18
|
+
|
|
19
|
+
- OS and Python version:
|
|
20
|
+
- Anpyra version/commit and cryptography version:
|
|
21
|
+
- Installation method (editable/wheel):
|
|
22
|
+
- Device model/API, if relevant:
|
|
23
|
+
- Install/launch result, if relevant:
|
|
24
|
+
|
|
25
|
+
## ๐ Evidence
|
|
26
|
+
|
|
27
|
+
Attach a relevant IR/Dalvik excerpt, redacted build report or focused runtime log if useful. Do not include private keys or unrelated device/app data.
|
|
28
|
+
|
|
29
|
+
## โ
Checks tried
|
|
30
|
+
|
|
31
|
+
- [ ] Consulted troubleshooting and the supported language reference.
|
|
32
|
+
- [ ] Reproduced with a minimal source/project.
|
|
33
|
+
- [ ] Stated which host/device checks passed or remain pending.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature proposal
|
|
3
|
+
about: Propose an app capability and its compiler/runtime contract
|
|
4
|
+
title: "[Feature] "
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ๐งฉ Feature Proposal
|
|
8
|
+
|
|
9
|
+
## ๐ฏ Concrete use case
|
|
10
|
+
|
|
11
|
+
What application behavior do you need? What currently blocks it?
|
|
12
|
+
|
|
13
|
+
## โ๏ธ Proposed source/API
|
|
14
|
+
|
|
15
|
+
Show a minimal proposed form and label it as future syntax.
|
|
16
|
+
|
|
17
|
+
## โ๏ธ Semantics and implementation impact
|
|
18
|
+
|
|
19
|
+
Describe types, evaluation/lifecycle behavior, and likely front-end/IR/DEX/UI/package changes. Identify a roadmap phase/dependency.
|
|
20
|
+
|
|
21
|
+
## ๐งช Acceptance criteria
|
|
22
|
+
|
|
23
|
+
What source errors, binary checks and device behavior would prove completion?
|
|
24
|
+
|
|
25
|
+
## ๐ Alternatives and scope
|
|
26
|
+
|
|
27
|
+
List a narrower implementation if useful and clarify what remains out of scope.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# ๐ Change Description
|
|
2
|
+
|
|
3
|
+
## ๐ฏ Problem and resulting behavior
|
|
4
|
+
|
|
5
|
+
Describe the concrete failure/use case and what now happens.
|
|
6
|
+
|
|
7
|
+
## ๐งฑ Affected stages
|
|
8
|
+
|
|
9
|
+
List source/API/config/compiler/backend/package/docs areas changed and any compatibility impact.
|
|
10
|
+
|
|
11
|
+
## ๐งช Validation
|
|
12
|
+
|
|
13
|
+
Record actual commands/results. Distinguish checks run locally from CI/device checks still pending.
|
|
14
|
+
|
|
15
|
+
## ๐ Documentation and roadmap
|
|
16
|
+
|
|
17
|
+
- [ ] Relevant user/developer examples and references match behavior.
|
|
18
|
+
- [ ] Roadmap/changelog status reflects implemented work and evidence.
|
|
19
|
+
- [ ] No private keys, generated APKs, environments or caches are included.
|
|
20
|
+
|
|
21
|
+
## ๐ง Remaining limits
|
|
22
|
+
|
|
23
|
+
Describe unresolved behavior, untested platforms or deliberate limitations.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
name: Publish Python package
|
|
2
|
+
run-name: Publish ${{ inputs.tag }} to ${{ inputs.repository }}
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
inputs:
|
|
7
|
+
tag:
|
|
8
|
+
description: Existing version tag, for example v0.1.0
|
|
9
|
+
type: string
|
|
10
|
+
required: true
|
|
11
|
+
repository:
|
|
12
|
+
description: Package index
|
|
13
|
+
type: choice
|
|
14
|
+
options:
|
|
15
|
+
- testpypi
|
|
16
|
+
- pypi
|
|
17
|
+
default: testpypi
|
|
18
|
+
required: true
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
|
|
23
|
+
concurrency:
|
|
24
|
+
group: publish-${{ inputs.repository }}-${{ inputs.tag }}
|
|
25
|
+
cancel-in-progress: false
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
validate:
|
|
29
|
+
if: github.ref == 'refs/heads/main'
|
|
30
|
+
uses: ./.github/workflows/tests.yml
|
|
31
|
+
with:
|
|
32
|
+
ref: refs/tags/${{ inputs.tag }}
|
|
33
|
+
|
|
34
|
+
build:
|
|
35
|
+
needs: validate
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
timeout-minutes: 15
|
|
38
|
+
steps:
|
|
39
|
+
- name: Check out the release tag
|
|
40
|
+
uses: actions/checkout@v4
|
|
41
|
+
with:
|
|
42
|
+
ref: refs/tags/${{ inputs.tag }}
|
|
43
|
+
persist-credentials: false
|
|
44
|
+
|
|
45
|
+
- uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: '3.12'
|
|
48
|
+
|
|
49
|
+
- name: Install uv
|
|
50
|
+
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
51
|
+
with:
|
|
52
|
+
version: '0.12.21'
|
|
53
|
+
enable-cache: false
|
|
54
|
+
|
|
55
|
+
- name: Check version and tag
|
|
56
|
+
env:
|
|
57
|
+
RELEASE_TAG: ${{ inputs.tag }}
|
|
58
|
+
run: python scripts/check_release.py --tag "$RELEASE_TAG"
|
|
59
|
+
|
|
60
|
+
- name: Build wheel and source distribution
|
|
61
|
+
run: uv build --no-create-gitignore --out-dir dist
|
|
62
|
+
|
|
63
|
+
- name: Check archive contents and metadata
|
|
64
|
+
run: |
|
|
65
|
+
python scripts/check_release.py --dist dist
|
|
66
|
+
uvx --from twine twine check --strict dist/*
|
|
67
|
+
|
|
68
|
+
- name: Install the wheel and build a new Android app
|
|
69
|
+
run: |
|
|
70
|
+
uv venv --python 3.12 /tmp/anpyra-release-smoke
|
|
71
|
+
uv pip install --python /tmp/anpyra-release-smoke/bin/python dist/*.whl
|
|
72
|
+
cd /tmp
|
|
73
|
+
/tmp/anpyra-release-smoke/bin/anpyra --version
|
|
74
|
+
/tmp/anpyra-release-smoke/bin/anpyra init release-app --package dev.anpyra.release
|
|
75
|
+
/tmp/anpyra-release-smoke/bin/anpyra build release-app
|
|
76
|
+
/tmp/anpyra-release-smoke/bin/anpyra verify release-app/build/dev.anpyra.release.apk
|
|
77
|
+
|
|
78
|
+
- name: Save checked distributions
|
|
79
|
+
uses: actions/upload-artifact@v4
|
|
80
|
+
with:
|
|
81
|
+
name: python-distributions
|
|
82
|
+
path: |
|
|
83
|
+
dist/*.whl
|
|
84
|
+
dist/*.tar.gz
|
|
85
|
+
if-no-files-found: error
|
|
86
|
+
retention-days: 14
|
|
87
|
+
|
|
88
|
+
publish:
|
|
89
|
+
needs: build
|
|
90
|
+
runs-on: ubuntu-latest
|
|
91
|
+
timeout-minutes: 10
|
|
92
|
+
environment:
|
|
93
|
+
name: ${{ inputs.repository }}
|
|
94
|
+
permissions:
|
|
95
|
+
contents: read
|
|
96
|
+
id-token: write
|
|
97
|
+
steps:
|
|
98
|
+
- name: Download checked distributions
|
|
99
|
+
uses: actions/download-artifact@v4
|
|
100
|
+
with:
|
|
101
|
+
name: python-distributions
|
|
102
|
+
path: dist
|
|
103
|
+
|
|
104
|
+
- name: Publish to TestPyPI
|
|
105
|
+
if: inputs.repository == 'testpypi'
|
|
106
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
107
|
+
with:
|
|
108
|
+
repository-url: https://test.pypi.org/legacy/
|
|
109
|
+
|
|
110
|
+
- name: Publish to PyPI
|
|
111
|
+
if: inputs.repository == 'pypi'
|
|
112
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
pull_request:
|
|
5
|
+
workflow_call:
|
|
6
|
+
inputs:
|
|
7
|
+
ref:
|
|
8
|
+
description: Git reference to validate for a release
|
|
9
|
+
type: string
|
|
10
|
+
required: false
|
|
11
|
+
default: ''
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
jobs:
|
|
15
|
+
test:
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
os: [ubuntu-latest, windows-latest]
|
|
19
|
+
python: ['3.11', '3.13']
|
|
20
|
+
runs-on: ${{ matrix.os }}
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
ref: ${{ inputs.ref || github.ref }}
|
|
25
|
+
- uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: ${{ matrix.python }}
|
|
28
|
+
- run: python -m pip install -e ".[dev]"
|
|
29
|
+
- run: ruff check src tests examples scripts
|
|
30
|
+
- run: ruff format --check src tests examples scripts
|
|
31
|
+
- run: python scripts/check_docs.py
|
|
32
|
+
- run: python -m unittest discover -s tests -v
|
|
33
|
+
- run: anpyra build examples/hello
|
|
34
|
+
- run: anpyra build examples/score
|
|
35
|
+
- run: anpyra verify examples/score/build/dev.anpyra.score.apk
|
|
36
|
+
- run: python -m pip wheel --no-deps . --wheel-dir dist
|
anpyra-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py.cover
|
|
50
|
+
*.lcov
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
cover/
|
|
54
|
+
|
|
55
|
+
# Translations
|
|
56
|
+
*.mo
|
|
57
|
+
*.pot
|
|
58
|
+
|
|
59
|
+
# Django stuff:
|
|
60
|
+
*.log
|
|
61
|
+
local_settings.py
|
|
62
|
+
db.sqlite3
|
|
63
|
+
db.sqlite3-journal
|
|
64
|
+
|
|
65
|
+
# Flask stuff:
|
|
66
|
+
instance/
|
|
67
|
+
.webassets-cache
|
|
68
|
+
|
|
69
|
+
# Scrapy stuff:
|
|
70
|
+
.scrapy
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
|
|
75
|
+
# PyBuilder
|
|
76
|
+
.pybuilder/
|
|
77
|
+
target/
|
|
78
|
+
|
|
79
|
+
# Jupyter Notebook
|
|
80
|
+
.ipynb_checkpoints
|
|
81
|
+
|
|
82
|
+
# IPython
|
|
83
|
+
profile_default/
|
|
84
|
+
ipython_config.py
|
|
85
|
+
|
|
86
|
+
# pyenv
|
|
87
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
88
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
89
|
+
# .python-version
|
|
90
|
+
|
|
91
|
+
# pipenv
|
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
95
|
+
# install all needed dependencies.
|
|
96
|
+
# Pipfile.lock
|
|
97
|
+
|
|
98
|
+
# uv
|
|
99
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
100
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
101
|
+
# commonly ignored for libraries.
|
|
102
|
+
# uv.lock
|
|
103
|
+
|
|
104
|
+
# poetry
|
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
106
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
107
|
+
# commonly ignored for libraries.
|
|
108
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
109
|
+
# poetry.lock
|
|
110
|
+
# poetry.toml
|
|
111
|
+
|
|
112
|
+
# pdm
|
|
113
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
114
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
115
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
116
|
+
# pdm.lock
|
|
117
|
+
# pdm.toml
|
|
118
|
+
.pdm-python
|
|
119
|
+
.pdm-build/
|
|
120
|
+
|
|
121
|
+
# pixi
|
|
122
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
123
|
+
# pixi.lock
|
|
124
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
125
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
126
|
+
.pixi/*
|
|
127
|
+
!.pixi/config.toml
|
|
128
|
+
|
|
129
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
130
|
+
__pypackages__/
|
|
131
|
+
|
|
132
|
+
# Celery stuff
|
|
133
|
+
celerybeat-schedule*
|
|
134
|
+
celerybeat.pid
|
|
135
|
+
|
|
136
|
+
# Redis
|
|
137
|
+
*.rdb
|
|
138
|
+
*.aof
|
|
139
|
+
*.pid
|
|
140
|
+
|
|
141
|
+
# RabbitMQ
|
|
142
|
+
mnesia/
|
|
143
|
+
rabbitmq/
|
|
144
|
+
rabbitmq-data/
|
|
145
|
+
|
|
146
|
+
# ActiveMQ
|
|
147
|
+
activemq-data/
|
|
148
|
+
|
|
149
|
+
# SageMath parsed files
|
|
150
|
+
*.sage.py
|
|
151
|
+
|
|
152
|
+
# Environments
|
|
153
|
+
.env
|
|
154
|
+
.envrc
|
|
155
|
+
.venv
|
|
156
|
+
env/
|
|
157
|
+
venv/
|
|
158
|
+
ENV/
|
|
159
|
+
env.bak/
|
|
160
|
+
venv.bak/
|
|
161
|
+
|
|
162
|
+
# Spyder project settings
|
|
163
|
+
.spyderproject
|
|
164
|
+
.spyproject
|
|
165
|
+
|
|
166
|
+
# Rope project settings
|
|
167
|
+
.ropeproject
|
|
168
|
+
|
|
169
|
+
# mkdocs/Zensical documentation
|
|
170
|
+
/site
|
|
171
|
+
|
|
172
|
+
# mypy
|
|
173
|
+
.mypy_cache/
|
|
174
|
+
.dmypy.json
|
|
175
|
+
dmypy.json
|
|
176
|
+
|
|
177
|
+
# Pyre type checker
|
|
178
|
+
.pyre/
|
|
179
|
+
|
|
180
|
+
# pytype static type analyzer
|
|
181
|
+
.pytype/
|
|
182
|
+
|
|
183
|
+
# Cython debug symbols
|
|
184
|
+
cython_debug/
|
|
185
|
+
|
|
186
|
+
# PyCharm
|
|
187
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
188
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
189
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
190
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
191
|
+
# .idea/
|
|
192
|
+
|
|
193
|
+
# Abstra
|
|
194
|
+
# Abstra is an AI-powered process automation framework.
|
|
195
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
196
|
+
# Learn more at https://abstra.io/docs
|
|
197
|
+
.abstra/
|
|
198
|
+
|
|
199
|
+
# Visual Studio Code
|
|
200
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore that
|
|
201
|
+
# can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
202
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer, you
|
|
203
|
+
# could uncomment the following to ignore the entire vscode folder
|
|
204
|
+
# .vscode/
|
|
205
|
+
# Temporary file for partial code execution
|
|
206
|
+
tempCodeRunnerFile.py
|
|
207
|
+
|
|
208
|
+
# Ruff stuff:
|
|
209
|
+
.ruff_cache/
|
|
210
|
+
|
|
211
|
+
# PyPI configuration file
|
|
212
|
+
.pypirc
|
|
213
|
+
|
|
214
|
+
# Marimo
|
|
215
|
+
marimo/_static/
|
|
216
|
+
marimo/_lsp/
|
|
217
|
+
__marimo__/
|
|
218
|
+
|
|
219
|
+
# Streamlit
|
|
220
|
+
.streamlit/secrets.toml
|
|
221
|
+
|
|
222
|
+
# Anpyra local inputs and signing state
|
|
223
|
+
.reference/
|
|
224
|
+
.anpyra/
|
|
225
|
+
.pyandroid/
|
|
226
|
+
*.apk
|
|
227
|
+
*.dex
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# ๐ Changelog
|
|
2
|
+
|
|
3
|
+
This file records user-visible milestones. Planned work belongs in the [roadmap](docs/roadmap.md), not as completed release notes.
|
|
4
|
+
|
|
5
|
+
## ๐ ๏ธ Unreleased
|
|
6
|
+
|
|
7
|
+
### ๐ฆ Python package publishing
|
|
8
|
+
|
|
9
|
+
- Manual tagged TestPyPI/PyPI workflow with reusable CI, version guards, archive/README checks and isolated wheel build smoke test.
|
|
10
|
+
- Separate least-privilege publishing job using Trusted Publishing and checked build artifacts.
|
|
11
|
+
- Package classifiers/project links and a dedicated PyPI-compatible README.
|
|
12
|
+
- Read-only release validator, focused rejection tests and complete account/tag/command guide.
|
|
13
|
+
- Workflow prepared locally; trusted-publisher configuration and first index upload remain pending.
|
|
14
|
+
|
|
15
|
+
### ๐ Native platform organization
|
|
16
|
+
|
|
17
|
+
- Shared source analysis/IR, identity metadata and project paths moved to `common/`.
|
|
18
|
+
- Android authoring/config, DEX, manifest, APK packaging/signing/verification moved to `platforms/mobile/android/`.
|
|
19
|
+
- Reserved native iOS and Windows/macOS/Linux backend packages; no additional target implemented.
|
|
20
|
+
- Native registry, `targets` command and `build`/`check --target`; Android remains the default and planned targets fail before writes.
|
|
21
|
+
- Historical imports preserved through forwarding modules; seven additional boundary/dispatch/compatibility checks.
|
|
22
|
+
- Updated ownership guides, source reference and future native backend phase. Web is outside target scope.
|
|
23
|
+
|
|
24
|
+
### ๐ Documentation
|
|
25
|
+
|
|
26
|
+
- Recommend uv for installation, retain pip alternatives and document activation-free setup and wheel workflows.
|
|
27
|
+
- Clarify that Android builds use Python dependencies without Java/JDK, Kotlin, Android SDK/NDK or Android Studio; adb remains optional.
|
|
28
|
+
- Document emoji prefixes for every new commit subject.
|
|
29
|
+
|
|
30
|
+
- Modern project README with navigation, badges, pipeline, supported feature summary and alpha limits.
|
|
31
|
+
- Detailed user/developer guides, file/function map, debugging and extension workflows.
|
|
32
|
+
- Full phase roadmap distinguishing implemented work from pending device validation and future features.
|
|
33
|
+
- Contribution, issue/PR templates and walkthroughs for both examples.
|
|
34
|
+
|
|
35
|
+
### ๐๏ธ Organization and checks
|
|
36
|
+
|
|
37
|
+
- Existing tests grouped into unit/integration/regression without changing public framework module paths.
|
|
38
|
+
- Historical fixtures retained; discovery markers added for grouped tests.
|
|
39
|
+
- Documentation link/title/Python-example checks and CI integration.
|
|
40
|
+
- Source-distribution inclusion of documentation, examples, tests and repository maintenance files.
|
|
41
|
+
|
|
42
|
+
## ๐ฆ 0.1.0 โ October 4, 2026
|
|
43
|
+
|
|
44
|
+
- Unified the PyAndroid 001โ008 work around the cumulative experiment 008 compiler.
|
|
45
|
+
- Added installable package, typed authoring imports, project configuration and compile/build APIs.
|
|
46
|
+
- Added six CLI commands, example projects, JSON build report and v2 APK verification.
|
|
47
|
+
- Retained per-project debug signing identity and deterministic package metadata.
|
|
48
|
+
- Added 41 host tests, Ruff checks and Windows/Linux CI configuration.
|
|
49
|
+
- Built/verified both examples and tested isolated wheel installation/new-app build.
|
|
50
|
+
|
|
51
|
+
The baseline is alpha. Original experiment device success was reported by the author; framework-specific phone acceptance and independent binary inspection remain pending. There is no full Python runtime, general Android binding surface, release identity workflow or publishing service in this version.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# ๐ค Contributing to Anpyra
|
|
2
|
+
|
|
3
|
+
Anpyra is an alpha native compiler framework. Contributions should make one concrete behavior clearer, more reliable, or more useful without claiming unsupported Python/Android features.
|
|
4
|
+
|
|
5
|
+
## ๐งญ Find your starting point
|
|
6
|
+
|
|
7
|
+
- Users: begin with the [user guide](docs/user_guide/README.md).
|
|
8
|
+
- Maintainers: read [development setup](docs/developer_guide/development_setup.md) and [source reference](docs/developer_guide/source_reference.md).
|
|
9
|
+
- Feature proposals: check [roadmap phases](docs/roadmap.md).
|
|
10
|
+
- Bug reports: use [troubleshooting](docs/user_guide/troubleshooting.md) and [debugging](docs/developer_guide/debugging.md).
|
|
11
|
+
|
|
12
|
+
## ๐ Report a bug
|
|
13
|
+
|
|
14
|
+
Provide expected/actual behavior, exact command, minimal app source/config, host versions and complete error. For Android issues, include device/API and install/launch results. A redacted IR/Dalvik excerpt or report helps; private signing keys and unrelated device logs do not belong in an issue.
|
|
15
|
+
|
|
16
|
+
The [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) provides those fields. State whether the source is documented as supported; an unsupported feature request is a different discussion from broken existing behavior.
|
|
17
|
+
|
|
18
|
+
## ๐งฉ Propose a feature
|
|
19
|
+
|
|
20
|
+
Describe the concrete app you want to build, minimal syntax/API, expected Android behavior, roadmap phase and acceptance criteria. Explain compiler/IR/backend/package impact using the [extension guide](docs/developer_guide/extending.md). Avoid making the front end accept a feature before code generation exists.
|
|
21
|
+
|
|
22
|
+
## ๐๏ธ Prepare a change
|
|
23
|
+
|
|
24
|
+
1. Create a descriptive branch and establish passing baseline checks.
|
|
25
|
+
2. Reproduce the problem with a focused test or concrete documented example.
|
|
26
|
+
3. Make the smallest coherent change across necessary stages.
|
|
27
|
+
4. Put unit/integration/historical regression checks in their matching groups.
|
|
28
|
+
5. Update user/developer guides if behavior, paths or limits change.
|
|
29
|
+
6. Run relevant checks and describe their results honestly.
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
python -m pip install -e ".[dev]"
|
|
33
|
+
python -m unittest discover -s tests -v
|
|
34
|
+
ruff check src tests examples scripts
|
|
35
|
+
ruff format --check src tests examples scripts
|
|
36
|
+
python scripts/check_docs.py
|
|
37
|
+
git diff --check
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
For runtime or binary-format changes, follow [device/release validation](docs/developer_guide/testing.md). A docs-only change needs link/example checks; relocating tests also needs complete discovery and example smoke checks.
|
|
41
|
+
|
|
42
|
+
## ๐งน Repository conventions
|
|
43
|
+
|
|
44
|
+
Use `src/` for runtime code, `examples/` for complete application projects, `tests/` for evidence, `docs/user_guide/` for user tasks and `docs/developer_guide/` for internals. Keep documentation in simple English with meaningful emoji headings and relative file links.
|
|
45
|
+
|
|
46
|
+
Do not commit generated APKs/DEX, local environments, caches, or debug/release keys. Preserve experiment fixtures as historical inputs. Maintain public import compatibility deliberately and record any breaking behavior in the changelog.
|
|
47
|
+
|
|
48
|
+
## ๐ฌ Commit messages
|
|
49
|
+
|
|
50
|
+
Every new commit subject must begin with a meaningful emoji and describe the concrete change. Use `๐` for fixes, `โจ` for features, `๐` for documentation, `โป๏ธ` for refactoring, or `๐งช` for tests. For example: `๐ Recommend uv and clarify Android build requirements`.
|
|
51
|
+
|
|
52
|
+
Apply this convention to new commits without rewriting existing published history.
|
|
53
|
+
|
|
54
|
+
## ๐ Review description
|
|
55
|
+
|
|
56
|
+
Use the [PR template](.github/pull_request_template.md). Explain the original problem, resulting behavior, affected stages, validation, compatibility and remaining limitations. Distinguish tests you ran from CI/device checks still pending. Keep roadmap completion tied to actual evidence.
|
|
57
|
+
|
|
58
|
+
The repository uses [Apache-2.0](LICENSE); preserve relevant notices when modifying existing code.
|