Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
27 changes: 27 additions & 0 deletions .clomonitor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0
#
# CLOMonitor metadata — used by LF AI & Data Foundation to track
# project maturity and best-practice adoption.
# See: https://clomonitor.io/docs/topics/checks/

# Documentation
documentation:
adopters: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/ADOPTERS.md"
changelog: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/CHANGELOG.md"
code_of_conduct: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/CODE_OF_CONDUCT.md"
contributing: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/CONTRIBUTING.md"
governance: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/GOVERNANCE.md"
maintainers: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/MAINTAINERS.md"
readme: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/README.md"
security: "https://github.com/botanu-ai/botanu-sdk-python/blob/main/SECURITY.md"

# License
license:
approved: true
spdx_id: "Apache-2.0"

# Best practices
best_practices:
dco: true
openssf_badge: false # TODO: apply at https://www.bestpractices.dev/
88 changes: 88 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0

name: Bug Report
description: Report a bug in the Botanu SDK
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug.
Please fill in the details below to help us reproduce and fix the issue.

- type: input
id: version
attributes:
label: Botanu SDK version
description: "Output of `python -c 'import botanu; print(botanu.__version__)'`"
placeholder: "0.1.0"
validations:
required: true

- type: input
id: python-version
attributes:
label: Python version
description: "Output of `python --version`"
placeholder: "3.12.1"
validations:
required: true

- type: dropdown
id: init-mode
attributes:
label: Initialization mode
options:
- Standalone (no existing TracerProvider)
- Attach (OTEL-native vendor — Splunk, Honeycomb, etc.)
- Alongside (proprietary agent — Datadog, New Relic, etc.)
- Unknown / not sure
validations:
required: true

- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of the bug.
validations:
required: true

- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Minimal code or steps to reproduce the issue.
render: python
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
description: What you expected to happen.
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual behavior
description: What actually happened. Include tracebacks if applicable.
render: shell
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional context
description: |
- OS and platform
- OTel SDK / instrumentation versions
- Existing observability vendor (Datadog, Splunk, etc.)
- Collector configuration
validations:
required: false
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0

blank_issues_enabled: false
contact_links:
- name: Questions & Discussions
url: https://github.com/botanu-ai/botanu-sdk-python/discussions
about: Ask questions and discuss ideas
- name: Security Vulnerabilities
url: https://github.com/botanu-ai/botanu-sdk-python/blob/main/SECURITY.md
about: Report security vulnerabilities privately (do NOT open a public issue)
53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0

name: Feature Request
description: Suggest a new feature or enhancement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for suggesting an improvement to Botanu SDK!

- type: textarea
id: problem
attributes:
label: Problem statement
description: What problem does this feature solve? Is this related to a frustration?
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: Describe the solution you'd like. Include API sketches if possible.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Any alternative approaches you've considered.
validations:
required: false

- type: dropdown
id: scope
attributes:
label: Which component does this affect?
multiple: true
options:
- Core SDK (bootstrap / attach)
- Run context / decorators
- Span processors
- Carrier propagation (SQS, Kafka, Celery)
- LLM / GenAI tracking
- Resource detection
- Collector configuration
- Documentation
- Other
validations:
required: true
38 changes: 38 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!-- SPDX-FileCopyrightText: 2026 The Botanu Authors -->
<!-- SPDX-License-Identifier: Apache-2.0 -->

## Summary

<!-- Brief description of what this PR does and why. -->

## Changes

<!-- Bulleted list of changes. -->

-

## Type of change

<!-- Check all that apply. -->

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [ ] CI / build / tooling

## Testing

<!-- How was this tested? Include commands, screenshots, or links. -->

- [ ] Unit tests pass (`pytest`)
- [ ] Lint passes (`ruff check`)
- [ ] Type check passes (`mypy`)

## Checklist

- [ ] My code follows the project's coding style
- [ ] I have added SPDX headers to new files
- [ ] I have added tests for my changes
- [ ] I have updated documentation if needed
- [ ] All commits are signed off (`git commit -s`) per the [DCO](../DCO)
104 changes: 104 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0

name: CI

on:
push:
branches: [main, developer-deborah]
pull_request:
branches: [main]

permissions:
contents: read

jobs:
# -------------------------------------------------------------------
# Lint & format check
# -------------------------------------------------------------------
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install ruff
- run: ruff check src/ tests/
- run: ruff format --check src/ tests/

# -------------------------------------------------------------------
# Type checking
# -------------------------------------------------------------------
typecheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install -e ".[dev]"
- run: mypy src/botanu/

# -------------------------------------------------------------------
# Test matrix — Python 3.9 → 3.13
# -------------------------------------------------------------------
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # hatch-vcs needs full history

- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: pip install -e ".[dev]"

- name: Run tests with coverage
run: pytest --cov=botanu --cov-report=xml --cov-report=term-missing

- name: Upload coverage
if: matrix.python-version == '3.12'
uses: codecov/codecov-action@v4
with:
file: coverage.xml
fail_ci_if_error: false

# -------------------------------------------------------------------
# Build verification — ensure the package builds cleanly
# -------------------------------------------------------------------
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: pip install build
- run: python -m build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/

# -------------------------------------------------------------------
# DCO sign-off check (required by Linux Foundation)
# -------------------------------------------------------------------
dco:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: DCO check
uses: dcoapp/app@v1
40 changes: 40 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# SPDX-FileCopyrightText: 2026 The Botanu Authors
# SPDX-License-Identifier: Apache-2.0

name: CodeQL

on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: "23 4 * * 1" # Weekly Monday 04:23 UTC

permissions:
contents: read

jobs:
analyze:
runs-on: ubuntu-latest
permissions:
security-events: write
strategy:
fail-fast: false
matrix:
language: [python]
steps:
- uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Autobuild
uses: github/codeql-action/autobuild@v3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
Loading
Loading