typeshed_stats 24.5.21__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.
- typeshed_stats-24.5.21/.editorconfig +12 -0
- typeshed_stats-24.5.21/.gitattributes +2 -0
- typeshed_stats-24.5.21/.github/renovate.json5 +23 -0
- typeshed_stats-24.5.21/.github/workflows/check-requirements.yml +64 -0
- typeshed_stats-24.5.21/.github/workflows/publish.yml +52 -0
- typeshed_stats-24.5.21/.github/workflows/regen-examples-and-docs.yml +85 -0
- typeshed_stats-24.5.21/.github/workflows/test-website.yml +38 -0
- typeshed_stats-24.5.21/.github/workflows/test.yml +92 -0
- typeshed_stats-24.5.21/.github/workflows/typecheck.yml +88 -0
- typeshed_stats-24.5.21/.gitignore +78 -0
- typeshed_stats-24.5.21/.markdownlint.yaml +26 -0
- typeshed_stats-24.5.21/.pre-commit-config.yaml +54 -0
- typeshed_stats-24.5.21/LICENSE +19 -0
- typeshed_stats-24.5.21/PKG-INFO +167 -0
- typeshed_stats-24.5.21/README.md +62 -0
- typeshed_stats-24.5.21/examples/example.csv +166 -0
- typeshed_stats-24.5.21/examples/example.json +5601 -0
- typeshed_stats-24.5.21/examples/example.md +9369 -0
- typeshed_stats-24.5.21/mkdocs.yml +90 -0
- typeshed_stats-24.5.21/pyproject.toml +222 -0
- typeshed_stats-24.5.21/scripts/regenerate.py +68 -0
- typeshed_stats-24.5.21/scripts/runtests.py +112 -0
- typeshed_stats-24.5.21/src/typeshed_stats/__init__.py +20 -0
- typeshed_stats-24.5.21/src/typeshed_stats/__main__.py +13 -0
- typeshed_stats-24.5.21/src/typeshed_stats/_cli.py +331 -0
- typeshed_stats-24.5.21/src/typeshed_stats/_markdown_template.md.jinja +94 -0
- typeshed_stats-24.5.21/src/typeshed_stats/_version.py +16 -0
- typeshed_stats-24.5.21/src/typeshed_stats/gather.py +1414 -0
- typeshed_stats-24.5.21/src/typeshed_stats/py.typed +0 -0
- typeshed_stats-24.5.21/src/typeshed_stats/serialize.py +252 -0
- typeshed_stats-24.5.21/stats_website/.snippets/links.md +5 -0
- typeshed_stats-24.5.21/stats_website/.snippets/refs.md +3 -0
- typeshed_stats-24.5.21/stats_website/big_logo.png +0 -0
- typeshed_stats-24.5.21/stats_website/cli.md +11 -0
- typeshed_stats-24.5.21/stats_website/gather.md +48 -0
- typeshed_stats-24.5.21/stats_website/index.md +14 -0
- typeshed_stats-24.5.21/stats_website/javascripts/filtertable.js +21 -0
- typeshed_stats-24.5.21/stats_website/javascripts/tablesort.js +6 -0
- typeshed_stats-24.5.21/stats_website/logo.png +0 -0
- typeshed_stats-24.5.21/stats_website/serialize.md +19 -0
- typeshed_stats-24.5.21/stats_website/stats-csv.md +38 -0
- typeshed_stats-24.5.21/stats_website/stats.md +20 -0
- typeshed_stats-24.5.21/tests/__init__.py +0 -0
- typeshed_stats-24.5.21/tests/conftest.py +288 -0
- typeshed_stats-24.5.21/tests/test___all__.py +80 -0
- typeshed_stats-24.5.21/tests/test__cli.py +647 -0
- typeshed_stats-24.5.21/tests/test_gather.py +1235 -0
- typeshed_stats-24.5.21/tests/test_running_from_command_line.py +19 -0
- typeshed_stats-24.5.21/tests/test_serialize.py +145 -0
- typeshed_stats-24.5.21/website_macros.py +114 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
$schema: "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
+
extends: ["config:recommended"],
|
|
4
|
+
dependencyDashboard: true,
|
|
5
|
+
separateMajorMinor: false,
|
|
6
|
+
"pre-commit": {
|
|
7
|
+
enabled: true,
|
|
8
|
+
},
|
|
9
|
+
packageRules: [
|
|
10
|
+
{
|
|
11
|
+
groupName: "GitHub Actions",
|
|
12
|
+
matchManagers: ["github-actions"],
|
|
13
|
+
description: "Quarterly update of GitHub Action dependencies",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
groupName: "most test/lint dependencies",
|
|
17
|
+
matchManagers: ["pep621", "pre-commit"],
|
|
18
|
+
description: "Quarterly update of most test/lint dependencies",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
schedule: ["every 3 months on the first day of the month"],
|
|
22
|
+
suppressNotifications: ["prEditedNotification"],
|
|
23
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
name: Check requirements
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: main
|
|
6
|
+
paths:
|
|
7
|
+
- ".github/workflows/check-requirements.yml"
|
|
8
|
+
- "pyproject.toml"
|
|
9
|
+
pull_request:
|
|
10
|
+
paths:
|
|
11
|
+
- ".github/workflows/check-requirements.yml"
|
|
12
|
+
- "pyproject.toml"
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
schedule:
|
|
15
|
+
- cron: "0 0 * * *"
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
env:
|
|
21
|
+
FORCE_COLOR: 1 # Request colored output from CLI tools supporting it
|
|
22
|
+
|
|
23
|
+
concurrency:
|
|
24
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
25
|
+
cancel-in-progress: true
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
check-requirements:
|
|
29
|
+
name: Check requirements can all be installed together
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
steps:
|
|
32
|
+
- uses: actions/checkout@v4
|
|
33
|
+
- uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.10"
|
|
36
|
+
- name: Install uv
|
|
37
|
+
run: curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
38
|
+
- name: Check requirements can all be installed together
|
|
39
|
+
run: uv pip install -e '.[dev]' --system
|
|
40
|
+
|
|
41
|
+
create-issue-on-failure:
|
|
42
|
+
name: Create an issue if daily requirements check failed
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: check-requirements
|
|
45
|
+
if: >-
|
|
46
|
+
${{
|
|
47
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
48
|
+
&& always()
|
|
49
|
+
&& github.event_name == 'schedule'
|
|
50
|
+
&& needs.check-requirements.result == 'failure'
|
|
51
|
+
}}
|
|
52
|
+
permissions:
|
|
53
|
+
issues: write
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/github-script@v7
|
|
56
|
+
with:
|
|
57
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
script: |
|
|
59
|
+
await github.rest.issues.create({
|
|
60
|
+
owner: "AlexWaygood",
|
|
61
|
+
repo: "typeshed-stats",
|
|
62
|
+
title: `Daily requirements check failed on ${new Date().toDateString()}`,
|
|
63
|
+
body: "Runs are listed here: https://github.com/AlexWaygood/typeshed-stats/actions/workflows/check-requirements.yml",
|
|
64
|
+
})
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Based on
|
|
2
|
+
# https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
|
|
3
|
+
|
|
4
|
+
name: Publish Python distributions to PyPI
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
schedule:
|
|
10
|
+
- cron: "0 0 * * 0"
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
concurrency:
|
|
16
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
17
|
+
cancel-in-progress: true
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
build-n-publish:
|
|
21
|
+
name: Build and publish Python distributions to PyPI
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
permissions:
|
|
24
|
+
# needed for PyPI trusted publishing
|
|
25
|
+
id-token: write
|
|
26
|
+
contents: write
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
uses: actions/setup-python@v5
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.12"
|
|
33
|
+
- name: Install uv
|
|
34
|
+
run: curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
35
|
+
- run: uv pip install build --system
|
|
36
|
+
- run: uv pip freeze
|
|
37
|
+
- if: ${{ github.event_name != 'push' }}
|
|
38
|
+
env:
|
|
39
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
40
|
+
run: |
|
|
41
|
+
DATE=$(date '+%y.%-m.%-d')
|
|
42
|
+
echo $DATE
|
|
43
|
+
git config --global user.name releasebot
|
|
44
|
+
git config --global user.email ""
|
|
45
|
+
git tag -a $DATE -m ""
|
|
46
|
+
git push --tags
|
|
47
|
+
gh release create $DATE --notes "Automated weekly release"
|
|
48
|
+
- name: Build a binary wheel and a source tarball
|
|
49
|
+
run: python -m build --outdir dist/ .
|
|
50
|
+
- name: Publish distribution to PyPI
|
|
51
|
+
if: ${{ github.event_name != 'push' || startsWith(github.ref, 'refs/tags') }}
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
name: Regenerate examples and docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 */12 * * *"
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
paths-ignore:
|
|
10
|
+
- "tests/**"
|
|
11
|
+
- "examples/**"
|
|
12
|
+
- "**.json"
|
|
13
|
+
- "**.csv"
|
|
14
|
+
- "**.html"
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
regen_examples_and_docs:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- name: git config
|
|
23
|
+
run: |
|
|
24
|
+
git config --global user.name statsabot
|
|
25
|
+
git config --global user.email ''
|
|
26
|
+
- uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: "3.11"
|
|
29
|
+
- uses: hynek/setup-cached-uv@v1
|
|
30
|
+
- run: uv pip install -e .[docs] --system
|
|
31
|
+
- run: uv pip freeze
|
|
32
|
+
- name: Regenerate examples and docs
|
|
33
|
+
id: regen
|
|
34
|
+
run: python scripts/regenerate.py --download-typeshed
|
|
35
|
+
- name: Check the generated files with pre-commit
|
|
36
|
+
id: lint
|
|
37
|
+
uses: pre-commit/action@v3.0.1
|
|
38
|
+
- name: Commit and push the changes
|
|
39
|
+
id: commit
|
|
40
|
+
if: >-
|
|
41
|
+
${{
|
|
42
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
43
|
+
&& always()
|
|
44
|
+
&& steps.regen.outcome == 'success'
|
|
45
|
+
&& steps.lint.outcome == 'success'
|
|
46
|
+
}}
|
|
47
|
+
run: |
|
|
48
|
+
git add .
|
|
49
|
+
git diff --staged --quiet || git commit -m "👷 Automated regeneration of examples and docs"
|
|
50
|
+
git push
|
|
51
|
+
- name: Deploy docs
|
|
52
|
+
if: >-
|
|
53
|
+
${{
|
|
54
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
55
|
+
&& always()
|
|
56
|
+
&& steps.regen.outcome == 'success'
|
|
57
|
+
&& steps.lint.outcome == 'success'
|
|
58
|
+
&& steps.commit.outcome == 'success'
|
|
59
|
+
}}
|
|
60
|
+
run: mkdocs gh-deploy -m "🚀 Deploying {sha} with MkDocs {version}" --force
|
|
61
|
+
|
|
62
|
+
create-issue-on-failure:
|
|
63
|
+
name: Create an issue if the automated regeneration failed
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
needs: [regen_examples_and_docs]
|
|
66
|
+
if: >-
|
|
67
|
+
${{
|
|
68
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
69
|
+
&& always()
|
|
70
|
+
&& github.event_name == 'schedule'
|
|
71
|
+
&& needs.regen_examples_and_docs.result == 'failure'
|
|
72
|
+
}}
|
|
73
|
+
permissions:
|
|
74
|
+
issues: write
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/github-script@v7
|
|
77
|
+
with:
|
|
78
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
79
|
+
script: |
|
|
80
|
+
await github.rest.issues.create({
|
|
81
|
+
owner: "AlexWaygood",
|
|
82
|
+
repo: "typeshed-stats",
|
|
83
|
+
title: `Automated regeneration of examples failed on ${new Date().toDateString()}`,
|
|
84
|
+
body: "Runs are listed here: https://github.com/AlexWaygood/typeshed-stats/actions/workflows/regen-examples-and-docs.yml",
|
|
85
|
+
})
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Test website generation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "tests/**"
|
|
8
|
+
- "examples/**"
|
|
9
|
+
- "**.json"
|
|
10
|
+
- "**.csv"
|
|
11
|
+
- "**.html"
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
test-website:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.11"
|
|
25
|
+
- uses: hynek/setup-cached-uv@v1
|
|
26
|
+
- run: uv pip install -e .[docs] --system
|
|
27
|
+
- run: uv pip freeze
|
|
28
|
+
- name: Regenerate examples and docs
|
|
29
|
+
run: python scripts/regenerate.py --download-typeshed
|
|
30
|
+
- name: Check the generated files with pre-commit
|
|
31
|
+
uses: pre-commit/action@v3.0.1
|
|
32
|
+
- name: Build docs
|
|
33
|
+
run: mkdocs build --strict
|
|
34
|
+
- name: Upload docs
|
|
35
|
+
uses: actions/upload-artifact@v4
|
|
36
|
+
with:
|
|
37
|
+
name: doc-html
|
|
38
|
+
path: site
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: main
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "examples/**"
|
|
8
|
+
- "scripts/**"
|
|
9
|
+
- "stats_website/**"
|
|
10
|
+
- "**.md"
|
|
11
|
+
- "**.json"
|
|
12
|
+
- "**.csv"
|
|
13
|
+
- "**.html"
|
|
14
|
+
pull_request:
|
|
15
|
+
paths-ignore:
|
|
16
|
+
- "examples/**"
|
|
17
|
+
- "scripts/**"
|
|
18
|
+
- "stats_website/**"
|
|
19
|
+
- "**.md"
|
|
20
|
+
- "**.json"
|
|
21
|
+
- "**.csv"
|
|
22
|
+
- "**.html"
|
|
23
|
+
workflow_dispatch:
|
|
24
|
+
schedule:
|
|
25
|
+
- cron: "0 0 * * *"
|
|
26
|
+
|
|
27
|
+
permissions:
|
|
28
|
+
contents: read
|
|
29
|
+
|
|
30
|
+
env:
|
|
31
|
+
FORCE_COLOR: 1 # Request colored output from CLI tools supporting it
|
|
32
|
+
PY_COLORS: 1 # Recognized by the `py` package, dependency of `pytest`
|
|
33
|
+
# TERM is needed for FORCE_COLOR to work on mypy on Ubuntu,
|
|
34
|
+
# see https://github.com/python/mypy/issues/13817
|
|
35
|
+
TERM: xterm-256color
|
|
36
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
37
|
+
|
|
38
|
+
concurrency:
|
|
39
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
40
|
+
cancel-in-progress: true
|
|
41
|
+
|
|
42
|
+
jobs:
|
|
43
|
+
pytest-tests:
|
|
44
|
+
name: Run tests with pytest
|
|
45
|
+
runs-on: ${{ matrix.os }}
|
|
46
|
+
strategy:
|
|
47
|
+
matrix:
|
|
48
|
+
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
|
|
49
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
50
|
+
fail-fast: false
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
55
|
+
uses: actions/setup-python@v5
|
|
56
|
+
with:
|
|
57
|
+
python-version: ${{ matrix.python-version }}
|
|
58
|
+
allow-prereleases: true
|
|
59
|
+
- uses: hynek/setup-cached-uv@v1
|
|
60
|
+
- name: Install dependencies
|
|
61
|
+
run: uv pip install -e ".[pytest]" --system
|
|
62
|
+
- run: uv pip freeze
|
|
63
|
+
- name: Run tests under coverage
|
|
64
|
+
shell: bash
|
|
65
|
+
run: |
|
|
66
|
+
coverage run -m pytest --doctest-modules
|
|
67
|
+
coverage report --no-skip-covered
|
|
68
|
+
|
|
69
|
+
create-issue-on-failure:
|
|
70
|
+
name: Create an issue if daily test failed
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
needs: pytest-tests
|
|
73
|
+
if: >-
|
|
74
|
+
${{
|
|
75
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
76
|
+
&& always()
|
|
77
|
+
&& github.event_name == 'schedule'
|
|
78
|
+
&& needs.pytest-tests.result == 'failure'
|
|
79
|
+
}}
|
|
80
|
+
permissions:
|
|
81
|
+
issues: write
|
|
82
|
+
steps:
|
|
83
|
+
- uses: actions/github-script@v7
|
|
84
|
+
with:
|
|
85
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
86
|
+
script: |
|
|
87
|
+
await github.rest.issues.create({
|
|
88
|
+
owner: "AlexWaygood",
|
|
89
|
+
repo: "typeshed-stats",
|
|
90
|
+
title: `Daily test failed on ${new Date().toDateString()}`,
|
|
91
|
+
body: "Runs are listed here: https://github.com/AlexWaygood/typeshed-stats/actions/workflows/test.yml",
|
|
92
|
+
})
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: Typecheck
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: main
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "**.json"
|
|
8
|
+
- "**.md"
|
|
9
|
+
- "**.csv"
|
|
10
|
+
- "**.html"
|
|
11
|
+
pull_request:
|
|
12
|
+
paths-ignore:
|
|
13
|
+
- "**.json"
|
|
14
|
+
- "**.md"
|
|
15
|
+
- "**.csv"
|
|
16
|
+
- "**.html"
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
schedule:
|
|
19
|
+
- cron: "0 0 * * *"
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
FORCE_COLOR: 1 # Request colored output from CLI tools supporting it
|
|
26
|
+
TERM: xterm-256color # needed for FORCE_COLOR to work on mypy on Ubuntu, see https://github.com/python/mypy/issues/13817
|
|
27
|
+
|
|
28
|
+
concurrency:
|
|
29
|
+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
|
30
|
+
cancel-in-progress: true
|
|
31
|
+
|
|
32
|
+
jobs:
|
|
33
|
+
mypy:
|
|
34
|
+
name: Check code with mypy
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v4
|
|
38
|
+
- uses: actions/setup-python@v5
|
|
39
|
+
with:
|
|
40
|
+
python-version: "3.11"
|
|
41
|
+
- uses: hynek/setup-cached-uv@v1
|
|
42
|
+
- run: uv pip install -e ".[typecheck]" --system
|
|
43
|
+
- run: uv pip freeze
|
|
44
|
+
- run: mypy
|
|
45
|
+
|
|
46
|
+
pyright:
|
|
47
|
+
name: Run pyright on the codebase
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v4
|
|
51
|
+
- uses: actions/setup-python@v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.10"
|
|
54
|
+
- uses: hynek/setup-cached-uv@v1
|
|
55
|
+
- run: uv pip install -e ".[typecheck]" --system
|
|
56
|
+
- run: uv pip freeze
|
|
57
|
+
- name: Run pyright
|
|
58
|
+
uses: jakebailey/pyright-action@v2
|
|
59
|
+
with:
|
|
60
|
+
version: "1.1.331"
|
|
61
|
+
|
|
62
|
+
create-issue-on-failure:
|
|
63
|
+
name: Create an issue if daily typecheck failed
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
needs: [mypy, pyright]
|
|
66
|
+
if: >-
|
|
67
|
+
${{
|
|
68
|
+
github.repository == 'AlexWaygood/typeshed-stats'
|
|
69
|
+
&& always()
|
|
70
|
+
&& github.event_name == 'schedule'
|
|
71
|
+
&& (
|
|
72
|
+
needs.mypy.result == 'failure'
|
|
73
|
+
|| needs.pyright.result == 'failure'
|
|
74
|
+
)
|
|
75
|
+
}}
|
|
76
|
+
permissions:
|
|
77
|
+
issues: write
|
|
78
|
+
steps:
|
|
79
|
+
- uses: actions/github-script@v7
|
|
80
|
+
with:
|
|
81
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
82
|
+
script: |
|
|
83
|
+
await github.rest.issues.create({
|
|
84
|
+
owner: "AlexWaygood",
|
|
85
|
+
repo: "typeshed-stats",
|
|
86
|
+
title: `Daily typecheck failed on ${new Date().toDateString()}`,
|
|
87
|
+
body: "Runs are listed here: https://github.com/AlexWaygood/typeshed-stats/actions/workflows/typecheck.yml",
|
|
88
|
+
})
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# C extensions
|
|
6
|
+
*.so
|
|
7
|
+
|
|
8
|
+
# Distribution / packaging
|
|
9
|
+
.Python
|
|
10
|
+
/env/
|
|
11
|
+
/build/
|
|
12
|
+
/develop-eggs/
|
|
13
|
+
/dist/
|
|
14
|
+
/downloads/
|
|
15
|
+
/eggs/
|
|
16
|
+
/lib/
|
|
17
|
+
/lib64/
|
|
18
|
+
/parts/
|
|
19
|
+
/sdist/
|
|
20
|
+
/var/
|
|
21
|
+
*.egg-info/
|
|
22
|
+
.installed.cfg
|
|
23
|
+
*.egg
|
|
24
|
+
|
|
25
|
+
# PyInstaller
|
|
26
|
+
# Usually these files are written by a python script from a template
|
|
27
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
28
|
+
*.manifest
|
|
29
|
+
*.spec
|
|
30
|
+
|
|
31
|
+
# Installer logs
|
|
32
|
+
pip-log.txt
|
|
33
|
+
pip-delete-this-directory.txt
|
|
34
|
+
|
|
35
|
+
# Unit test / coverage reports
|
|
36
|
+
htmlcov/
|
|
37
|
+
.tox/
|
|
38
|
+
.coverage
|
|
39
|
+
.cache
|
|
40
|
+
nosetests.xml
|
|
41
|
+
coverage.xml
|
|
42
|
+
stubtest-output*
|
|
43
|
+
|
|
44
|
+
# Translations
|
|
45
|
+
*.mo
|
|
46
|
+
*.pot
|
|
47
|
+
|
|
48
|
+
# Django stuff:
|
|
49
|
+
*.log
|
|
50
|
+
|
|
51
|
+
# Sphinx documentation
|
|
52
|
+
docs/_build/
|
|
53
|
+
|
|
54
|
+
# PyBuilder
|
|
55
|
+
target/
|
|
56
|
+
|
|
57
|
+
# Local utility scripts
|
|
58
|
+
analyze.py
|
|
59
|
+
|
|
60
|
+
# Editor backup files
|
|
61
|
+
*~
|
|
62
|
+
.*.sw?
|
|
63
|
+
.vscode/
|
|
64
|
+
.idea/
|
|
65
|
+
|
|
66
|
+
# virtual environments
|
|
67
|
+
.venv*/
|
|
68
|
+
venv/
|
|
69
|
+
env/
|
|
70
|
+
|
|
71
|
+
# Mypy cache
|
|
72
|
+
.mypy_cache/
|
|
73
|
+
|
|
74
|
+
# mkdocs documentation
|
|
75
|
+
site/
|
|
76
|
+
|
|
77
|
+
# autogenerated by hatch-vcs at build time
|
|
78
|
+
src/typeshed_stats/_version.py
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Unordered list style
|
|
2
|
+
MD004:
|
|
3
|
+
style: "dash"
|
|
4
|
+
|
|
5
|
+
# Unordered list indentation
|
|
6
|
+
MD007:
|
|
7
|
+
indent: 4
|
|
8
|
+
|
|
9
|
+
# Ordered list item prefix
|
|
10
|
+
MD029:
|
|
11
|
+
style: "one"
|
|
12
|
+
|
|
13
|
+
# code block style
|
|
14
|
+
MD046:
|
|
15
|
+
style: "fenced"
|
|
16
|
+
|
|
17
|
+
# code fence style
|
|
18
|
+
MD048:
|
|
19
|
+
style: "backtick"
|
|
20
|
+
|
|
21
|
+
# Disabled rules
|
|
22
|
+
no-inline-html: false
|
|
23
|
+
first-line-h1: false
|
|
24
|
+
no-duplicate-heading: false
|
|
25
|
+
line-length: false
|
|
26
|
+
reference-links-images: false
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v4.5.0 # must match pyproject.toml
|
|
4
|
+
hooks:
|
|
5
|
+
- id: trailing-whitespace
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
- id: check-toml
|
|
9
|
+
- id: check-json
|
|
10
|
+
- id: check-merge-conflict
|
|
11
|
+
- id: check-case-conflict
|
|
12
|
+
- id: name-tests-test
|
|
13
|
+
args: [--pytest-test-first]
|
|
14
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
15
|
+
rev: v0.3.5 # must match pyproject.toml
|
|
16
|
+
hooks:
|
|
17
|
+
- id: ruff
|
|
18
|
+
- id: ruff-format
|
|
19
|
+
- repo: https://github.com/adamchainz/blacken-docs
|
|
20
|
+
rev: 1.16.0 # must match pyproject.toml
|
|
21
|
+
hooks:
|
|
22
|
+
- id: blacken-docs
|
|
23
|
+
additional_dependencies: [black==24.3.0]
|
|
24
|
+
- repo: https://github.com/codespell-project/codespell
|
|
25
|
+
rev: v2.2.6
|
|
26
|
+
hooks:
|
|
27
|
+
- id: codespell
|
|
28
|
+
- repo: https://github.com/alan-turing-institute/CleverCSV-pre-commit
|
|
29
|
+
rev: v0.8.2
|
|
30
|
+
hooks:
|
|
31
|
+
- id: clevercsv-standardize
|
|
32
|
+
- repo: https://github.com/igorshubovych/markdownlint-cli
|
|
33
|
+
rev: v0.39.0
|
|
34
|
+
hooks:
|
|
35
|
+
- id: markdownlint-fix
|
|
36
|
+
args: ["--ignore", "stats_website/.snippets"]
|
|
37
|
+
- id: markdownlint
|
|
38
|
+
args: ["--ignore", "stats_website/.snippets"]
|
|
39
|
+
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
40
|
+
rev: v4.0.0-alpha.8
|
|
41
|
+
hooks:
|
|
42
|
+
- id: prettier
|
|
43
|
+
exclude: "^examples/.*"
|
|
44
|
+
exclude_types: ["markdown"]
|
|
45
|
+
- repo: meta
|
|
46
|
+
hooks:
|
|
47
|
+
- id: check-hooks-apply
|
|
48
|
+
|
|
49
|
+
ci:
|
|
50
|
+
autofix_commit_msg: "[pre-commit.ci] auto fixes from pre-commit.com hooks"
|
|
51
|
+
autofix_prs: true
|
|
52
|
+
autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate"
|
|
53
|
+
autoupdate_schedule: quarterly
|
|
54
|
+
submodules: false
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2018 The Python Packaging Authority
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|