Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d2a791d
feat(PR-01): 基线与契约测试
ruicore Mar 20, 2026
afddaf4
feat(PR-02): Engineering and CI
ruicore Mar 23, 2026
1af2c0b
feat(PR-03A): transition to Ruff
ruicore Mar 23, 2026
9378356
feat(PR-03B): update CI
ruicore Mar 23, 2026
c6a9f41
feat(PR-03C): update template
ruicore Mar 23, 2026
778502b
feat(PR-03): src layout
ruicore Mar 23, 2026
7c9c8d8
feat(PR-04): add Pydantic Adaptor
ruicore Mar 23, 2026
4dcffc3
feat(PR-05): update pydantic V2
ruicore Mar 23, 2026
69fdde3
feat(PR-06): update python version to 3.12
ruicore Mar 23, 2026
4b01359
feat(PR-07): update structure and syntax
ruicore Mar 24, 2026
8b4cd9e
feat(PR-08): remove pandas
ruicore Mar 25, 2026
6671db9
feat(PR-09): use uv as package manager
ruicore Mar 26, 2026
958dc1e
feat(PR-10): make minio optional dependency
ruicore Mar 27, 2026
637ff58
feat(PR-11): i18n support
ruicore Mar 27, 2026
4813a26
feat(PR-12): update docs
ruicore Mar 27, 2026
095804f
feat(2.0.0rc1)
ruicore Mar 27, 2026
3c13f4f
fix(error): fix session error
ruicore Mar 28, 2026
6c9399e
refactor(pydantic): support validation using pydantic
ruicore Mar 28, 2026
b6ec4bd
refactor(typing): modern typing style
ruicore Mar 28, 2026
7cb402b
feat(docs): update readme
ruicore Mar 28, 2026
3f4da30
feat(docs): update readme
ruicore Mar 28, 2026
dac1224
feat(docs): update readme
ruicore Mar 28, 2026
e1e3d0d
feat(docs): update ci
ruicore Mar 28, 2026
43f85a6
feat(docs): prepare release
ruicore Mar 28, 2026
ded6afc
feat(docs): release
ruicore Mar 28, 2026
380119b
feat(ruff): fix ruff formatting before release
ruicore Mar 28, 2026
e00b246
feat(ci): add codecov config for release PRs
ruicore Mar 28, 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
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @RayCarterLab
53 changes: 53 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Bug report
description: Report a reproducible problem in ExcelAlchemy
title: "[Bug]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug.
Please include enough detail for us to reproduce the issue quickly.
- type: textarea
id: summary
attributes:
label: Summary
description: What happened?
placeholder: A clear and concise description of the bug.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction
description: Steps, sample code, or test data needed to reproduce the issue.
placeholder: |
1. Create model ...
2. Call ...
3. Observe ...
render: python
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What did you expect to happen instead?
validations:
required: true
- type: input
id: version
attributes:
label: ExcelAlchemy version
placeholder: 1.1.0
- type: input
id: python-version
attributes:
label: Python version
placeholder: "3.10"
- type: textarea
id: environment
attributes:
label: Environment details
description: OS, dependency versions, storage backend details, or anything else that may matter.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security issue
url: https://github.com/RayCarterLab/ExcelAlchemy/security/advisories/new
about: Please report sensitive security issues privately.
35 changes: 35 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Feature request
description: Suggest an improvement or new capability
title: "[Feature]: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thanks for sharing an idea.
Please describe the problem and the desired outcome as clearly as you can.
- type: textarea
id: problem
attributes:
label: Problem statement
description: What problem are you trying to solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: What would you like ExcelAlchemy to do?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What approaches or workarounds have you considered already?
- type: textarea
id: context
attributes:
label: Additional context
description: Add examples, screenshots, or related links if they help.
20 changes: 20 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Summary

- Describe the user-facing or engineering goal of this change.

## Changes

- List the most important implementation changes.

## Validation

- [ ] `uv run ruff format --check .`
- [ ] `uv run ruff check .`
- [ ] `uv run pyright`
- [ ] `uv run pytest --cov=excelalchemy --cov-report=term-missing:skip-covered tests`

## Checklist

- [ ] I updated documentation when behavior or workflows changed.
- [ ] I did not include generated files or local-only artifacts.
- [ ] I confirmed this change does not require additional release steps.
60 changes: 60 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
version: 2
updates:
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
day: 'monday'
time: '09:00'
timezone: 'Asia/Shanghai'
open-pull-requests-limit: 5
commit-message:
prefix: 'ci(deps)'
groups:
github-actions:
patterns:
- '*'
labels:
- 'dependencies'
- 'github-actions'

- package-ecosystem: 'pip'
directory: '/'
schedule:
interval: 'weekly'
day: 'monday'
time: '09:15'
timezone: 'Asia/Shanghai'
open-pull-requests-limit: 5
commit-message:
prefix: 'build(deps)'
groups:
python-production:
dependency-type: 'production'
patterns:
- '*'
python-development:
dependency-type: 'development'
patterns:
- '*'
labels:
- 'dependencies'
- 'python'

- package-ecosystem: 'pre-commit'
directory: '/'
schedule:
interval: 'weekly'
day: 'monday'
time: '09:30'
timezone: 'Asia/Shanghai'
open-pull-requests-limit: 3
commit-message:
prefix: 'chore(pre-commit)'
groups:
pre-commit-hooks:
patterns:
- '*'
labels:
- 'dependencies'
- 'pre-commit'
24 changes: 0 additions & 24 deletions .github/workflows/.precommit.yaml

This file was deleted.

127 changes: 127 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: CI

on:
pull_request:
push:
branches:
- main
- v2
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
ruff:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Check out code
uses: actions/checkout@v5

- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: |
pyproject.toml
uv.lock

- name: Sync development environment
run: uv sync --locked --extra development

- name: Run ruff
run: |
uv run ruff format --check .
uv run ruff check .

pyright:
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
steps:
- name: Check out code
uses: actions/checkout@v5

- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: |
pyproject.toml
uv.lock

- name: Sync development environment
run: uv sync --locked --extra development

- name: Run pyright
run: uv run pyright

tests:
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
env:
CODECOV_TOKEN: ${{ secrets.CODECOVEXCELALCHEMY }}
strategy:
fail-fast: false
matrix:
python-version: ['3.12', '3.13', '3.14']

steps:
- name: Check out code
uses: actions/checkout@v5

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
cache-dependency-glob: |
pyproject.toml
uv.lock

- name: Sync development environment
run: uv sync --locked --extra development

- name: Run test suite
run: |
uv run pytest --cov=excelalchemy --cov-report=term-missing:skip-covered --cov-report=xml:coverage.xml --junitxml=pytest.xml tests

- name: Upload coverage artifact
if: always() && matrix.python-version == '3.14'
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.python-version }}
path: |
coverage.xml
pytest.xml
if-no-files-found: warn
retention-days: 14

- name: Upload coverage to Codecov
if: matrix.python-version == '3.14' && env.CODECOV_TOKEN != ''
uses: codecov/codecov-action@v5
with:
files: coverage.xml
disable_search: true
token: ${{ env.CODECOV_TOKEN }}
51 changes: 0 additions & 51 deletions .github/workflows/jekyll-gh-pages.yml

This file was deleted.

Loading
Loading