mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-16 00:20:22 +00:00
[ty] Default to latest supported python version (#17938)
This commit is contained in:
parent
5eb215e8e5
commit
067a8ac574
8 changed files with 85 additions and 6 deletions
|
@ -136,7 +136,7 @@ mod tests {
|
|||
}
|
||||
|
||||
fn python_version(&self) -> ruff_python_ast::PythonVersion {
|
||||
ruff_python_ast::PythonVersion::latest()
|
||||
ruff_python_ast::PythonVersion::latest_ty()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,10 @@ impl PythonVersion {
|
|||
Self::PY313
|
||||
}
|
||||
|
||||
pub const fn latest_ty() -> Self {
|
||||
Self::PY313
|
||||
}
|
||||
|
||||
pub const fn as_tuple(self) -> (u8, u8) {
|
||||
(self.major, self.minor)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
use anyhow::Context;
|
||||
use insta::internals::SettingsBindDropGuard;
|
||||
use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
|
||||
use ruff_python_ast::PythonVersion;
|
||||
use std::fmt::Write;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::Command;
|
||||
|
@ -1263,6 +1264,80 @@ fn can_handle_large_binop_expressions() -> anyhow::Result<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn defaults_to_a_new_python_version() -> anyhow::Result<()> {
|
||||
let case = TestCase::with_files([
|
||||
(
|
||||
"ty.toml",
|
||||
&*format!(
|
||||
r#"
|
||||
[environment]
|
||||
python-version = "{}"
|
||||
python-platform = "linux"
|
||||
"#,
|
||||
PythonVersion::default()
|
||||
),
|
||||
),
|
||||
(
|
||||
"main.py",
|
||||
r#"
|
||||
import os
|
||||
|
||||
os.grantpt(1) # only available on unix, Python 3.13 or newer
|
||||
"#,
|
||||
),
|
||||
])?;
|
||||
|
||||
assert_cmd_snapshot!(case.command(), @r"
|
||||
success: false
|
||||
exit_code: 1
|
||||
----- stdout -----
|
||||
error: lint:unresolved-attribute: Type `<module 'os'>` has no attribute `grantpt`
|
||||
--> main.py:4:1
|
||||
|
|
||||
2 | import os
|
||||
3 |
|
||||
4 | os.grantpt(1) # only available on unix, Python 3.13 or newer
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
info: `lint:unresolved-attribute` is enabled by default
|
||||
|
||||
Found 1 diagnostic
|
||||
|
||||
----- stderr -----
|
||||
");
|
||||
|
||||
// Use default (which should be latest supported)
|
||||
let case = TestCase::with_files([
|
||||
(
|
||||
"ty.toml",
|
||||
r#"
|
||||
[environment]
|
||||
python-platform = "linux"
|
||||
"#,
|
||||
),
|
||||
(
|
||||
"main.py",
|
||||
r#"
|
||||
import os
|
||||
|
||||
os.grantpt(1) # only available on unix, Python 3.13 or newer
|
||||
"#,
|
||||
),
|
||||
])?;
|
||||
|
||||
assert_cmd_snapshot!(case.command(), @r"
|
||||
success: true
|
||||
exit_code: 0
|
||||
----- stdout -----
|
||||
All checks passed!
|
||||
|
||||
----- stderr -----
|
||||
");
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
struct TestCase {
|
||||
_temp_dir: TempDir,
|
||||
_settings_scope: SettingsBindDropGuard,
|
||||
|
|
|
@ -191,7 +191,7 @@ mod tests {
|
|||
Program::from_settings(
|
||||
&db,
|
||||
ProgramSettings {
|
||||
python_version: PythonVersion::latest(),
|
||||
python_version: PythonVersion::latest_ty(),
|
||||
python_platform: PythonPlatform::default(),
|
||||
search_paths: SearchPathSettings {
|
||||
extra_paths: vec![],
|
||||
|
|
|
@ -227,7 +227,7 @@ mod tests {
|
|||
Program::from_settings(
|
||||
&db,
|
||||
ProgramSettings {
|
||||
python_version: PythonVersion::latest(),
|
||||
python_version: PythonVersion::latest_ty(),
|
||||
python_platform: PythonPlatform::default(),
|
||||
search_paths: SearchPathSettings {
|
||||
extra_paths: vec![],
|
||||
|
|
|
@ -61,7 +61,7 @@ impl Options {
|
|||
.environment
|
||||
.as_ref()
|
||||
.and_then(|env| env.python_version.as_deref().copied())
|
||||
.unwrap_or_default();
|
||||
.unwrap_or(PythonVersion::latest_ty());
|
||||
let python_platform = self
|
||||
.environment
|
||||
.as_ref()
|
||||
|
|
|
@ -103,7 +103,7 @@ impl Project {
|
|||
let major =
|
||||
u8::try_from(major).map_err(|_| ResolveRequiresPythonError::TooLargeMajor(major))?;
|
||||
let minor =
|
||||
u8::try_from(minor).map_err(|_| ResolveRequiresPythonError::TooLargeMajor(minor))?;
|
||||
u8::try_from(minor).map_err(|_| ResolveRequiresPythonError::TooLargeMinor(minor))?;
|
||||
|
||||
Ok(Some(
|
||||
requires_python
|
||||
|
|
|
@ -2734,7 +2734,7 @@ mod tests {
|
|||
|
||||
Program::get(&db)
|
||||
.set_python_version(&mut db)
|
||||
.to(PythonVersion::latest());
|
||||
.to(PythonVersion::latest_ty());
|
||||
|
||||
for class in KnownClass::iter() {
|
||||
assert_ne!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue