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.
Files changed (126) hide show
  1. anpyra-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  2. anpyra-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
  3. anpyra-0.1.0/.github/pull_request_template.md +23 -0
  4. anpyra-0.1.0/.github/workflows/publish.yml +112 -0
  5. anpyra-0.1.0/.github/workflows/tests.yml +36 -0
  6. anpyra-0.1.0/.gitignore +227 -0
  7. anpyra-0.1.0/CHANGELOG.md +51 -0
  8. anpyra-0.1.0/CONTRIBUTING.md +58 -0
  9. anpyra-0.1.0/LICENSE +201 -0
  10. anpyra-0.1.0/MANIFEST.in +7 -0
  11. anpyra-0.1.0/PKG-INFO +96 -0
  12. anpyra-0.1.0/README.md +173 -0
  13. anpyra-0.1.0/docs/README.md +23 -0
  14. anpyra-0.1.0/docs/architecture.md +10 -0
  15. anpyra-0.1.0/docs/developer_guide/README.md +30 -0
  16. anpyra-0.1.0/docs/developer_guide/android_backend.md +67 -0
  17. anpyra-0.1.0/docs/developer_guide/architecture.md +77 -0
  18. anpyra-0.1.0/docs/developer_guide/compiler.md +86 -0
  19. anpyra-0.1.0/docs/developer_guide/debugging.md +86 -0
  20. anpyra-0.1.0/docs/developer_guide/development_setup.md +60 -0
  21. anpyra-0.1.0/docs/developer_guide/extending.md +57 -0
  22. anpyra-0.1.0/docs/developer_guide/native_platforms.md +70 -0
  23. anpyra-0.1.0/docs/developer_guide/publishing.md +190 -0
  24. anpyra-0.1.0/docs/developer_guide/release.md +56 -0
  25. anpyra-0.1.0/docs/developer_guide/repository_structure.md +91 -0
  26. anpyra-0.1.0/docs/developer_guide/source_reference.md +239 -0
  27. anpyra-0.1.0/docs/developer_guide/testing.md +71 -0
  28. anpyra-0.1.0/docs/pypi_readme.md +67 -0
  29. anpyra-0.1.0/docs/roadmap.md +259 -0
  30. anpyra-0.1.0/docs/user_guide/README.md +29 -0
  31. anpyra-0.1.0/docs/user_guide/build_outputs.md +67 -0
  32. anpyra-0.1.0/docs/user_guide/cli.md +107 -0
  33. anpyra-0.1.0/docs/user_guide/concepts.md +56 -0
  34. anpyra-0.1.0/docs/user_guide/configuration.md +76 -0
  35. anpyra-0.1.0/docs/user_guide/first_app.md +82 -0
  36. anpyra-0.1.0/docs/user_guide/installation.md +180 -0
  37. anpyra-0.1.0/docs/user_guide/language.md +123 -0
  38. anpyra-0.1.0/docs/user_guide/migration.md +40 -0
  39. anpyra-0.1.0/docs/user_guide/platforms.md +38 -0
  40. anpyra-0.1.0/docs/user_guide/python_api.md +96 -0
  41. anpyra-0.1.0/docs/user_guide/troubleshooting.md +58 -0
  42. anpyra-0.1.0/examples/README.md +17 -0
  43. anpyra-0.1.0/examples/hello/README.md +25 -0
  44. anpyra-0.1.0/examples/hello/anpyra.toml +9 -0
  45. anpyra-0.1.0/examples/hello/app.py +8 -0
  46. anpyra-0.1.0/examples/score/README.md +30 -0
  47. anpyra-0.1.0/examples/score/anpyra.toml +9 -0
  48. anpyra-0.1.0/examples/score/app.py +18 -0
  49. anpyra-0.1.0/pyproject.toml +54 -0
  50. anpyra-0.1.0/scripts/README.md +26 -0
  51. anpyra-0.1.0/scripts/check_docs.py +140 -0
  52. anpyra-0.1.0/scripts/check_release.py +129 -0
  53. anpyra-0.1.0/setup.cfg +4 -0
  54. anpyra-0.1.0/src/README.md +18 -0
  55. anpyra-0.1.0/src/anpyra/__init__.py +22 -0
  56. anpyra-0.1.0/src/anpyra/__main__.py +3 -0
  57. anpyra-0.1.0/src/anpyra/android/__init__.py +1 -0
  58. anpyra-0.1.0/src/anpyra/android/manifest.py +14 -0
  59. anpyra-0.1.0/src/anpyra/android/manifest_inspect.py +14 -0
  60. anpyra-0.1.0/src/anpyra/android/signing.py +14 -0
  61. anpyra-0.1.0/src/anpyra/android/verify.py +14 -0
  62. anpyra-0.1.0/src/anpyra/api.py +5 -0
  63. anpyra-0.1.0/src/anpyra/build.py +16 -0
  64. anpyra-0.1.0/src/anpyra/cli.py +124 -0
  65. anpyra-0.1.0/src/anpyra/common/README.md +17 -0
  66. anpyra-0.1.0/src/anpyra/common/__init__.py +1 -0
  67. anpyra-0.1.0/src/anpyra/common/compiler/__init__.py +1 -0
  68. anpyra-0.1.0/src/anpyra/common/compiler/frontend.py +544 -0
  69. anpyra-0.1.0/src/anpyra/common/compiler/ir.py +156 -0
  70. anpyra-0.1.0/src/anpyra/common/config.py +30 -0
  71. anpyra-0.1.0/src/anpyra/common/project.py +59 -0
  72. anpyra-0.1.0/src/anpyra/compiler/__init__.py +1 -0
  73. anpyra-0.1.0/src/anpyra/compiler/dex.py +14 -0
  74. anpyra-0.1.0/src/anpyra/compiler/frontend.py +14 -0
  75. anpyra-0.1.0/src/anpyra/compiler/ir.py +14 -0
  76. anpyra-0.1.0/src/anpyra/config.py +7 -0
  77. anpyra-0.1.0/src/anpyra/platforms/README.md +9 -0
  78. anpyra-0.1.0/src/anpyra/platforms/__init__.py +1 -0
  79. anpyra-0.1.0/src/anpyra/platforms/desktop/__init__.py +1 -0
  80. anpyra-0.1.0/src/anpyra/platforms/desktop/linux/README.md +7 -0
  81. anpyra-0.1.0/src/anpyra/platforms/desktop/linux/__init__.py +1 -0
  82. anpyra-0.1.0/src/anpyra/platforms/desktop/macos/README.md +7 -0
  83. anpyra-0.1.0/src/anpyra/platforms/desktop/macos/__init__.py +1 -0
  84. anpyra-0.1.0/src/anpyra/platforms/desktop/windows/README.md +7 -0
  85. anpyra-0.1.0/src/anpyra/platforms/desktop/windows/__init__.py +1 -0
  86. anpyra-0.1.0/src/anpyra/platforms/mobile/__init__.py +1 -0
  87. anpyra-0.1.0/src/anpyra/platforms/mobile/android/README.md +20 -0
  88. anpyra-0.1.0/src/anpyra/platforms/mobile/android/__init__.py +1 -0
  89. anpyra-0.1.0/src/anpyra/platforms/mobile/android/api.py +16 -0
  90. anpyra-0.1.0/src/anpyra/platforms/mobile/android/backend.py +17 -0
  91. anpyra-0.1.0/src/anpyra/platforms/mobile/android/build.py +142 -0
  92. anpyra-0.1.0/src/anpyra/platforms/mobile/android/config.py +48 -0
  93. anpyra-0.1.0/src/anpyra/platforms/mobile/android/dex.py +721 -0
  94. anpyra-0.1.0/src/anpyra/platforms/mobile/android/manifest.py +322 -0
  95. anpyra-0.1.0/src/anpyra/platforms/mobile/android/manifest_inspect.py +166 -0
  96. anpyra-0.1.0/src/anpyra/platforms/mobile/android/signing.py +327 -0
  97. anpyra-0.1.0/src/anpyra/platforms/mobile/android/verify.py +269 -0
  98. anpyra-0.1.0/src/anpyra/platforms/mobile/ios/README.md +7 -0
  99. anpyra-0.1.0/src/anpyra/platforms/mobile/ios/__init__.py +1 -0
  100. anpyra-0.1.0/src/anpyra/platforms/registry.py +50 -0
  101. anpyra-0.1.0/src/anpyra/py.typed +0 -0
  102. anpyra-0.1.0/src/anpyra/scaffold.py +35 -0
  103. anpyra-0.1.0/src/anpyra.egg-info/PKG-INFO +96 -0
  104. anpyra-0.1.0/src/anpyra.egg-info/SOURCES.txt +124 -0
  105. anpyra-0.1.0/src/anpyra.egg-info/dependency_links.txt +1 -0
  106. anpyra-0.1.0/src/anpyra.egg-info/entry_points.txt +2 -0
  107. anpyra-0.1.0/src/anpyra.egg-info/requires.txt +4 -0
  108. anpyra-0.1.0/src/anpyra.egg-info/top_level.txt +2 -0
  109. anpyra-0.1.0/src/pyandroid/__init__.py +5 -0
  110. anpyra-0.1.0/tests/README.md +20 -0
  111. anpyra-0.1.0/tests/__init__.py +1 -0
  112. anpyra-0.1.0/tests/fixtures/exp005.py +8 -0
  113. anpyra-0.1.0/tests/fixtures/exp006.py +17 -0
  114. anpyra-0.1.0/tests/fixtures/exp007.py +24 -0
  115. anpyra-0.1.0/tests/fixtures/exp008.py +21 -0
  116. anpyra-0.1.0/tests/integration/__init__.py +1 -0
  117. anpyra-0.1.0/tests/integration/test_build.py +119 -0
  118. anpyra-0.1.0/tests/integration/test_cli.py +102 -0
  119. anpyra-0.1.0/tests/regression/__init__.py +1 -0
  120. anpyra-0.1.0/tests/regression/test_functions.py +101 -0
  121. anpyra-0.1.0/tests/unit/__init__.py +1 -0
  122. anpyra-0.1.0/tests/unit/test_compiler.py +105 -0
  123. anpyra-0.1.0/tests/unit/test_config.py +71 -0
  124. anpyra-0.1.0/tests/unit/test_dex.py +134 -0
  125. anpyra-0.1.0/tests/unit/test_platforms.py +95 -0
  126. 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
@@ -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.