-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/master' into fix_4610
- Loading branch information
Showing
935 changed files
with
65,141 additions
and
7,310 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
name: Run mypy_primer | ||
|
||
on: | ||
# Only run on PR, since we diff against master | ||
pull_request: | ||
paths-ignore: | ||
- 'docs/**' | ||
- '**/*.rst' | ||
- '**/*.md' | ||
- 'mypyc/**' | ||
|
||
jobs: | ||
mypy_primer: | ||
name: Run | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
shard-index: [0, 1, 2] | ||
fail-fast: false | ||
steps: | ||
- uses: actions/checkout@v2 | ||
with: | ||
path: mypy_to_test | ||
fetch-depth: 0 | ||
- uses: actions/setup-python@v2 | ||
with: | ||
python-version: 3.8 | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install -U pip | ||
pip install git+https://github.com/hauntsaninja/mypy_primer.git | ||
- name: Run mypy_primer | ||
shell: bash | ||
run: | | ||
cd mypy_to_test | ||
echo "new commit" | ||
git rev-list --format=%s --max-count=1 $GITHUB_SHA | ||
git checkout -b upstream_master origin/master | ||
echo "base commit" | ||
git rev-list --format=%s --max-count=1 upstream_master | ||
echo '' | ||
cd .. | ||
# fail action if exit code isn't zero or one | ||
( | ||
mypy_primer \ | ||
--repo mypy_to_test \ | ||
--new $GITHUB_SHA --old upstream_master \ | ||
--num-shards 3 --shard-index ${{ matrix.shard-index }} \ | ||
--debug \ | ||
--output concise \ | ||
| tee diff.txt | ||
) || [ $? -eq 1 ] | ||
- name: Upload mypy_primer diff | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: mypy_primer_diff_${{ matrix.shard-index }} | ||
path: diff.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
name: Comment with mypy_primer diff | ||
|
||
on: | ||
# pull_request_target gives us access to a write token which we need to post a comment | ||
# The presence of a write token means that we can't run any untrusted code (i.e. malicious PRs), | ||
# which is why this its own workflow. Github Actions doesn't make it easy for workflows to talk to | ||
# each other, so the approach here is to poll for workflow runs, find the mypy_primer run for our | ||
# commit, wait till it's completed, and download and post the diff. | ||
pull_request_target: | ||
paths-ignore: | ||
- 'docs/**' | ||
- '**/*.rst' | ||
- '**/*.md' | ||
- 'mypyc/**' | ||
|
||
jobs: | ||
mypy_primer: | ||
name: Comment | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Install dependencies | ||
run: npm install adm-zip | ||
- name: Post comment | ||
uses: actions/github-script@v3 | ||
with: | ||
github-token: ${{secrets.GITHUB_TOKEN}} | ||
script: | | ||
const AdmZip = require(`${process.env.GITHUB_WORKSPACE}/node_modules/adm-zip`) | ||
// Because of pull_request_target, context.sha is the PR base branch | ||
// So we need to ask Github for the SHA of the PR's head commit | ||
const pull_request = await github.pulls.get({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
pull_number: context.issue.number, | ||
}) | ||
const pr_commit_sha = pull_request.data.head.sha | ||
console.log("Looking for mypy_primer run for commit:", pr_commit_sha) | ||
// Find the mypy_primer run for our commit and wait till it's completed | ||
// We wait up to an hour before timing out | ||
async function check_mypy_primer() { | ||
// We're only looking at the first page, so in theory if we open enough PRs around | ||
// the same time, this will fail to find the run. | ||
const response = await github.actions.listWorkflowRuns({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
workflow_id: "mypy_primer.yml", | ||
}) | ||
if (response) { | ||
return response.data.workflow_runs.find(run => run.head_sha == pr_commit_sha) | ||
} | ||
return undefined | ||
} | ||
const end_time = Number(new Date()) + 60 * 60 * 1000 | ||
let primer_run = await check_mypy_primer() | ||
while (!primer_run || primer_run.status != "completed") { | ||
if (Number(new Date()) > end_time) { | ||
throw Error("Timed out waiting for mypy_primer") | ||
} | ||
console.log("Waiting for mypy_primer to complete...") | ||
await new Promise(r => setTimeout(r, 10000)) | ||
primer_run = await check_mypy_primer() | ||
} | ||
console.log("Found mypy_primer run!") | ||
console.log(primer_run) | ||
// Download artifact(s) from the run | ||
const artifacts = await github.actions.listWorkflowRunArtifacts({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
run_id: primer_run.id, | ||
}) | ||
const filtered_artifacts = artifacts.data.artifacts.filter( | ||
a => a.name.startsWith("mypy_primer_diff") | ||
) | ||
console.log("Artifacts from mypy_primer:") | ||
console.log(filtered_artifacts) | ||
async function get_artifact_data(artifact) { | ||
const zip = await github.actions.downloadArtifact({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
artifact_id: artifact.id, | ||
archive_format: "zip", | ||
}) | ||
const adm = new AdmZip(Buffer.from(zip.data)) | ||
return adm.readAsText(adm.getEntry("diff.txt")) | ||
} | ||
const all_data = await Promise.all(filtered_artifacts.map(get_artifact_data)) | ||
const data = all_data.join("\n") | ||
console.log("Diff from mypy_primer:") | ||
console.log(data) | ||
if (data.trim()) { | ||
await github.issues.createComment({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
body: 'Diff from [mypy_primer](https://github.com/hauntsaninja/mypy_primer), showing the effect of this PR on open source code:\n```diff\n' + data + '```' | ||
}) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
name: Test stubgenc on pybind11-mypy-demo | ||
|
||
on: | ||
push: | ||
branches: [master] | ||
tags: ['*'] | ||
pull_request: | ||
paths: | ||
- 'misc/test-stubgenc.sh' | ||
- 'mypy/stubgenc.py' | ||
- 'mypy/stubdoc.py' | ||
- 'test-data/stubgen/**' | ||
|
||
jobs: | ||
stubgenc: | ||
# Check stub file generation for a small pybind11 project | ||
# (full text match is required to pass) | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- uses: actions/checkout@v2 | ||
|
||
- name: initialize submodules | ||
run: git submodule update --init | ||
|
||
- name: Setup 🐍 3.8 | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: 3.8 | ||
|
||
- name: Test stubgenc | ||
run: misc/test-stubgenc.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,6 @@ build/ | |
__pycache__ | ||
*.py[cod] | ||
*~ | ||
@* | ||
/build | ||
/env*/ | ||
docs/build/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +0,0 @@ | ||
[submodule "typeshed"] | ||
path = mypy/typeshed | ||
url = https://github.com/python/typeshed | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,45 @@ | ||
recursive-include scripts * | ||
recursive-include test-data * | ||
recursive-include extensions * | ||
recursive-include docs * | ||
recursive-include misc proper_plugin.py | ||
recursive-include mypy/typeshed *.py *.pyi | ||
recursive-include mypy/xml *.xsd *.xslt *.css | ||
recursive-include mypyc/lib-rt *.c *.h *.tmpl *.py *.cc | ||
recursive-include mypyc/ir *.py | ||
recursive-include mypyc/codegen *.py | ||
recursive-include mypyc/irbuild *.py | ||
recursive-include mypyc/primitives *.py | ||
recursive-include mypyc/transform *.py | ||
recursive-include mypyc/external *.cc *.h Makefile *.pump LICENSE README | ||
recursive-include mypyc/test *.py | ||
recursive-include mypyc/test-data *.test | ||
recursive-include mypyc/test-data/fixtures *.py *.pyi | ||
recursive-include mypyc/doc *.rst *.py *.md Makefile *.bat | ||
# some of the prunes here are so that check-manifest doesn't complain about their exclusion | ||
# as such, be judicious in your use of prune | ||
|
||
# stubs | ||
prune mypy/typeshed | ||
include mypy/typeshed/stdlib/VERSIONS | ||
recursive-include mypy/typeshed *.pyi | ||
|
||
# mypy and mypyc | ||
include mypy/py.typed | ||
recursive-include mypy *.py | ||
recursive-include mypyc *.py | ||
|
||
# random | ||
include mypy_bootstrap.ini | ||
graft mypy/xml | ||
graft scripts | ||
|
||
# docs | ||
graft docs | ||
prune docs/build | ||
prune docs/source/_build | ||
|
||
# assorted mypyc requirements | ||
graft mypyc/external | ||
graft mypyc/lib-rt | ||
graft mypyc/test-data | ||
graft mypyc/doc | ||
|
||
# files necessary for testing sdist | ||
include mypy-requirements.txt | ||
include test-requirements.txt | ||
include mypy_self_check.ini | ||
include LICENSE | ||
prune misc | ||
include misc/proper_plugin.py | ||
graft test-data | ||
include conftest.py | ||
include runtests.py | ||
include pytest.ini | ||
|
||
include LICENSE mypyc/README.md | ||
exclude .gitmodules CONTRIBUTING.md CREDITS ROADMAP.md tox.ini | ||
|
||
global-exclude *.py[cod] | ||
global-exclude .DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.