Skip to content

Commit 3277d03

Browse files
authored
[red-knot] Move the vendored typeshed stubs to the module resolver crate (astral-sh#11966)
1 parent 736a4ea commit 3277d03

587 files changed

Lines changed: 82 additions & 77 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/workflows/sync_typeshed.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ jobs:
3737
- name: Sync typeshed
3838
id: sync
3939
run: |
40-
rm -rf ruff/crates/red_knot/vendor/typeshed
41-
mkdir ruff/crates/red_knot/vendor/typeshed
42-
cp typeshed/README.md ruff/crates/red_knot/vendor/typeshed
43-
cp typeshed/LICENSE ruff/crates/red_knot/vendor/typeshed
44-
cp -r typeshed/stdlib ruff/crates/red_knot/vendor/typeshed/stdlib
45-
rm -rf ruff/crates/red_knot/vendor/typeshed/stdlib/@tests
46-
git -C typeshed rev-parse HEAD > ruff/crates/red_knot/vendor/typeshed/source_commit.txt
40+
rm -rf ruff/crates/red_knot_module_resolver/vendor/typeshed
41+
mkdir ruff/crates/red_knot_module_resolver/vendor/typeshed
42+
cp typeshed/README.md ruff/crates/red_knot_module_resolver/vendor/typeshed
43+
cp typeshed/LICENSE ruff/crates/red_knot_module_resolver/vendor/typeshed
44+
cp -r typeshed/stdlib ruff/crates/red_knot_module_resolver/vendor/typeshed/stdlib
45+
rm -rf ruff/crates/red_knot_module_resolver/vendor/typeshed/stdlib/@tests
46+
git -C typeshed rev-parse HEAD > ruff/crates/red_knot_module_resolver/vendor/typeshed/source_commit.txt
4747
- name: Commit the changes
4848
id: commit
4949
if: ${{ steps.sync.outcome == 'success' }}

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ fail_fast: true
22

33
exclude: |
44
(?x)^(
5-
crates/red_knot/vendor/.*|
5+
crates/red_knot_module_resolver/vendor/.*|
66
crates/ruff_linter/resources/.*|
77
crates/ruff_linter/src/rules/.*/snapshots/.*|
88
crates/ruff/resources/.*|

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

_typos.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[files]
22
# https://github.com/crate-ci/typos/issues/868
3-
extend-exclude = ["crates/red_knot/vendor/**/*", "**/resources/**/*", "**/snapshots/**/*"]
3+
extend-exclude = ["crates/red_knot_module_resolver/vendor/**/*", "**/resources/**/*", "**/snapshots/**/*"]
44

55
[default.extend-words]
66
"arange" = "arange" # e.g. `numpy.arange`

crates/red_knot/Cargo.toml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ smol_str = { version = "0.2.1" }
3737
tracing = { workspace = true }
3838
tracing-subscriber = { workspace = true }
3939
tracing-tree = { workspace = true }
40-
zip = { workspace = true }
41-
42-
[build-dependencies]
43-
zip = { workspace = true }
44-
walkdir = { workspace = true }
4540

4641
[dev-dependencies]
4742
insta = { workspace = true }

crates/red_knot/README.md

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

crates/red_knot/src/module.rs

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -763,11 +763,8 @@ impl PackageKind {
763763

764764
#[cfg(test)]
765765
mod tests {
766-
use std::io::{Cursor, Read};
767766
use std::num::NonZeroU32;
768-
use std::path::{Path, PathBuf};
769-
770-
use zip::ZipArchive;
767+
use std::path::PathBuf;
771768

772769
use crate::db::tests::TestDb;
773770
use crate::db::SourceDb;
@@ -919,28 +916,6 @@ mod tests {
919916
Ok(())
920917
}
921918

922-
#[test]
923-
fn typeshed_zip_created_at_build_time() -> anyhow::Result<()> {
924-
// The file path here is hardcoded in this crate's `build.rs` script.
925-
// Luckily this crate will fail to build if this file isn't available at build time.
926-
const TYPESHED_ZIP_BYTES: &[u8] =
927-
include_bytes!(concat!(env!("OUT_DIR"), "/zipped_typeshed.zip"));
928-
929-
let mut typeshed_zip_archive = ZipArchive::new(Cursor::new(TYPESHED_ZIP_BYTES))?;
930-
931-
let path_to_functools = Path::new("stdlib").join("functools.pyi");
932-
let mut functools_module_stub = typeshed_zip_archive
933-
.by_name(path_to_functools.to_str().unwrap())
934-
.unwrap();
935-
assert!(functools_module_stub.is_file());
936-
937-
let mut functools_module_stub_source = String::new();
938-
functools_module_stub.read_to_string(&mut functools_module_stub_source)?;
939-
940-
assert!(functools_module_stub_source.contains("def update_wrapper("));
941-
Ok(())
942-
}
943-
944919
#[test]
945920
fn resolve_package() -> anyhow::Result<()> {
946921
let TestCase {

crates/red_knot/src/typeshed_versions.rs

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -320,28 +320,30 @@ mod tests {
320320
#[allow(unsafe_code)]
321321
const ONE: NonZeroU16 = unsafe { NonZeroU16::new_unchecked(1) };
322322

323-
#[test]
324-
fn can_parse_vendored_versions_file() {
325-
let versions_data = include_str!(concat!(
326-
env!("CARGO_MANIFEST_DIR"),
327-
"/vendor/typeshed/stdlib/VERSIONS"
328-
));
329-
330-
let versions = TypeshedVersions::from_str(versions_data).unwrap();
331-
assert!(versions.len() > 100);
332-
assert!(versions.len() < 1000);
333-
334-
assert!(versions.contains_module("asyncio"));
335-
assert!(versions.module_exists_on_version("asyncio", SupportedPyVersion::Py310));
336-
337-
assert!(versions.contains_module("asyncio.staggered"));
338-
assert!(versions.module_exists_on_version("asyncio.staggered", SupportedPyVersion::Py38));
339-
assert!(!versions.module_exists_on_version("asyncio.staggered", SupportedPyVersion::Py37));
340-
341-
assert!(versions.contains_module("audioop"));
342-
assert!(versions.module_exists_on_version("audioop", SupportedPyVersion::Py312));
343-
assert!(!versions.module_exists_on_version("audioop", SupportedPyVersion::Py313));
344-
}
323+
// TODO(Alex): move VERSIONS parsing logic to red_knot_module_resolver, add this test back
324+
//
325+
// #[test]
326+
// fn can_parse_vendored_versions_file() {
327+
// let versions_data = include_str!(concat!(
328+
// env!("CARGO_MANIFEST_DIR"),
329+
// "/vendor/typeshed/stdlib/VERSIONS"
330+
// ));
331+
332+
// let versions = TypeshedVersions::from_str(versions_data).unwrap();
333+
// assert!(versions.len() > 100);
334+
// assert!(versions.len() < 1000);
335+
336+
// assert!(versions.contains_module("asyncio"));
337+
// assert!(versions.module_exists_on_version("asyncio", SupportedPyVersion::Py310));
338+
339+
// assert!(versions.contains_module("asyncio.staggered"));
340+
// assert!(versions.module_exists_on_version("asyncio.staggered", SupportedPyVersion::Py38));
341+
// assert!(!versions.module_exists_on_version("asyncio.staggered", SupportedPyVersion::Py37));
342+
343+
// assert!(versions.contains_module("audioop"));
344+
// assert!(versions.module_exists_on_version("audioop", SupportedPyVersion::Py312));
345+
// assert!(!versions.module_exists_on_version("audioop", SupportedPyVersion::Py313));
346+
// }
345347

346348
#[test]
347349
fn can_parse_mock_versions_file() {

crates/red_knot_module_resolver/Cargo.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ ruff_python_stdlib = { workspace = true }
1717
salsa = { workspace = true }
1818
smol_str = { workspace = true }
1919
tracing = { workspace = true }
20+
zip = { workspace = true }
21+
22+
[build-dependencies]
23+
walkdir = { workspace = true }
24+
zip = { workspace = true }
2025

2126
[dev-dependencies]
2227
anyhow = { workspace = true }
Lines changed: 9 additions & 0 deletions

0 commit comments

Comments
 (0)