mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-18 09:30:35 +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 {
|
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
|
Self::PY313
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub const fn latest_ty() -> Self {
|
||||||
|
Self::PY313
|
||||||
|
}
|
||||||
|
|
||||||
pub const fn as_tuple(self) -> (u8, u8) {
|
pub const fn as_tuple(self) -> (u8, u8) {
|
||||||
(self.major, self.minor)
|
(self.major, self.minor)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use insta::internals::SettingsBindDropGuard;
|
use insta::internals::SettingsBindDropGuard;
|
||||||
use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
|
use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
|
||||||
|
use ruff_python_ast::PythonVersion;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
|
@ -1263,6 +1264,80 @@ fn can_handle_large_binop_expressions() -> anyhow::Result<()> {
|
||||||
Ok(())
|
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 {
|
struct TestCase {
|
||||||
_temp_dir: TempDir,
|
_temp_dir: TempDir,
|
||||||
_settings_scope: SettingsBindDropGuard,
|
_settings_scope: SettingsBindDropGuard,
|
||||||
|
|
|
@ -191,7 +191,7 @@ mod tests {
|
||||||
Program::from_settings(
|
Program::from_settings(
|
||||||
&db,
|
&db,
|
||||||
ProgramSettings {
|
ProgramSettings {
|
||||||
python_version: PythonVersion::latest(),
|
python_version: PythonVersion::latest_ty(),
|
||||||
python_platform: PythonPlatform::default(),
|
python_platform: PythonPlatform::default(),
|
||||||
search_paths: SearchPathSettings {
|
search_paths: SearchPathSettings {
|
||||||
extra_paths: vec![],
|
extra_paths: vec![],
|
||||||
|
|
|
@ -227,7 +227,7 @@ mod tests {
|
||||||
Program::from_settings(
|
Program::from_settings(
|
||||||
&db,
|
&db,
|
||||||
ProgramSettings {
|
ProgramSettings {
|
||||||
python_version: PythonVersion::latest(),
|
python_version: PythonVersion::latest_ty(),
|
||||||
python_platform: PythonPlatform::default(),
|
python_platform: PythonPlatform::default(),
|
||||||
search_paths: SearchPathSettings {
|
search_paths: SearchPathSettings {
|
||||||
extra_paths: vec![],
|
extra_paths: vec![],
|
||||||
|
|
|
@ -61,7 +61,7 @@ impl Options {
|
||||||
.environment
|
.environment
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|env| env.python_version.as_deref().copied())
|
.and_then(|env| env.python_version.as_deref().copied())
|
||||||
.unwrap_or_default();
|
.unwrap_or(PythonVersion::latest_ty());
|
||||||
let python_platform = self
|
let python_platform = self
|
||||||
.environment
|
.environment
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
|
@ -103,7 +103,7 @@ impl Project {
|
||||||
let major =
|
let major =
|
||||||
u8::try_from(major).map_err(|_| ResolveRequiresPythonError::TooLargeMajor(major))?;
|
u8::try_from(major).map_err(|_| ResolveRequiresPythonError::TooLargeMajor(major))?;
|
||||||
let minor =
|
let minor =
|
||||||
u8::try_from(minor).map_err(|_| ResolveRequiresPythonError::TooLargeMajor(minor))?;
|
u8::try_from(minor).map_err(|_| ResolveRequiresPythonError::TooLargeMinor(minor))?;
|
||||||
|
|
||||||
Ok(Some(
|
Ok(Some(
|
||||||
requires_python
|
requires_python
|
||||||
|
|
|
@ -2734,7 +2734,7 @@ mod tests {
|
||||||
|
|
||||||
Program::get(&db)
|
Program::get(&db)
|
||||||
.set_python_version(&mut db)
|
.set_python_version(&mut db)
|
||||||
.to(PythonVersion::latest());
|
.to(PythonVersion::latest_ty());
|
||||||
|
|
||||||
for class in KnownClass::iter() {
|
for class in KnownClass::iter() {
|
||||||
assert_ne!(
|
assert_ne!(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue