Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
989ce66
ci(publish): add PyPI publish pipeline via Trusted Publishing (OIDC)
Apr 19, 2026
92c44e9
ci(publish): add PyPI publish pipeline via Trusted Publishing (OIDC) …
alphacrack Apr 19, 2026
a9752e5
chore: add OSS community health files
alphacrack Jul 19, 2026
18660b0
chore: add OSS community health files (issue templates, CoC, CODEOWNE…
alphacrack Jul 19, 2026
6704662
ci: add ci-ok aggregate gate job + Dependabot config
alphacrack Jul 19, 2026
1f0e424
Merge branch 'development' into chore/oss-community-health
alphacrack Jul 19, 2026
7b7322a
ci: add ci-ok aggregate gate job + Dependabot config (#13)
alphacrack Jul 19, 2026
21e8df9
fix(linter): accept augmented assignments
Sanjays2402 Jul 19, 2026
15e9d99
fix(linter): accept augmented assignments (#38)
alphacrack Jul 19, 2026
4e068ed
chore(deps): bump actions/upload-artifact from 4 to 7 (#14)
dependabot[bot] Jul 20, 2026
cb282bc
chore(deps): bump actions/setup-python from 5 to 6 (#15)
dependabot[bot] Jul 20, 2026
beab8aa
chore(deps): bump actions/checkout from 4 to 7 (#16)
dependabot[bot] Jul 20, 2026
3b91ee4
chore(deps): bump actions/download-artifact from 4 to 8 (#17)
dependabot[bot] Jul 20, 2026
b18b1aa
chore(deps-dev): update twine requirement from <6,>=4.0 to >=6.2.0,<7…
dependabot[bot] Jul 20, 2026
9dd6738
chore(deps-dev): update pytest-cov requirement (#20)
dependabot[bot] Jul 20, 2026
c133896
chore(deps-dev): update pytest-timeout requirement (#21)
dependabot[bot] Jul 20, 2026
0bfd5d0
chore: drop Python 3.9 support (EOL Oct 2025) (#52)
alphacrack Jul 23, 2026
e9554c6
chore(deps-dev): update pytest requirement from <9,>=7.4 to >=9.1.1,<…
dependabot[bot] Jul 23, 2026
9ca12ac
chore(deps-dev): update build requirement from <2,>=1.0 to >=1.5.0,<2…
dependabot[bot] Jul 23, 2026
090f90f
fix(linter): detect real function call sites (#48)
Sanjays2402 Jul 23, 2026
dcbac68
docs: add examples/README.md describing each example program (fixes #…
hanu-14 Jul 23, 2026
f54563b
ci: enforce coverage gate with fail_under = 85 (fixes #42) (#46)
hanu-14 Jul 23, 2026
ea68b13
release: v0.4.0 (#53)
alphacrack Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Default owner for everything in the repo.
* @alphacrack

# Security-sensitive paths: sandbox, transpiler string handling, CI/publish.
/maithili_dsl/cli.py @alphacrack
/maithili_dsl/transpiler/ @alphacrack
/.github/workflows/ @alphacrack
/SECURITY.md @alphacrack
69 changes: 69 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: 🐛 Bug report
description: Something in the transpiler, linter, sandbox, or CLI doesn't work as documented.
title: "[BUG] "
labels: ["bug", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug! धन्यवाद 🙏

⚠️ **Security issues** (sandbox escapes, exec bypasses) must NOT be reported here.
Use [private vulnerability reporting](https://github.com/alphacrack/python-maithili-dsl/security/advisories/new)
or the process in [SECURITY.md](https://github.com/alphacrack/python-maithili-dsl/blob/main/SECURITY.md).
- type: textarea
id: description
attributes:
label: What happened?
description: A clear description of the bug.
validations:
required: true
- type: textarea
id: repro
attributes:
label: Minimal .dmai reproduction
description: The smallest Maithili snippet that triggers the bug.
placeholder: |
छपाउ("यह में है")
render: text
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What you expected to happen (e.g. the transpiled Python, or output).
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
description: What actually happened. Paste the full output / traceback.
render: shell
validations:
required: true
- type: input
id: version
attributes:
label: python_maithili version
description: Output of `python_maithili --version`
placeholder: "0.3.0"
validations:
required: true
- type: input
id: environment
attributes:
label: Python version and OS
placeholder: "Python 3.12, macOS 15"
validations:
required: true
- type: checkboxes
id: checks
attributes:
label: Checks
options:
- label: I searched existing issues and this is not a duplicate.
required: true
- label: This is not a security vulnerability (those go through SECURITY.md).
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: 🔐 Report a security vulnerability
url: https://github.com/alphacrack/python-maithili-dsl/security/advisories/new
about: Sandbox escapes and exec bypasses must be reported privately — never as a public issue. See SECURITY.md.
- name: 💬 Questions & general discussion
url: https://github.com/alphacrack/python-maithili-dsl/blob/main/README.md
about: Check the README and docs first; for usage questions, open a blank issue with the "question" label.
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: ✨ Feature request
description: Propose a new capability for the DSL, CLI, or tooling.
title: "[FEATURE] "
labels: ["enhancement", "needs-triage"]
body:
- type: markdown
attributes:
value: |
For a **new Maithili keyword or module mapping**, please use the
dedicated "🔤 Keyword / mapping proposal" template instead.
- type: textarea
id: problem
attributes:
label: Problem
description: What problem does this solve? Who benefits?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: What you'd like to see, ideally with an example `.dmai` snippet.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Other approaches you thought about, and why they're worse.
- type: checkboxes
id: checks
attributes:
label: Checks
options:
- label: I searched existing issues and BACKLOG.md and this is not already tracked.
required: true
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/keyword_proposal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: 🔤 Keyword / mapping proposal
description: Propose a new Maithili keyword, builtin, or module-name mapping.
title: "[KEYWORD] "
labels: ["enhancement", "keyword-mapping", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Keyword choices shape the language for every Maithili speaker, so
native-speaker input on word choice is especially valuable here.
- type: input
id: maithili
attributes:
label: Proposed Maithili word (Devanagari)
placeholder: "जबतक"
validations:
required: true
- type: input
id: python
attributes:
label: Python equivalent
placeholder: "while"
validations:
required: true
- type: textarea
id: rationale
attributes:
label: Why this word?
description: |
Is this the natural Maithili term? Are there regional variants or
alternative spellings a reader might expect? Could it collide with
an existing keyword or with common identifier names?
validations:
required: true
- type: textarea
id: example
attributes:
label: Example usage
description: A short `.dmai` snippet showing the keyword in use, with the expected transpiled Python.
render: text
placeholder: |
गिनती = ०
जबतक गिनती < ५:
छपाउ(गिनती)
गिनती = गिनती + १
validations:
required: true
- type: dropdown
id: speaker
attributes:
label: Are you a Maithili speaker?
options:
- "Yes — native"
- "Yes — non-native / learner"
- "No — proposing on technical grounds only"
validations:
required: true
18 changes: 18 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
version: 2
updates:
# Keep GitHub Actions pinned versions current (checkout, setup-python, etc.)
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
target-branch: "development"
labels: ["infra", "needs-triage"]

# Dev dependencies (pytest, coverage tooling). The package itself has
# zero runtime deps, so this mostly tracks requirements-dev.txt.
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
target-branch: "development"
labels: ["infra", "needs-triage"]
24 changes: 20 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12"]

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
Expand Down Expand Up @@ -70,8 +70,24 @@ jobs:

- name: Upload coverage artifact
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: coverage-xml
path: coverage.xml
if-no-files-found: warn

# Aggregate gate: branch protection requires this single check instead of
# every matrix leg, so the matrix can change without touching repo settings.
ci-ok:
name: ci-ok
if: always()
needs: [test]
runs-on: ubuntu-latest
steps:
- name: Fail if any test job failed
run: |
if [ "${{ needs.test.result }}" != "success" ]; then
echo "test matrix result: ${{ needs.test.result }}"
exit 1
fi
echo "all test jobs green"
Loading