assayflux 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.
- assayflux-0.1.0/LICENSE +17 -0
- assayflux-0.1.0/MANIFEST.in +10 -0
- assayflux-0.1.0/PKG-INFO +214 -0
- assayflux-0.1.0/README.md +181 -0
- assayflux-0.1.0/RELEASE_NOTES_0.1.0.md +13 -0
- assayflux-0.1.0/RELEASE_NOTES_0.5.0.md +26 -0
- assayflux-0.1.0/RELEASE_NOTES_0.6.0.md +9 -0
- assayflux-0.1.0/RELEASE_NOTES_0.7.0.md +16 -0
- assayflux-0.1.0/docs/ARCHITECTURE.md +12 -0
- assayflux-0.1.0/docs/GOOGLE_COLAB_ANDROID.md +105 -0
- assayflux-0.1.0/docs/PUBLISHING_CHECKLIST.md +20 -0
- assayflux-0.1.0/docs/ROADMAP.md +21 -0
- assayflux-0.1.0/docs/RUNTIME_SETUP.md +30 -0
- assayflux-0.1.0/docs/VERIFICATION_MATRIX_0.1.0.md +24 -0
- assayflux-0.1.0/docs/WEB_TO_ANDROID.md +35 -0
- assayflux-0.1.0/pyproject.toml +52 -0
- assayflux-0.1.0/scripts/setup_colab_android.sh +20 -0
- assayflux-0.1.0/scripts/termux_install.sh +9 -0
- assayflux-0.1.0/setup.cfg +4 -0
- assayflux-0.1.0/src/assayflux/__init__.py +5 -0
- assayflux-0.1.0/src/assayflux/__main__.py +2 -0
- assayflux-0.1.0/src/assayflux/builder.py +196 -0
- assayflux-0.1.0/src/assayflux/cli.py +101 -0
- assayflux-0.1.0/src/assayflux/doctor.py +19 -0
- assayflux-0.1.0/src/assayflux/engines/__init__.py +23 -0
- assayflux-0.1.0/src/assayflux/engines/base.py +29 -0
- assayflux-0.1.0/src/assayflux/errors.py +11 -0
- assayflux-0.1.0/src/assayflux/generator.py +343 -0
- assayflux-0.1.0/src/assayflux/planner.py +8 -0
- assayflux-0.1.0/src/assayflux/project.py +43 -0
- assayflux-0.1.0/src/assayflux/relay.py +26 -0
- assayflux-0.1.0/src/assayflux/runtimes.py +98 -0
- assayflux-0.1.0/src/assayflux/validation.py +22 -0
- assayflux-0.1.0/src/assayflux.egg-info/PKG-INFO +214 -0
- assayflux-0.1.0/src/assayflux.egg-info/SOURCES.txt +39 -0
- assayflux-0.1.0/src/assayflux.egg-info/dependency_links.txt +1 -0
- assayflux-0.1.0/src/assayflux.egg-info/entry_points.txt +2 -0
- assayflux-0.1.0/src/assayflux.egg-info/requires.txt +5 -0
- assayflux-0.1.0/src/assayflux.egg-info/top_level.txt +1 -0
- assayflux-0.1.0/tests/test_cli.py +51 -0
- assayflux-0.1.0/tests/test_project.py +232 -0
assayflux-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AssayFlux
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
include LICENSE
|
|
3
|
+
include RELEASE_NOTES_0.5.0.md
|
|
4
|
+
include RELEASE_NOTES_0.6.0.md
|
|
5
|
+
include RELEASE_NOTES_0.7.0.md
|
|
6
|
+
recursive-include docs *.md
|
|
7
|
+
recursive-include scripts *.sh
|
|
8
|
+
recursive-include tests *.py
|
|
9
|
+
|
|
10
|
+
include RELEASE_NOTES_0.1.0.md
|
assayflux-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: assayflux
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A cross-platform developer toolkit for generating projects, checking language toolchains, running code, validating websites, and orchestrating native and Android builds.
|
|
5
|
+
Author-email: Md Safarujjaman <assayflux@gmail.com>, Md Sahanujjaman <assayflux@gmail.com>
|
|
6
|
+
Maintainer-email: AssayFlux Scientific Systems <company@assayflux.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://www.assayflux.org
|
|
9
|
+
Project-URL: Official Website (.com), https://www.assayflux.com
|
|
10
|
+
Project-URL: Organization, https://www.assayflux.org
|
|
11
|
+
Project-URL: GitHub, https://github.com/AssayFlux
|
|
12
|
+
Keywords: AssayFlux,AssayFlux Scientific Systems,Md Safarujjaman,Md Sahanujjaman,India,West Bengal,Kolkata,build-tool,project-generator,website,android,apk,aab,multi-language,Python,C++,R,TypeScript,Go,Rust,SQL,scientific-computing,developer-tools
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
30
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
31
|
+
Requires-Dist: twine>=5.1; extra == "dev"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# AssayFlux
|
|
35
|
+
|
|
36
|
+
**Version:** 0.1.0
|
|
37
|
+
**Authors:** Md Safarujjaman and Md Sahanujjaman
|
|
38
|
+
**Company:** AssayFlux Scientific Systems · **Country:** India · **State:** West Bengal · **Region:** Kolkata
|
|
39
|
+
**Author email:** assayflux@gmail.com · **Company email:** company@assayflux.com
|
|
40
|
+
**GitHub:** [AssayFlux](https://github.com/AssayFlux)
|
|
41
|
+
**Official websites:** [assayflux.org](https://www.assayflux.org) · [assayflux.com](https://www.assayflux.com)
|
|
42
|
+
|
|
43
|
+
**AssayFlux is a cross-platform developer toolkit for turning project ideas into organized, runnable software workspaces.** Its Python-powered CLI generates starter projects, checks language toolchains, plans tasks, runs supported code, validates website assets, packages source, and orchestrates Android APK/AAB builds when the required SDK and build tools are installed. It is designed to bring multiple development workflows under one consistent interface while preserving the role of each language's native runtime, compiler, and build system.
|
|
44
|
+
|
|
45
|
+
AssayFlux does not translate arbitrary source code between languages. A reported successful build means the requested build command and artifact checks succeeded; it does not replace runtime testing on a device or deployment environment.
|
|
46
|
+
|
|
47
|
+
## Project ownership and official links
|
|
48
|
+
|
|
49
|
+
- Authors: **Md Safarujjaman** and **Md Sahanujjaman**
|
|
50
|
+
- Author email: **assayflux@gmail.com**
|
|
51
|
+
- Company: **AssayFlux Scientific Systems**
|
|
52
|
+
- Company email: **company@assayflux.com**
|
|
53
|
+
- Country: **India**
|
|
54
|
+
- State: **West Bengal**
|
|
55
|
+
- Region: **Kolkata**
|
|
56
|
+
- GitHub: **AssayFlux** — https://github.com/AssayFlux
|
|
57
|
+
- Official websites: https://www.assayflux.org and https://www.assayflux.com
|
|
58
|
+
|
|
59
|
+
These details are included in package metadata and documentation where the packaging standards support them. PyPI does not provide dedicated author country, state, or region fields, so the location is documented here rather than represented as a verified package-index attribute.
|
|
60
|
+
|
|
61
|
+
## Install
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
python -m pip install --upgrade assayflux
|
|
65
|
+
assayflux --version
|
|
66
|
+
assayflux doctor
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For local development:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
python -m pip install -e '.[dev]'
|
|
73
|
+
python -m pytest -q
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Quick start
|
|
77
|
+
|
|
78
|
+
Create a starter website:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
assayflux create MyWebsite --target website
|
|
82
|
+
assayflux run --project-dir MyWebsite --target website
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Open `http://127.0.0.1:8000` in your browser. In another terminal, inspect the plan and test the project:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
assayflux plan MyWebsite
|
|
89
|
+
assayflux test MyWebsite
|
|
90
|
+
assayflux build MyWebsite
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Build output is placed in `deliverables/MyWebsite/`; the editable project remains in `MyWebsite/`.
|
|
94
|
+
|
|
95
|
+
## Wrap an existing static website into an Android APK project
|
|
96
|
+
|
|
97
|
+
AssayFlux can create an Android WebView wrapper and bundle local HTML, CSS, JavaScript, images, and other static assets into the Android project:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
assayflux wrap-web MyMobileSite --source ./path/to/website --root ./mobile-projects
|
|
101
|
+
cd ./mobile-projects/MyMobileSite
|
|
102
|
+
assayflux build . --android-artifacts apk
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The `--source` directory must contain `index.html`; a project containing `web/index.html` is also accepted. Website files are copied into `app/src/main/assets/site/`. The generated wrapper uses AndroidX WebKit's `WebViewAssetLoader`, disables direct file access, and opens external navigation in the device browser.
|
|
106
|
+
|
|
107
|
+
**Scope:** This wraps a static frontend. It does not automatically embed a Python/PHP backend, create a database server, add authentication, or integrate payment processing. Backend APIs need a separate deployment or explicit native integration. The generated Gradle project downloads its declared AndroidX WebKit dependency during a build, so the first build generally needs network access.
|
|
108
|
+
|
|
109
|
+
## Generate other project types
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
assayflux new DataTool --target python
|
|
113
|
+
assayflux new MultiTool --target python --target website --target backend
|
|
114
|
+
assayflux new NativeDemo --target android
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Supported starter targets: `website`, `html`, `css`, `backend`, `cli`, `python`, `r`, `c`, `cpp`, `javascript`, `typescript`, `java`, `kotlin`, `php`, `bash`, `go`, `rust`, `sql`, and `android`. Engine detection is capability discovery; it does not imply every target is compiled by the generic `build` command.
|
|
118
|
+
|
|
119
|
+
## Scientific and multi-language starter workflows
|
|
120
|
+
|
|
121
|
+
AssayFlux 0.1.0 includes R, TypeScript, Go, Rust, and SQLite SQL starter workflows. R runtime execution still requires R and Rscript to be installed. Generate an R analysis workspace with:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
assayflux new ResearchAnalysis --target r
|
|
125
|
+
assayflux doctor
|
|
126
|
+
assayflux run --project-dir ResearchAnalysis --target r
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The generated `src/analysis.R` is a minimal working starter, not a full statistical-analysis framework. R must be installed separately and `Rscript` must be available on `PATH`. Package installation and advanced R/Python interoperability are not performed automatically.
|
|
130
|
+
|
|
131
|
+
Other added targets:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
assayflux new TypeScriptDemo --target typescript # requires tsc + Node.js
|
|
135
|
+
assayflux new GoDemo --target go # requires Go
|
|
136
|
+
assayflux new RustDemo --target rust # requires rustc
|
|
137
|
+
assayflux new SQLDemo --target sql # Python standard-library SQLite, in-memory
|
|
138
|
+
assayflux run --project-dir SQLDemo --target sql
|
|
139
|
+
assayflux validate-web ./web # checks index.html and local referenced assets
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`validate-web` is a lightweight sanity check; it is not a full HTML validator or security audit. TypeScript, Go, Rust, and R targets need their respective toolchains for execution.
|
|
143
|
+
|
|
144
|
+
## Toolchain setup and automatic requirements
|
|
145
|
+
|
|
146
|
+
AssayFlux's core CLI is written using the Python standard library, so a basic install does not need a separate third-party Python runtime dependency. Install the optional development tools with `python -m pip install --upgrade "assayflux[dev]"` when you need to run tests or build/publish a release.
|
|
147
|
+
|
|
148
|
+
**System toolchains are different from Python dependencies.** Java/JDK, Gradle, Android SDK/build-tools, Node.js, C/C++ compilers, PHP, and similar tools are OS-level programs with different installation methods, licenses, sizes, and permissions. `pip install assayflux` cannot safely and reliably install all of them on every Windows, macOS, Linux, Termux, and Colab environment. Run `assayflux doctor` to check what is available. For supported Android build environments, use the included setup guide/script; it installs the documented toolchain for its target environment and may download several gigabytes and request Android SDK license acceptance. Review scripts before running them and do not run them on systems where you lack administrator permission.
|
|
149
|
+
|
|
150
|
+
## Android build requirements
|
|
151
|
+
|
|
152
|
+
Android builds require a compatible JDK (17 recommended), Gradle compatible with Android Gradle Plugin 8.7.3, Android SDK platform 35 and build-tools 35.0.0, and `ANDROID_HOME` or `ANDROID_SDK_ROOT`. See [Google Colab Android setup](docs/GOOGLE_COLAB_ANDROID.md).
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
assayflux build . --android-artifacts apk # debug APK
|
|
156
|
+
assayflux build . --android-artifacts aab # release AAB
|
|
157
|
+
assayflux build . --android-artifacts both # both
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Release AAB signing is not configured automatically. Configure signing credentials securely before publishing. Test APKs on real devices or emulators.
|
|
161
|
+
|
|
162
|
+
## CLI commands
|
|
163
|
+
|
|
164
|
+
- `assayflux --version`, `assayflux info`
|
|
165
|
+
- `assayflux engines` — show registered engines and detected tools
|
|
166
|
+
- `assayflux doctor [--json]` — inspect local build prerequisites
|
|
167
|
+
- `assayflux new NAME` / `assayflux create NAME` — generate a starter workspace
|
|
168
|
+
- `assayflux wrap-web NAME --source DIR [--root DIR]` — bundle a static site into an Android WebView project
|
|
169
|
+
- `assayflux validate-web [WEBSITE_DIR]` — check `index.html` and referenced local assets
|
|
170
|
+
- `assayflux plan [PROJECT_DIR]` — print the task plan
|
|
171
|
+
- `assayflux test [PROJECT_DIR]` — run project tests
|
|
172
|
+
- `assayflux build [PROJECT_DIR] [--force] [--android-artifacts apk|aab|both|none]` — package source and run requested Android build tasks
|
|
173
|
+
- `assayflux run --project-dir DIR --target TARGET` — run a supported target
|
|
174
|
+
|
|
175
|
+
`--force` replaces only the existing delivery folder, not the editable project source. Review the destination before using it.
|
|
176
|
+
|
|
177
|
+
## Delivery report
|
|
178
|
+
|
|
179
|
+
`BUILD_REPORT.json` distinguishes `built` (requested Android artifact built and found), `source_packaged` (source snapshot packaged without a requested Android build), and `partial` (requested Android build was blocked or failed). Build stdout/stderr are retained under `logs/`; inspect them when a build fails.
|
|
180
|
+
|
|
181
|
+
## Python API
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
from assayflux import Project
|
|
185
|
+
|
|
186
|
+
project = Project.create("ResearchPortal", root=".", targets=["website", "backend"])
|
|
187
|
+
project.generate()
|
|
188
|
+
result = project.build()
|
|
189
|
+
print(result.report["status"])
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Security and limitations
|
|
193
|
+
|
|
194
|
+
- Build, test, and run commands may execute project-local code. Do not run untrusted projects; AssayFlux is not a sandbox.
|
|
195
|
+
- Generated backend code is a minimal starter, not a hardened internet-facing API.
|
|
196
|
+
- Website-to-APK wrapping is for static frontends; server-side routes, local database services, login backends, and payments are not automatically ported.
|
|
197
|
+
- Generic non-Android `build` packages source; it does not claim to compile every language target.
|
|
198
|
+
- APK build success does not prove the app's full runtime behavior. Test the resulting app on a device/emulator.
|
|
199
|
+
- Release signing and store publication require separate configuration and credentials.
|
|
200
|
+
|
|
201
|
+
## Build and validate a release
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
python -m pip install --upgrade build twine
|
|
205
|
+
python -m pytest -q
|
|
206
|
+
python -m build
|
|
207
|
+
python -m twine check dist/*
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Review [the publishing checklist](docs/PUBLISHING_CHECKLIST.md) before releasing. PyPI publishing is a separate authenticated action; building a wheel does not publish it.
|
|
211
|
+
|
|
212
|
+
## Runtime detection and setup (0.1.0)
|
|
213
|
+
|
|
214
|
+
Use `assayflux runtimes` to check Python, R/Rscript, Java, Gradle, Android SDK manager, Node.js/npm, TypeScript, PHP, Go, Rust and C/C++ compilers. `assayflux setup` is detection-only unless you explicitly provide `--install --yes`; it then uses a supported OS package manager to install a baseline set of tools. Android SDK command-line tools, SDK platform/build-tools and licence acceptance may still require separate setup. See [`docs/RUNTIME_SETUP.md`](docs/RUNTIME_SETUP.md).
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# AssayFlux
|
|
2
|
+
|
|
3
|
+
**Version:** 0.1.0
|
|
4
|
+
**Authors:** Md Safarujjaman and Md Sahanujjaman
|
|
5
|
+
**Company:** AssayFlux Scientific Systems · **Country:** India · **State:** West Bengal · **Region:** Kolkata
|
|
6
|
+
**Author email:** assayflux@gmail.com · **Company email:** company@assayflux.com
|
|
7
|
+
**GitHub:** [AssayFlux](https://github.com/AssayFlux)
|
|
8
|
+
**Official websites:** [assayflux.org](https://www.assayflux.org) · [assayflux.com](https://www.assayflux.com)
|
|
9
|
+
|
|
10
|
+
**AssayFlux is a cross-platform developer toolkit for turning project ideas into organized, runnable software workspaces.** Its Python-powered CLI generates starter projects, checks language toolchains, plans tasks, runs supported code, validates website assets, packages source, and orchestrates Android APK/AAB builds when the required SDK and build tools are installed. It is designed to bring multiple development workflows under one consistent interface while preserving the role of each language's native runtime, compiler, and build system.
|
|
11
|
+
|
|
12
|
+
AssayFlux does not translate arbitrary source code between languages. A reported successful build means the requested build command and artifact checks succeeded; it does not replace runtime testing on a device or deployment environment.
|
|
13
|
+
|
|
14
|
+
## Project ownership and official links
|
|
15
|
+
|
|
16
|
+
- Authors: **Md Safarujjaman** and **Md Sahanujjaman**
|
|
17
|
+
- Author email: **assayflux@gmail.com**
|
|
18
|
+
- Company: **AssayFlux Scientific Systems**
|
|
19
|
+
- Company email: **company@assayflux.com**
|
|
20
|
+
- Country: **India**
|
|
21
|
+
- State: **West Bengal**
|
|
22
|
+
- Region: **Kolkata**
|
|
23
|
+
- GitHub: **AssayFlux** — https://github.com/AssayFlux
|
|
24
|
+
- Official websites: https://www.assayflux.org and https://www.assayflux.com
|
|
25
|
+
|
|
26
|
+
These details are included in package metadata and documentation where the packaging standards support them. PyPI does not provide dedicated author country, state, or region fields, so the location is documented here rather than represented as a verified package-index attribute.
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python -m pip install --upgrade assayflux
|
|
32
|
+
assayflux --version
|
|
33
|
+
assayflux doctor
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For local development:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
python -m pip install -e '.[dev]'
|
|
40
|
+
python -m pytest -q
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Quick start
|
|
44
|
+
|
|
45
|
+
Create a starter website:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
assayflux create MyWebsite --target website
|
|
49
|
+
assayflux run --project-dir MyWebsite --target website
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Open `http://127.0.0.1:8000` in your browser. In another terminal, inspect the plan and test the project:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
assayflux plan MyWebsite
|
|
56
|
+
assayflux test MyWebsite
|
|
57
|
+
assayflux build MyWebsite
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Build output is placed in `deliverables/MyWebsite/`; the editable project remains in `MyWebsite/`.
|
|
61
|
+
|
|
62
|
+
## Wrap an existing static website into an Android APK project
|
|
63
|
+
|
|
64
|
+
AssayFlux can create an Android WebView wrapper and bundle local HTML, CSS, JavaScript, images, and other static assets into the Android project:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
assayflux wrap-web MyMobileSite --source ./path/to/website --root ./mobile-projects
|
|
68
|
+
cd ./mobile-projects/MyMobileSite
|
|
69
|
+
assayflux build . --android-artifacts apk
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The `--source` directory must contain `index.html`; a project containing `web/index.html` is also accepted. Website files are copied into `app/src/main/assets/site/`. The generated wrapper uses AndroidX WebKit's `WebViewAssetLoader`, disables direct file access, and opens external navigation in the device browser.
|
|
73
|
+
|
|
74
|
+
**Scope:** This wraps a static frontend. It does not automatically embed a Python/PHP backend, create a database server, add authentication, or integrate payment processing. Backend APIs need a separate deployment or explicit native integration. The generated Gradle project downloads its declared AndroidX WebKit dependency during a build, so the first build generally needs network access.
|
|
75
|
+
|
|
76
|
+
## Generate other project types
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
assayflux new DataTool --target python
|
|
80
|
+
assayflux new MultiTool --target python --target website --target backend
|
|
81
|
+
assayflux new NativeDemo --target android
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Supported starter targets: `website`, `html`, `css`, `backend`, `cli`, `python`, `r`, `c`, `cpp`, `javascript`, `typescript`, `java`, `kotlin`, `php`, `bash`, `go`, `rust`, `sql`, and `android`. Engine detection is capability discovery; it does not imply every target is compiled by the generic `build` command.
|
|
85
|
+
|
|
86
|
+
## Scientific and multi-language starter workflows
|
|
87
|
+
|
|
88
|
+
AssayFlux 0.1.0 includes R, TypeScript, Go, Rust, and SQLite SQL starter workflows. R runtime execution still requires R and Rscript to be installed. Generate an R analysis workspace with:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
assayflux new ResearchAnalysis --target r
|
|
92
|
+
assayflux doctor
|
|
93
|
+
assayflux run --project-dir ResearchAnalysis --target r
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The generated `src/analysis.R` is a minimal working starter, not a full statistical-analysis framework. R must be installed separately and `Rscript` must be available on `PATH`. Package installation and advanced R/Python interoperability are not performed automatically.
|
|
97
|
+
|
|
98
|
+
Other added targets:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
assayflux new TypeScriptDemo --target typescript # requires tsc + Node.js
|
|
102
|
+
assayflux new GoDemo --target go # requires Go
|
|
103
|
+
assayflux new RustDemo --target rust # requires rustc
|
|
104
|
+
assayflux new SQLDemo --target sql # Python standard-library SQLite, in-memory
|
|
105
|
+
assayflux run --project-dir SQLDemo --target sql
|
|
106
|
+
assayflux validate-web ./web # checks index.html and local referenced assets
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`validate-web` is a lightweight sanity check; it is not a full HTML validator or security audit. TypeScript, Go, Rust, and R targets need their respective toolchains for execution.
|
|
110
|
+
|
|
111
|
+
## Toolchain setup and automatic requirements
|
|
112
|
+
|
|
113
|
+
AssayFlux's core CLI is written using the Python standard library, so a basic install does not need a separate third-party Python runtime dependency. Install the optional development tools with `python -m pip install --upgrade "assayflux[dev]"` when you need to run tests or build/publish a release.
|
|
114
|
+
|
|
115
|
+
**System toolchains are different from Python dependencies.** Java/JDK, Gradle, Android SDK/build-tools, Node.js, C/C++ compilers, PHP, and similar tools are OS-level programs with different installation methods, licenses, sizes, and permissions. `pip install assayflux` cannot safely and reliably install all of them on every Windows, macOS, Linux, Termux, and Colab environment. Run `assayflux doctor` to check what is available. For supported Android build environments, use the included setup guide/script; it installs the documented toolchain for its target environment and may download several gigabytes and request Android SDK license acceptance. Review scripts before running them and do not run them on systems where you lack administrator permission.
|
|
116
|
+
|
|
117
|
+
## Android build requirements
|
|
118
|
+
|
|
119
|
+
Android builds require a compatible JDK (17 recommended), Gradle compatible with Android Gradle Plugin 8.7.3, Android SDK platform 35 and build-tools 35.0.0, and `ANDROID_HOME` or `ANDROID_SDK_ROOT`. See [Google Colab Android setup](docs/GOOGLE_COLAB_ANDROID.md).
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
assayflux build . --android-artifacts apk # debug APK
|
|
123
|
+
assayflux build . --android-artifacts aab # release AAB
|
|
124
|
+
assayflux build . --android-artifacts both # both
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Release AAB signing is not configured automatically. Configure signing credentials securely before publishing. Test APKs on real devices or emulators.
|
|
128
|
+
|
|
129
|
+
## CLI commands
|
|
130
|
+
|
|
131
|
+
- `assayflux --version`, `assayflux info`
|
|
132
|
+
- `assayflux engines` — show registered engines and detected tools
|
|
133
|
+
- `assayflux doctor [--json]` — inspect local build prerequisites
|
|
134
|
+
- `assayflux new NAME` / `assayflux create NAME` — generate a starter workspace
|
|
135
|
+
- `assayflux wrap-web NAME --source DIR [--root DIR]` — bundle a static site into an Android WebView project
|
|
136
|
+
- `assayflux validate-web [WEBSITE_DIR]` — check `index.html` and referenced local assets
|
|
137
|
+
- `assayflux plan [PROJECT_DIR]` — print the task plan
|
|
138
|
+
- `assayflux test [PROJECT_DIR]` — run project tests
|
|
139
|
+
- `assayflux build [PROJECT_DIR] [--force] [--android-artifacts apk|aab|both|none]` — package source and run requested Android build tasks
|
|
140
|
+
- `assayflux run --project-dir DIR --target TARGET` — run a supported target
|
|
141
|
+
|
|
142
|
+
`--force` replaces only the existing delivery folder, not the editable project source. Review the destination before using it.
|
|
143
|
+
|
|
144
|
+
## Delivery report
|
|
145
|
+
|
|
146
|
+
`BUILD_REPORT.json` distinguishes `built` (requested Android artifact built and found), `source_packaged` (source snapshot packaged without a requested Android build), and `partial` (requested Android build was blocked or failed). Build stdout/stderr are retained under `logs/`; inspect them when a build fails.
|
|
147
|
+
|
|
148
|
+
## Python API
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
from assayflux import Project
|
|
152
|
+
|
|
153
|
+
project = Project.create("ResearchPortal", root=".", targets=["website", "backend"])
|
|
154
|
+
project.generate()
|
|
155
|
+
result = project.build()
|
|
156
|
+
print(result.report["status"])
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Security and limitations
|
|
160
|
+
|
|
161
|
+
- Build, test, and run commands may execute project-local code. Do not run untrusted projects; AssayFlux is not a sandbox.
|
|
162
|
+
- Generated backend code is a minimal starter, not a hardened internet-facing API.
|
|
163
|
+
- Website-to-APK wrapping is for static frontends; server-side routes, local database services, login backends, and payments are not automatically ported.
|
|
164
|
+
- Generic non-Android `build` packages source; it does not claim to compile every language target.
|
|
165
|
+
- APK build success does not prove the app's full runtime behavior. Test the resulting app on a device/emulator.
|
|
166
|
+
- Release signing and store publication require separate configuration and credentials.
|
|
167
|
+
|
|
168
|
+
## Build and validate a release
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
python -m pip install --upgrade build twine
|
|
172
|
+
python -m pytest -q
|
|
173
|
+
python -m build
|
|
174
|
+
python -m twine check dist/*
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Review [the publishing checklist](docs/PUBLISHING_CHECKLIST.md) before releasing. PyPI publishing is a separate authenticated action; building a wheel does not publish it.
|
|
178
|
+
|
|
179
|
+
## Runtime detection and setup (0.1.0)
|
|
180
|
+
|
|
181
|
+
Use `assayflux runtimes` to check Python, R/Rscript, Java, Gradle, Android SDK manager, Node.js/npm, TypeScript, PHP, Go, Rust and C/C++ compilers. `assayflux setup` is detection-only unless you explicitly provide `--install --yes`; it then uses a supported OS package manager to install a baseline set of tools. Android SDK command-line tools, SDK platform/build-tools and licence acceptance may still require separate setup. See [`docs/RUNTIME_SETUP.md`](docs/RUNTIME_SETUP.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# AssayFlux 0.1.0
|
|
2
|
+
|
|
3
|
+
- Added TypeScript, Go, Rust, and SQLite SQL starter targets and execution paths.
|
|
4
|
+
- Added a dependency-free website entry-point/local-asset validator.
|
|
5
|
+
- Improved engine registry and runtime diagnostics; registered languages still require their external toolchains.
|
|
6
|
+
- Added regression tests for new templates, SQL execution, and website validation.
|
|
7
|
+
|
|
8
|
+
## Limits
|
|
9
|
+
- SQL uses an in-memory SQLite database; it is a starter workflow, not a production database service.
|
|
10
|
+
- Website validation is a sanity check, not a full standards/security audit.
|
|
11
|
+
- Android builds require a configured JDK, Gradle, Android SDK, and accepted licences.
|
|
12
|
+
- TypeScript, Go, Rust, and R execution require their respective external toolchains.
|
|
13
|
+
- This workflow does not publish to PyPI.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# AssayFlux 0.5.0
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- Added `assayflux create` as a friendly alias for `assayflux new`.
|
|
6
|
+
- Added `assayflux wrap-web` to bundle an existing static website into an Android WebView project.
|
|
7
|
+
- Fixed generated Android Gradle configuration to explicitly apply the Kotlin Android plugin and target Java/Kotlin 17.
|
|
8
|
+
- Android build reports now distinguish a successful requested Android build (`built`) from source-only delivery (`source_packaged`) and incomplete Android builds (`partial`).
|
|
9
|
+
- Requested APK/AAB output folders are cleared before building so stale binaries cannot be mistaken for newly generated artifacts.
|
|
10
|
+
- Added tests for Kotlin build configuration, website asset bundling, and the new CLI workflows.
|
|
11
|
+
- Expanded documentation for website-to-Android conversion and release validation.
|
|
12
|
+
|
|
13
|
+
## Limitations
|
|
14
|
+
|
|
15
|
+
- `wrap-web` packages static frontend assets; it does not port server-side backend code, databases, authentication servers, or payment services into Android.
|
|
16
|
+
- Android build success still requires runtime testing on an emulator or physical device.
|
|
17
|
+
- The release has not been published to PyPI by this archive-generation step. Publish only after review and authenticated release validation.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Project metadata update
|
|
21
|
+
|
|
22
|
+
Package metadata now identifies author Md Safarujjaman, AssayFlux Scientific Systems, India, and official websites https://www.assayflux.org and https://www.assayflux.com. PyPI does not expose a dedicated author-country field; the country is included in the README/keywords.
|
|
23
|
+
|
|
24
|
+
## Tool installation clarification
|
|
25
|
+
|
|
26
|
+
The core CLI does not require extra runtime Python dependencies. Optional development dependencies are available through `assayflux[dev]`. Operating-system toolchains (JDK, Android SDK/build-tools, Gradle, Node.js, compilers, etc.) cannot be universally installed by pip; users should run `assayflux doctor` and follow the environment-specific setup guide.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# AssayFlux 0.6.0 — Runtime Setup Preview
|
|
2
|
+
|
|
3
|
+
- Added `assayflux runtimes` for runtime/toolchain detection (human-readable or JSON).
|
|
4
|
+
- Added opt-in `assayflux setup` for baseline OS-package installation on supported Termux, Debian/Ubuntu, Fedora, Arch, macOS/Homebrew, and Windows/winget environments.
|
|
5
|
+
- Kept installation opt-in: setup is detection-only by default; installation requires `--install --yes`.
|
|
6
|
+
- Added documentation for Android APK/AAB prerequisites, SDK licensing, and cross-platform limitations.
|
|
7
|
+
- Bumped package version to 0.6.0.
|
|
8
|
+
|
|
9
|
+
Limitations: this is a runtime setup helper, not a universal bundler. The Android SDK is not shipped inside the PyPI package. SDK command-line tools, SDK packages, environment variables and licence acceptance may require separate steps. Availability of OS packages varies by platform and repository.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# AssayFlux 0.7.0 — R Support and Project Metadata Update
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- Added first-class R/Rscript runtime discovery in `assayflux runtimes` and `assayflux doctor`.
|
|
6
|
+
- Registered an R engine and added the `r` project target.
|
|
7
|
+
- Added a starter R analysis script and an `assayflux run --target r` execution path.
|
|
8
|
+
- Updated package metadata and documentation for both named authors, author contact, company contact, organization, location details, GitHub, and the 0.7.0 release description.
|
|
9
|
+
- Improved the package description to describe project generation, runtime/toolchain checks, code execution, website validation, and Android build orchestration without claiming universal compilation.
|
|
10
|
+
|
|
11
|
+
## Important scope notes
|
|
12
|
+
|
|
13
|
+
- R must be installed separately; AssayFlux does not bundle R or automatically install arbitrary R packages.
|
|
14
|
+
- The R starter is a minimal runnable script, not a full statistical analysis suite.
|
|
15
|
+
- Android builds still depend on a compatible JDK, Gradle configuration, Android SDK, and required dependencies. APK/AAB builds and device execution must be tested in the target environment.
|
|
16
|
+
- The version bump does not itself mean a PyPI upload has occurred. Publish only after tests, distribution checks, and explicit release authorization.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
- `project.py`: validates project specification and computes workspace/delivery paths.
|
|
4
|
+
- `generator.py`: deterministic starter templates for supported targets.
|
|
5
|
+
- `planner.py`: dependency-aware task plan serialization.
|
|
6
|
+
- `engines/`: capability metadata for language/runtime tools, including Android APK and AAB tasks.
|
|
7
|
+
- `relay.py`: capability-aware engine routing.
|
|
8
|
+
- `builder.py`: snapshots source, invokes selected Android Gradle tasks, collects artifacts/logs, and writes `BUILD_REPORT.json`.
|
|
9
|
+
- `doctor.py`: checks Python, language toolchains, Gradle, SDK manager, and SDK environment configuration.
|
|
10
|
+
- `cli.py`: stable console interface.
|
|
11
|
+
|
|
12
|
+
The project deliberately separates generation, execution, and delivery. A build report distinguishes source packaging from Android build success. The Android pipeline requires a configured external SDK/toolchain; it is not bundled in the Python wheel.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Build an APK/AAB in Google Colab
|
|
2
|
+
|
|
3
|
+
This is the recommended first Android-build smoke test for the published AssayFlux package. Colab sessions are temporary; download artifacts before the session ends.
|
|
4
|
+
|
|
5
|
+
## Cell 1 — Install AssayFlux
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
%pip install --upgrade assayflux
|
|
9
|
+
!assayflux --version
|
|
10
|
+
!assayflux info
|
|
11
|
+
!assayflux engines
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
If you are testing source before it is published, upload/extract the project ZIP and run `%pip install -e /content/AssayFlux[dev]` from its root instead.
|
|
15
|
+
|
|
16
|
+
## Cell 2 — Install Android build tools
|
|
17
|
+
|
|
18
|
+
Run in a Linux Colab runtime:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
%%bash
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
apt-get update -qq
|
|
24
|
+
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq openjdk-17-jdk unzip wget
|
|
25
|
+
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
|
26
|
+
export PATH="$JAVA_HOME/bin:$PATH"
|
|
27
|
+
mkdir -p /content/android-sdk/cmdline-tools
|
|
28
|
+
cd /content
|
|
29
|
+
wget -q -O commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
|
|
30
|
+
mkdir -p /content/cmdline-tools-unpack
|
|
31
|
+
unzip -q -o commandlinetools.zip -d /content/cmdline-tools-unpack
|
|
32
|
+
rm -rf /content/android-sdk/cmdline-tools/latest
|
|
33
|
+
mv /content/cmdline-tools-unpack/cmdline-tools /content/android-sdk/cmdline-tools/latest
|
|
34
|
+
export ANDROID_HOME=/content/android-sdk
|
|
35
|
+
export ANDROID_SDK_ROOT="$ANDROID_HOME"
|
|
36
|
+
export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
|
|
37
|
+
yes | sdkmanager --licenses >/dev/null
|
|
38
|
+
sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0"
|
|
39
|
+
cd /content
|
|
40
|
+
wget -q -O gradle-8.9-bin.zip https://services.gradle.org/distributions/gradle-8.9-bin.zip
|
|
41
|
+
unzip -q -o gradle-8.9-bin.zip -d /content
|
|
42
|
+
/content/gradle-8.9/bin/gradle --version
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Cell 3 — Set variables and generate a project
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
import os
|
|
49
|
+
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-17-openjdk-amd64"
|
|
50
|
+
os.environ["ANDROID_HOME"] = "/content/android-sdk"
|
|
51
|
+
os.environ["ANDROID_SDK_ROOT"] = "/content/android-sdk"
|
|
52
|
+
os.environ["PATH"] = "/content/gradle-8.9/bin:/content/android-sdk/cmdline-tools/latest/bin:/content/android-sdk/platform-tools:" + os.environ["JAVA_HOME"] + "/bin:" + os.environ["PATH"]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
!assayflux doctor --json
|
|
57
|
+
!assayflux new NativeDemo --root /content --target android
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Cell 4 — Build APK
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
!assayflux build /content/NativeDemo --android-artifacts apk
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Expected output location after a successful build:
|
|
67
|
+
|
|
68
|
+
`/content/deliverables/NativeDemo/artifacts/app-debug.apk`
|
|
69
|
+
|
|
70
|
+
## Cell 5 — Build AAB separately
|
|
71
|
+
|
|
72
|
+
The build command refuses to overwrite an existing delivery folder by default, so use a fresh project root/name for the AAB test or pass `--force` if you intend to replace that delivery folder.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
!assayflux build /content/NativeDemo --android-artifacts aab --force
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Expected output location after a successful build:
|
|
79
|
+
|
|
80
|
+
`/content/deliverables/NativeDemo/artifacts/app-release.aab`
|
|
81
|
+
|
|
82
|
+
## Cell 6 — Inspect report and download
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
import json, os
|
|
86
|
+
from pathlib import Path
|
|
87
|
+
report = json.loads(Path('/content/deliverables/NativeDemo/BUILD_REPORT.json').read_text())
|
|
88
|
+
print(json.dumps(report, indent=2))
|
|
89
|
+
for f in Path('/content/deliverables/NativeDemo/artifacts').glob('*'):
|
|
90
|
+
print(f, f.stat().st_size, 'bytes')
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from google.colab import files
|
|
95
|
+
for f in Path('/content/deliverables/NativeDemo/artifacts').glob('*'):
|
|
96
|
+
files.download(str(f))
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Troubleshooting
|
|
100
|
+
|
|
101
|
+
- If SDK packages fail to download, rerun the tool installation cell in a fresh runtime.
|
|
102
|
+
- If `assayflux doctor` cannot see Gradle, re-run the environment setup cell. Colab shell variables set in a `%%bash` cell do not persist into Python cells; set `os.environ` in Cell 3.
|
|
103
|
+
- If Gradle fails, inspect `logs/android-build.stderr.log` and `logs/android-build.stdout.log` inside the delivery folder.
|
|
104
|
+
- A generated release AAB is not necessarily signed and is not automatically Play Store ready. Configure signing securely and test the APK on a real device before release.
|
|
105
|
+
- The package is only published after a maintainer performs the PyPI/GitHub release steps; this document does not publish anything by itself.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Release checklist
|
|
2
|
+
|
|
3
|
+
1. Review `pyproject.toml` package name, version, description, license, classifiers, and supported Python versions.
|
|
4
|
+
2. Run `python -m pytest -q` and add regression tests for each changed feature.
|
|
5
|
+
3. Build fresh artifacts with `python -m build` after removing stale `dist/` files.
|
|
6
|
+
4. Validate artifacts with `python -m twine check dist/*` and install the wheel into a clean virtual environment for smoke tests.
|
|
7
|
+
5. Inspect the wheel and source distribution to confirm that source, docs, and license are included and temporary artifacts are excluded.
|
|
8
|
+
6. Publish only after explicit review using a configured PyPI Trusted Publisher or API token; never commit credentials.
|
|
9
|
+
7. After publishing, test `python -m pip install --upgrade assayflux` in a clean environment and verify `assayflux --version` and core workflows.
|
|
10
|
+
8. For Android releases, validate generated Gradle configuration, build the APK/AAB, and test the resulting application on an emulator/device. Configure release signing separately.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Author and website metadata
|
|
14
|
+
|
|
15
|
+
Confirm authors Md Safarujjaman and Md Sahanujjaman, author email `assayflux@gmail.com`, company AssayFlux Scientific Systems, company email `company@assayflux.com`, and the official links `https://www.assayflux.org`, `https://www.assayflux.com`, and `https://github.com/AssayFlux`. Country India, state West Bengal, and region Kolkata are documented in the README because PyPI has no dedicated author-location metadata fields. Verify control of the listed domains and GitHub organization before release.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Colab token publishing notebook
|
|
19
|
+
|
|
20
|
+
Use `AssayFlux_Colab_Test_Build_PyPI_0.1.0.ipynb` with `AssayFlux_Professional_0.1.0.zip`. It runs tests, builds a wheel and sdist, checks them with Twine, performs an isolated wheel-install smoke test, and offers a separate optional upload cell. The upload cell requires the exact release confirmation and prompts for a token without echoing it. Do not commit or save the token. Verify the release on PyPI after the upload command completes.
|