flashspec 0.1.2__tar.gz → 0.1.4__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 (111) hide show
  1. {flashspec-0.1.2 → flashspec-0.1.4}/.github/workflows/benchmark.yml +1 -1
  2. {flashspec-0.1.2 → flashspec-0.1.4}/.github/workflows/ci.yml +5 -5
  3. {flashspec-0.1.2 → flashspec-0.1.4}/.github/workflows/gpu_tests.yml +2 -2
  4. {flashspec-0.1.2 → flashspec-0.1.4}/.gitignore +0 -3
  5. {flashspec-0.1.2 → flashspec-0.1.4}/CHANGELOG.md +54 -0
  6. {flashspec-0.1.2 → flashspec-0.1.4}/CITATION.cff +1 -1
  7. {flashspec-0.1.2 → flashspec-0.1.4}/LICENSE +117 -117
  8. flashspec-0.1.4/PKG-INFO +488 -0
  9. {flashspec-0.1.2 → flashspec-0.1.4}/PUBLISHING.md +14 -3
  10. flashspec-0.1.4/README.md +328 -0
  11. flashspec-0.1.4/benchmarks/results/FlashSpec TinyLlama-1.1B (Tesla T4 NF4) Benchmarks.png +0 -0
  12. flashspec-0.1.4/benchmarks/results/bandit_regret.jpg +0 -0
  13. flashspec-0.1.4/benchmarks/results/draft_size_sweep.csv +6 -0
  14. flashspec-0.1.4/benchmarks/results/gamma_sweep.csv +6 -0
  15. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/__init__.py +4 -1
  16. flashspec-0.1.4/flashspec/kernels/__init__.py +72 -0
  17. flashspec-0.1.4/notebooks/01_quickstart.ipynb +365 -0
  18. flashspec-0.1.4/notebooks/02_bandit_analysis.ipynb +398 -0
  19. flashspec-0.1.4/notebooks/03_kernel_profiling.ipynb +170 -0
  20. flashspec-0.1.4/notebooks/Colab_Benchmarks_T4.ipynb +1171 -0
  21. flashspec-0.1.4/paper/figures/bandit_regret.jpg +0 -0
  22. {flashspec-0.1.2 → flashspec-0.1.4}/pyproject.toml +7 -2
  23. {flashspec-0.1.2 → flashspec-0.1.4}/social/linkedin_post.md +7 -3
  24. {flashspec-0.1.2 → flashspec-0.1.4}/social/x_thread.md +5 -4
  25. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/test_verify_kernel.py +100 -0
  26. flashspec-0.1.2/PKG-INFO +0 -340
  27. flashspec-0.1.2/README.md +0 -181
  28. flashspec-0.1.2/flashspec/kernels/__init__.py +0 -18
  29. {flashspec-0.1.2 → flashspec-0.1.4}/.readthedocs.yaml +0 -0
  30. {flashspec-0.1.2 → flashspec-0.1.4}/.zenodo.json +0 -0
  31. {flashspec-0.1.2 → flashspec-0.1.4}/AGENTS.md +0 -0
  32. {flashspec-0.1.2 → flashspec-0.1.4}/CONTRIBUTING.md +0 -0
  33. {flashspec-0.1.2 → flashspec-0.1.4}/Makefile +0 -0
  34. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/README.md +0 -0
  35. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/__init__.py +0 -0
  36. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/baselines.py +0 -0
  37. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/benchmark_kernels.py +0 -0
  38. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/compare_baselines.py +0 -0
  39. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/configs/llama3_70b.yaml +0 -0
  40. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/configs/llama3_8b.yaml +0 -0
  41. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/configs/mistral_7b.yaml +0 -0
  42. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/results/.gitkeep +0 -0
  43. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/results/baseline.json +0 -0
  44. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/run_all.py +0 -0
  45. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/sweep_draft_sizes.py +0 -0
  46. {flashspec-0.1.2 → flashspec-0.1.4}/benchmarks/sweep_gamma.py +0 -0
  47. {flashspec-0.1.2 → flashspec-0.1.4}/deploy/Dockerfile +0 -0
  48. {flashspec-0.1.2 → flashspec-0.1.4}/deploy/docker-compose.yml +0 -0
  49. {flashspec-0.1.2 → flashspec-0.1.4}/deploy/k8s/flashspec-deployment.yaml +0 -0
  50. {flashspec-0.1.2 → flashspec-0.1.4}/docs/api/index.md +0 -0
  51. {flashspec-0.1.2 → flashspec-0.1.4}/docs/architecture.md +0 -0
  52. {flashspec-0.1.2 → flashspec-0.1.4}/docs/bandit.md +0 -0
  53. {flashspec-0.1.2 → flashspec-0.1.4}/docs/benchmarks.md +0 -0
  54. {flashspec-0.1.2 → flashspec-0.1.4}/docs/index.md +0 -0
  55. {flashspec-0.1.2 → flashspec-0.1.4}/docs/kernels.md +0 -0
  56. {flashspec-0.1.2 → flashspec-0.1.4}/docs/mkdocs.yml +0 -0
  57. {flashspec-0.1.2 → flashspec-0.1.4}/docs/requirements.txt +0 -0
  58. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/bandit/__init__.py +0 -0
  59. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/bandit/base.py +0 -0
  60. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/bandit/oracle.py +0 -0
  61. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/bandit/thompson.py +0 -0
  62. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/bandit/ucb.py +0 -0
  63. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/engine/__init__.py +0 -0
  64. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/engine/drafter.py +0 -0
  65. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/engine/speculative.py +0 -0
  66. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/engine/verifier.py +0 -0
  67. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/export/__init__.py +0 -0
  68. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/export/onnx.py +0 -0
  69. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/kernels/_reference.py +0 -0
  70. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/kernels/gather_kernel.py +0 -0
  71. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/kernels/verify_kernel.py +0 -0
  72. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/metrics/__init__.py +0 -0
  73. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/metrics/acceptance.py +0 -0
  74. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/metrics/latency.py +0 -0
  75. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/metrics/throughput.py +0 -0
  76. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/py.typed +0 -0
  77. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/sampling/__init__.py +0 -0
  78. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/sampling/rejection.py +0 -0
  79. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/sampling/typical.py +0 -0
  80. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/utils/__init__.py +0 -0
  81. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/utils/config.py +0 -0
  82. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/utils/device.py +0 -0
  83. {flashspec-0.1.2 → flashspec-0.1.4}/flashspec/utils/logging.py +0 -0
  84. {flashspec-0.1.2 → flashspec-0.1.4}/mkdocs.yml +0 -0
  85. {flashspec-0.1.2 → flashspec-0.1.4}/notebooks/01_quickstart.py +0 -0
  86. {flashspec-0.1.2 → flashspec-0.1.4}/paper/Makefile +0 -0
  87. {flashspec-0.1.2 → flashspec-0.1.4}/paper/figures/.gitkeep +0 -0
  88. {flashspec-0.1.2 → flashspec-0.1.4}/paper/flashspec.bib +0 -0
  89. {flashspec-0.1.2 → flashspec-0.1.4}/paper/flashspec.tex +0 -0
  90. {flashspec-0.1.2 → flashspec-0.1.4}/paper/joss/README.md +0 -0
  91. {flashspec-0.1.2 → flashspec-0.1.4}/paper/joss/paper.bib +0 -0
  92. {flashspec-0.1.2 → flashspec-0.1.4}/paper/joss/paper.md +0 -0
  93. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/__init__.py +0 -0
  94. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/check_regression.py +0 -0
  95. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/download_models.py +0 -0
  96. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/export_draft.py +0 -0
  97. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/profile_kernel.py +0 -0
  98. {flashspec-0.1.2 → flashspec-0.1.4}/scripts/update_benchmark_results.py +0 -0
  99. {flashspec-0.1.2 → flashspec-0.1.4}/tests/__init__.py +0 -0
  100. {flashspec-0.1.2 → flashspec-0.1.4}/tests/chaos/__init__.py +0 -0
  101. {flashspec-0.1.2 → flashspec-0.1.4}/tests/chaos/test_bandit_adversarial.py +0 -0
  102. {flashspec-0.1.2 → flashspec-0.1.4}/tests/conftest.py +0 -0
  103. {flashspec-0.1.2 → flashspec-0.1.4}/tests/integration/__init__.py +0 -0
  104. {flashspec-0.1.2 → flashspec-0.1.4}/tests/integration/test_e2e_greedy.py +0 -0
  105. {flashspec-0.1.2 → flashspec-0.1.4}/tests/integration/test_e2e_sampling.py +0 -0
  106. {flashspec-0.1.2 → flashspec-0.1.4}/tests/integration/test_onnx_parity.py +0 -0
  107. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/__init__.py +0 -0
  108. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/test_acceptance.py +0 -0
  109. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/test_bandit.py +0 -0
  110. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/test_config.py +0 -0
  111. {flashspec-0.1.2 → flashspec-0.1.4}/tests/unit/test_sampling.py +0 -0
@@ -25,7 +25,7 @@ jobs:
25
25
  cache: pip
26
26
 
27
27
  - name: Install bench dependencies
28
- run: pip install -e ".[bench]"
28
+ run: pip install -e ".[bench,gpu]"
29
29
 
30
30
  - name: Build Docker image
31
31
  run: docker build -t flashspec:latest -f deploy/Dockerfile .
@@ -22,7 +22,7 @@ jobs:
22
22
  python-version: "3.11"
23
23
  cache: pip
24
24
  - name: Install dev dependencies
25
- run: pip install -e ".[dev]" --extra-index-url https://download.pytorch.org/whl/cpu
25
+ run: pip install -e ".[dev,gpu]" --extra-index-url https://download.pytorch.org/whl/cpu
26
26
  - name: make lint
27
27
  run: make lint
28
28
  - name: pip-audit (fail on CRITICAL CVE — §15)
@@ -46,7 +46,7 @@ jobs:
46
46
  python-version: "3.11"
47
47
  cache: pip
48
48
  - name: Install
49
- run: pip install -e ".[dev]" --extra-index-url https://download.pytorch.org/whl/cpu
49
+ run: pip install -e ".[dev,gpu]" --extra-index-url https://download.pytorch.org/whl/cpu
50
50
  - name: make test
51
51
  run: make test
52
52
  - name: Upload coverage XML
@@ -70,7 +70,7 @@ jobs:
70
70
  python-version: "3.11"
71
71
  cache: pip
72
72
  - name: Install
73
- run: pip install -e ".[dev]" --extra-index-url https://download.pytorch.org/whl/cpu
73
+ run: pip install -e ".[dev,gpu]" --extra-index-url https://download.pytorch.org/whl/cpu
74
74
  - name: make test-chaos
75
75
  run: make test-chaos
76
76
 
@@ -86,7 +86,7 @@ jobs:
86
86
  python-version: "3.11"
87
87
  cache: pip
88
88
  - name: Install
89
- run: pip install -e ".[dev]" --extra-index-url https://download.pytorch.org/whl/cpu
89
+ run: pip install -e ".[dev,gpu]" --extra-index-url https://download.pytorch.org/whl/cpu
90
90
  - name: Download coverage artifact
91
91
  uses: actions/download-artifact@v4
92
92
  with:
@@ -117,7 +117,7 @@ jobs:
117
117
  cache: pip
118
118
  - name: Install with ONNX extras
119
119
  run: |
120
- pip install -e ".[dev,onnx]" \
120
+ pip install -e ".[dev,onnx,gpu]" \
121
121
  --extra-index-url https://download.pytorch.org/whl/cpu
122
122
  - name: Run ONNX parity tests
123
123
  run: pytest tests/integration/test_onnx_parity.py -v
@@ -20,7 +20,7 @@ jobs:
20
20
  python-version: "3.11"
21
21
  cache: pip
22
22
  - name: Install
23
- run: pip install -e ".[dev]"
23
+ run: pip install -e ".[dev,gpu]"
24
24
  - name: make test-gpu
25
25
  run: make test-gpu
26
26
  - name: Run slow distribution tests (N=10,000 KS gate)
@@ -45,7 +45,7 @@ jobs:
45
45
  python-version: "3.11"
46
46
  cache: pip
47
47
  - name: Install bench dependencies
48
- run: pip install -e ".[bench]"
48
+ run: pip install -e ".[bench,gpu]"
49
49
  - name: make bench-quick
50
50
  run: make bench-quick
51
51
  - name: Assert throughput ≥ 1.5× AR
@@ -51,9 +51,6 @@ benchmarks/results/*.json
51
51
  !benchmarks/results/baseline.json
52
52
  !benchmarks/results/.gitkeep
53
53
 
54
- # Jupyter
55
- *.ipynb
56
- .ipynb_checkpoints/
57
54
 
58
55
  # Paper build artefacts
59
56
  paper/*.aux
@@ -11,6 +11,60 @@ Versioning follows [Semantic Versioning 2.0.0](https://semver.org/).
11
11
  ## [Unreleased]
12
12
 
13
13
  ### Added
14
+ - First real GPU measurements (Tesla T4, TinyLlama-1.1B-Chat NF4, FlashSpec UCB1,
15
+ γ=4): **44.2 tok/s**, α=0.75, p50=22.1ms.
16
+ Result in `benchmarks/results/flashspec_ucb_tiny_llama.json`.
17
+ - Bandit regret measured empirically (T=10,000, K=3 arms): UCB1=100.2,
18
+ Thompson=18.9, Oracle=0.0. Figure saved to `paper/figures/bandit_regret.jpg`.
19
+ - Gamma sweep results in `benchmarks/results/gamma_sweep.csv` (synthetic
20
+ logprobs, acceptance rates genuine).
21
+ - Draft size sweep results in `benchmarks/results/draft_size_sweep.csv`.
22
+ - Updated `notebooks/01_quickstart.ipynb`, `02_bandit_analysis.ipynb`, and
23
+ `03_kernel_profiling.ipynb` with real Colab T4 execution outputs.
24
+ - Kernel profiling table (T4): reference 0.07–0.72ms; Triton kernel faster
25
+ at batch=8 (1.6×) but slower at batch=1 on T4 (expected — T4 is
26
+ bandwidth-constrained, H100 profiling pending).
27
+ - README updated: real measurements clearly separated from H100 design targets;
28
+ ⊛ symbol marks all unverified target numbers.
29
+
30
+ ---
31
+
32
+ ## [0.1.3] — Critical packaging fix (Windows/macOS install)
33
+
34
+ ### Fixed
35
+ - **Critical**: `pip install flashspec` failed completely on Windows and
36
+ macOS with `ERROR: No matching distribution found for triton>=3.0.0` —
37
+ Triton publishes official PyPI wheels for Linux only, but `triton>=3.0.0`
38
+ was a hard core dependency, making the package uninstallable on those
39
+ platforms. (Reported against v0.1.0–v0.1.2.)
40
+ - `pyproject.toml`: moved `triton` out of `dependencies` into a new
41
+ `gpu` extra with a `platform_system == 'Linux'` environment marker:
42
+ `pip install flashspec[gpu]`.
43
+ - `flashspec/kernels/__init__.py`: now imports `verify_kernel` and
44
+ `gather_kernel` inside a `try/except ImportError`. If Triton is
45
+ unavailable, `verify_tokens` and `gather_accepted` are bound to a
46
+ wrapper that raises an actionable `ImportError` only when *called*
47
+ (not at import time), explaining `pip install flashspec[gpu]`
48
+ (Linux-only) and pointing to the cross-platform
49
+ `flashspec.kernels._reference` module (identical numerics, verified in
50
+ `tests/unit/test_verify_kernel.py`). Adds module-level
51
+ `flashspec.kernels.TRITON_AVAILABLE: bool`.
52
+ - `tests/unit/test_verify_kernel.py`: added
53
+ `TestKernelsPackageWithoutTriton` (3 tests, CPU-only, no GPU/Triton
54
+ required) verifying the package imports cleanly and raises the
55
+ actionable error when Triton is absent.
56
+ - `.github/workflows/{ci,gpu_tests,benchmark}.yml`: updated `pip install`
57
+ steps to request the `gpu` extra wherever Triton-backed kernel tests
58
+ or benchmarks actually run (all on `ubuntu-22.04`/self-hosted Linux
59
+ runners, where the extra resolves normally).
60
+ - `README.md`: rewrote the Installation section — `pip install flashspec`
61
+ is now correctly described as cross-platform (CPU reference kernels),
62
+ with `pip install flashspec[gpu]` for Linux+CUDA accelerated kernels.
63
+ - Bumped version `0.1.0` → `0.1.3` in `pyproject.toml` and
64
+ `flashspec/__init__.py` (0.1.0–0.1.2 are broken on non-Linux and
65
+ should be marked yanked on PyPI after this release).
66
+
67
+ ---
14
68
  - Initial project scaffold following AGENTS.md specification.
15
69
  - `flashspec.utils.config`: Pydantic v2 configuration models (`FlashSpecConfig`,
16
70
  `BanditConfig`, `SamplingConfig`, `MetricsConfig`). All immutable (`frozen=True`).
@@ -27,7 +27,7 @@ abstract: >-
27
27
  O(sqrt(K T log T)) regret bound. The output distribution is
28
28
  provably identical to standard autoregressive sampling, verified
29
29
  continuously via a Kolmogorov-Smirnov test in CI.
30
- version: 0.1.0
30
+ version: 0.1.3
31
31
  date-released: "2026-06-12"
32
32
  license: Apache-2.0
33
33
  repository-code: "https://github.com/Mattral/FlashSpec"
@@ -1,117 +1,117 @@
1
- Apache License
2
- Version 2.0, January 2004
3
- http://www.apache.org/licenses/
4
-
5
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
-
7
- 1. Definitions.
8
-
9
- "License" shall mean the terms and conditions for use, reproduction,
10
- and distribution as defined by Sections 1 through 9 of this document.
11
-
12
- "Licensor" shall mean the copyright owner or entity authorized by
13
- the copyright owner that is granting the License.
14
-
15
- "Legal Entity" shall mean the union of the acting entity and all
16
- other entities that control, are controlled by, or are under common
17
- control with that entity.
18
-
19
- "You" (or "Your") shall mean an individual or Legal Entity
20
- exercising permissions granted by this License.
21
-
22
- "Source" form shall mean the preferred form for making modifications,
23
- including but not limited to software source code, documentation
24
- source, and configuration files.
25
-
26
- "Object" form shall mean any form resulting from mechanical
27
- transformation or translation of a Source form, including but
28
- not limited to compiled object code, generated documentation,
29
- and conversions to other media types.
30
-
31
- "Work" shall mean the work of authorship made available under
32
- the License, as indicated by a copyright notice that is included in
33
- or attached to the work.
34
-
35
- "Derivative Works" shall mean any work, whether in Source or Object
36
- form, that is based on (or derived from) the Work and for which the
37
- editorial revisions, annotations, elaborations, or other transformations
38
- represent, as a whole, an original work of authorship.
39
-
40
- "Contribution" shall mean any work of authorship, including the
41
- original version of the Work and any modifications or additions
42
- to that Work or Derivative Works of the Work, that is intentionally
43
- submitted to the Licensor for inclusion in the Work by the copyright
44
- owner or by an individual or Legal Entity authorized to submit on
45
- behalf of the copyright owner.
46
-
47
- "Contributor" shall mean Licensor and any Legal Entity on behalf of
48
- whom a Contribution has been received by the Licensor and included
49
- within the Work.
50
-
51
- 2. Grant of Copyright License. Subject to the terms and conditions of
52
- this License, each Contributor hereby grants to You a perpetual,
53
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
54
- copyright license to reproduce, prepare Derivative Works of,
55
- publicly display, publicly perform, sublicense, and distribute the
56
- Work and such Derivative Works in Source or Object form.
57
-
58
- 3. Grant of Patent License. Subject to the terms and conditions of
59
- this License, each Contributor hereby grants to You a perpetual,
60
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
61
- (except as stated in this section) patent license to make, have made,
62
- use, offer to sell, sell, import, and otherwise transfer the Work,
63
- where such license applies only to those patent claims licensable
64
- by such Contributor that are necessarily infringed by their
65
- Contribution(s) alone or by the combined contribution of their
66
- Contribution(s) with the Work to which such Contribution(s) was
67
- submitted.
68
-
69
- 4. Redistribution. You may reproduce and distribute copies of the
70
- Work or Derivative Works thereof in any medium, with or without
71
- modifications, and in Source or Object form, provided that You
72
- meet the following conditions:
73
-
74
- (a) You must give any other recipients of the Work or Derivative
75
- Works a copy of this License; and
76
-
77
- (b) You must cause any modified files to carry prominent notices
78
- stating that You changed the files; and
79
-
80
- (c) You must retain, in the Source form of any Derivative Works
81
- that You distribute, all copyright, patent, trademark, and
82
- attribution notices from the Source form of the Work,
83
- excluding those notices that do not pertain to any part of
84
- the Derivative Works; and
85
-
86
- (d) If the Work includes a "NOTICE" text file as part of its
87
- distribution, You must include a readable copy of the
88
- attribution notices contained within such NOTICE file, in
89
- at least one of the following places: within a NOTICE text
90
- file distributed as part of the Derivative Works; within
91
- the Source form or documentation, if provided along with the
92
- Derivative Works; or, within a display generated by the
93
- Derivative Works, if and wherever such third-party notices
94
- normally appear. The contents of the NOTICE file are for
95
- informational purposes only and do not modify the License.
96
- You may add Your own attribution notices within Derivative
97
- Works that You distribute, alongside or in addition to the
98
- NOTICE text from the Work, provided that such additional
99
- attribution notices cannot be construed as modifying the License.
100
-
101
- You may add Your own license statement for Your modifications and
102
- may provide additional grant of rights to use, copy, modify, merge,
103
- publish, distribute, sublicense, and/or sell copies of the Work.
104
-
105
- Copyright 2025 Min Htet Myet (Mattral)
106
-
107
- Licensed under the Apache License, Version 2.0 (the "License");
108
- you may not use this file except in compliance with the License.
109
- You may obtain a copy of the License at
110
-
111
- http://www.apache.org/licenses/LICENSE-2.0
112
-
113
- Unless required by applicable law or agreed to in writing, software
114
- distributed under the License is distributed on an "AS IS" BASIS,
115
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
116
- See the License for the specific language governing permissions and
117
- limitations under the License.
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity.
18
+
19
+ "You" (or "Your") shall mean an individual or Legal Entity
20
+ exercising permissions granted by this License.
21
+
22
+ "Source" form shall mean the preferred form for making modifications,
23
+ including but not limited to software source code, documentation
24
+ source, and configuration files.
25
+
26
+ "Object" form shall mean any form resulting from mechanical
27
+ transformation or translation of a Source form, including but
28
+ not limited to compiled object code, generated documentation,
29
+ and conversions to other media types.
30
+
31
+ "Work" shall mean the work of authorship made available under
32
+ the License, as indicated by a copyright notice that is included in
33
+ or attached to the work.
34
+
35
+ "Derivative Works" shall mean any work, whether in Source or Object
36
+ form, that is based on (or derived from) the Work and for which the
37
+ editorial revisions, annotations, elaborations, or other transformations
38
+ represent, as a whole, an original work of authorship.
39
+
40
+ "Contribution" shall mean any work of authorship, including the
41
+ original version of the Work and any modifications or additions
42
+ to that Work or Derivative Works of the Work, that is intentionally
43
+ submitted to the Licensor for inclusion in the Work by the copyright
44
+ owner or by an individual or Legal Entity authorized to submit on
45
+ behalf of the copyright owner.
46
+
47
+ "Contributor" shall mean Licensor and any Legal Entity on behalf of
48
+ whom a Contribution has been received by the Licensor and included
49
+ within the Work.
50
+
51
+ 2. Grant of Copyright License. Subject to the terms and conditions of
52
+ this License, each Contributor hereby grants to You a perpetual,
53
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
54
+ copyright license to reproduce, prepare Derivative Works of,
55
+ publicly display, publicly perform, sublicense, and distribute the
56
+ Work and such Derivative Works in Source or Object form.
57
+
58
+ 3. Grant of Patent License. Subject to the terms and conditions of
59
+ this License, each Contributor hereby grants to You a perpetual,
60
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
61
+ (except as stated in this section) patent license to make, have made,
62
+ use, offer to sell, sell, import, and otherwise transfer the Work,
63
+ where such license applies only to those patent claims licensable
64
+ by such Contributor that are necessarily infringed by their
65
+ Contribution(s) alone or by the combined contribution of their
66
+ Contribution(s) with the Work to which such Contribution(s) was
67
+ submitted.
68
+
69
+ 4. Redistribution. You may reproduce and distribute copies of the
70
+ Work or Derivative Works thereof in any medium, with or without
71
+ modifications, and in Source or Object form, provided that You
72
+ meet the following conditions:
73
+
74
+ (a) You must give any other recipients of the Work or Derivative
75
+ Works a copy of this License; and
76
+
77
+ (b) You must cause any modified files to carry prominent notices
78
+ stating that You changed the files; and
79
+
80
+ (c) You must retain, in the Source form of any Derivative Works
81
+ that You distribute, all copyright, patent, trademark, and
82
+ attribution notices from the Source form of the Work,
83
+ excluding those notices that do not pertain to any part of
84
+ the Derivative Works; and
85
+
86
+ (d) If the Work includes a "NOTICE" text file as part of its
87
+ distribution, You must include a readable copy of the
88
+ attribution notices contained within such NOTICE file, in
89
+ at least one of the following places: within a NOTICE text
90
+ file distributed as part of the Derivative Works; within
91
+ the Source form or documentation, if provided along with the
92
+ Derivative Works; or, within a display generated by the
93
+ Derivative Works, if and wherever such third-party notices
94
+ normally appear. The contents of the NOTICE file are for
95
+ informational purposes only and do not modify the License.
96
+ You may add Your own attribution notices within Derivative
97
+ Works that You distribute, alongside or in addition to the
98
+ NOTICE text from the Work, provided that such additional
99
+ attribution notices cannot be construed as modifying the License.
100
+
101
+ You may add Your own license statement for Your modifications and
102
+ may provide additional grant of rights to use, copy, modify, merge,
103
+ publish, distribute, sublicense, and/or sell copies of the Work.
104
+
105
+ Copyright 2025 Min Htet Myet (Mattral)
106
+
107
+ Licensed under the Apache License, Version 2.0 (the "License");
108
+ you may not use this file except in compliance with the License.
109
+ You may obtain a copy of the License at
110
+
111
+ http://www.apache.org/licenses/LICENSE-2.0
112
+
113
+ Unless required by applicable law or agreed to in writing, software
114
+ distributed under the License is distributed on an "AS IS" BASIS,
115
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
116
+ See the License for the specific language governing permissions and
117
+ limitations under the License.