Skip to content

Commit b959da0

Browse files
authored
Merge pull request #49 from RayCarterLab/v2
release: ship ExcelAlchemy 2.0.0
2 parents 4ab69f2 + e00b246 commit b959da0

180 files changed

Lines changed: 10025 additions & 4537 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @RayCarterLab
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Bug report
2+
description: Report a reproducible problem in ExcelAlchemy
3+
title: "[Bug]: "
4+
labels:
5+
- bug
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for taking the time to report a bug.
11+
Please include enough detail for us to reproduce the issue quickly.
12+
- type: textarea
13+
id: summary
14+
attributes:
15+
label: Summary
16+
description: What happened?
17+
placeholder: A clear and concise description of the bug.
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: reproduction
22+
attributes:
23+
label: Reproduction
24+
description: Steps, sample code, or test data needed to reproduce the issue.
25+
placeholder: |
26+
1. Create model ...
27+
2. Call ...
28+
3. Observe ...
29+
render: python
30+
validations:
31+
required: true
32+
- type: textarea
33+
id: expected
34+
attributes:
35+
label: Expected behavior
36+
description: What did you expect to happen instead?
37+
validations:
38+
required: true
39+
- type: input
40+
id: version
41+
attributes:
42+
label: ExcelAlchemy version
43+
placeholder: 1.1.0
44+
- type: input
45+
id: python-version
46+
attributes:
47+
label: Python version
48+
placeholder: "3.10"
49+
- type: textarea
50+
id: environment
51+
attributes:
52+
label: Environment details
53+
description: OS, dependency versions, storage backend details, or anything else that may matter.

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security issue
4+
url: https://github.com/RayCarterLab/ExcelAlchemy/security/advisories/new
5+
about: Please report sensitive security issues privately.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Feature request
2+
description: Suggest an improvement or new capability
3+
title: "[Feature]: "
4+
labels:
5+
- enhancement
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for sharing an idea.
11+
Please describe the problem and the desired outcome as clearly as you can.
12+
- type: textarea
13+
id: problem
14+
attributes:
15+
label: Problem statement
16+
description: What problem are you trying to solve?
17+
validations:
18+
required: true
19+
- type: textarea
20+
id: proposal
21+
attributes:
22+
label: Proposed solution
23+
description: What would you like ExcelAlchemy to do?
24+
validations:
25+
required: true
26+
- type: textarea
27+
id: alternatives
28+
attributes:
29+
label: Alternatives considered
30+
description: What approaches or workarounds have you considered already?
31+
- type: textarea
32+
id: context
33+
attributes:
34+
label: Additional context
35+
description: Add examples, screenshots, or related links if they help.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
## Summary
2+
3+
- Describe the user-facing or engineering goal of this change.
4+
5+
## Changes
6+
7+
- List the most important implementation changes.
8+
9+
## Validation
10+
11+
- [ ] `uv run ruff format --check .`
12+
- [ ] `uv run ruff check .`
13+
- [ ] `uv run pyright`
14+
- [ ] `uv run pytest --cov=excelalchemy --cov-report=term-missing:skip-covered tests`
15+
16+
## Checklist
17+
18+
- [ ] I updated documentation when behavior or workflows changed.
19+
- [ ] I did not include generated files or local-only artifacts.
20+
- [ ] I confirmed this change does not require additional release steps.

.github/dependabot.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: 'github-actions'
4+
directory: '/'
5+
schedule:
6+
interval: 'weekly'
7+
day: 'monday'
8+
time: '09:00'
9+
timezone: 'Asia/Shanghai'
10+
open-pull-requests-limit: 5
11+
commit-message:
12+
prefix: 'ci(deps)'
13+
groups:
14+
github-actions:
15+
patterns:
16+
- '*'
17+
labels:
18+
- 'dependencies'
19+
- 'github-actions'
20+
21+
- package-ecosystem: 'pip'
22+
directory: '/'
23+
schedule:
24+
interval: 'weekly'
25+
day: 'monday'
26+
time: '09:15'
27+
timezone: 'Asia/Shanghai'
28+
open-pull-requests-limit: 5
29+
commit-message:
30+
prefix: 'build(deps)'
31+
groups:
32+
python-production:
33+
dependency-type: 'production'
34+
patterns:
35+
- '*'
36+
python-development:
37+
dependency-type: 'development'
38+
patterns:
39+
- '*'
40+
labels:
41+
- 'dependencies'
42+
- 'python'
43+
44+
- package-ecosystem: 'pre-commit'
45+
directory: '/'
46+
schedule:
47+
interval: 'weekly'
48+
day: 'monday'
49+
time: '09:30'
50+
timezone: 'Asia/Shanghai'
51+
open-pull-requests-limit: 3
52+
commit-message:
53+
prefix: 'chore(pre-commit)'
54+
groups:
55+
pre-commit-hooks:
56+
patterns:
57+
- '*'
58+
labels:
59+
- 'dependencies'
60+
- 'pre-commit'

.github/workflows/.precommit.yaml

Lines changed: 0 additions & 24 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
- v2
9+
workflow_dispatch:
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
13+
cancel-in-progress: true
14+
15+
permissions:
16+
contents: read
17+
18+
jobs:
19+
ruff:
20+
runs-on: ubuntu-latest
21+
timeout-minutes: 10
22+
permissions:
23+
contents: read
24+
steps:
25+
- name: Check out code
26+
uses: actions/checkout@v5
27+
28+
- name: Set up Python 3.14
29+
uses: actions/setup-python@v6
30+
with:
31+
python-version: '3.14'
32+
- name: Set up uv
33+
uses: astral-sh/setup-uv@v7
34+
with:
35+
enable-cache: true
36+
cache-dependency-glob: |
37+
pyproject.toml
38+
uv.lock
39+
40+
- name: Sync development environment
41+
run: uv sync --locked --extra development
42+
43+
- name: Run ruff
44+
run: |
45+
uv run ruff format --check .
46+
uv run ruff check .
47+
48+
pyright:
49+
runs-on: ubuntu-latest
50+
timeout-minutes: 10
51+
permissions:
52+
contents: read
53+
steps:
54+
- name: Check out code
55+
uses: actions/checkout@v5
56+
57+
- name: Set up Python 3.14
58+
uses: actions/setup-python@v6
59+
with:
60+
python-version: '3.14'
61+
- name: Set up uv
62+
uses: astral-sh/setup-uv@v7
63+
with:
64+
enable-cache: true
65+
cache-dependency-glob: |
66+
pyproject.toml
67+
uv.lock
68+
69+
- name: Sync development environment
70+
run: uv sync --locked --extra development
71+
72+
- name: Run pyright
73+
run: uv run pyright
74+
75+
tests:
76+
runs-on: ubuntu-latest
77+
timeout-minutes: 20
78+
permissions:
79+
contents: read
80+
env:
81+
CODECOV_TOKEN: ${{ secrets.CODECOVEXCELALCHEMY }}
82+
strategy:
83+
fail-fast: false
84+
matrix:
85+
python-version: ['3.12', '3.13', '3.14']
86+
87+
steps:
88+
- name: Check out code
89+
uses: actions/checkout@v5
90+
91+
- name: Set up Python ${{ matrix.python-version }}
92+
uses: actions/setup-python@v6
93+
with:
94+
python-version: ${{ matrix.python-version }}
95+
- name: Set up uv
96+
uses: astral-sh/setup-uv@v7
97+
with:
98+
enable-cache: true
99+
cache-dependency-glob: |
100+
pyproject.toml
101+
uv.lock
102+
103+
- name: Sync development environment
104+
run: uv sync --locked --extra development
105+
106+
- name: Run test suite
107+
run: |
108+
uv run pytest --cov=excelalchemy --cov-report=term-missing:skip-covered --cov-report=xml:coverage.xml --junitxml=pytest.xml tests
109+
110+
- name: Upload coverage artifact
111+
if: always() && matrix.python-version == '3.14'
112+
uses: actions/upload-artifact@v4
113+
with:
114+
name: test-reports-${{ matrix.python-version }}
115+
path: |
116+
coverage.xml
117+
pytest.xml
118+
if-no-files-found: warn
119+
retention-days: 14
120+
121+
- name: Upload coverage to Codecov
122+
if: matrix.python-version == '3.14' && env.CODECOV_TOKEN != ''
123+
uses: codecov/codecov-action@v5
124+
with:
125+
files: coverage.xml
126+
disable_search: true
127+
token: ${{ env.CODECOV_TOKEN }}

.github/workflows/jekyll-gh-pages.yml

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)