mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-23 08:42:25 +00:00

## summary
- this pr implements the following attributes for `Enum` members:
- `name`
- `_name_`
- `value`
- `_value_`
- adds a TODO test for `my_enum_class_instance.name`
- only implements if the instance is a subclass of `Enum` re: this
[comment](https://github.com/astral-sh/ruff/pull/19481#issuecomment-3103460307)
and existing
[test](c34449ed7c/crates/ty_python_semantic/resources/mdtest/enums.md (L625)
)
### pointers
- https://github.com/astral-sh/ty/issues/876
- https://typing.python.org/en/latest/spec/enums.html#enum-definition
- https://github.com/astral-sh/ruff/pull/19481#issuecomment-3103460307
## test plan
- mdtests
- triaged conformance diffs here:
https://diffswarm.dev/d-01k531ag4nee3xmdeq4f3j66pb
- triaged mypy primer diffs here for django-stubs:
https://diffswarm.dev/d-01k5331n13k9yx8tvnxnkeawp3
- added a TODO test for overriding `.value`
- discord diff seems reasonable
---------
Co-authored-by: David Peter <mail@david-peter.de>
77 lines
2.5 KiB
Rust
77 lines
2.5 KiB
Rust
#![warn(
|
|
clippy::disallowed_methods,
|
|
reason = "Prefer System trait methods over std methods in ty crates"
|
|
)]
|
|
use std::hash::BuildHasherDefault;
|
|
|
|
use crate::lint::{LintRegistry, LintRegistryBuilder};
|
|
use crate::suppression::{INVALID_IGNORE_COMMENT, UNKNOWN_RULE, UNUSED_IGNORE_COMMENT};
|
|
pub use db::Db;
|
|
pub use module_name::ModuleName;
|
|
pub use module_resolver::{
|
|
Module, SearchPath, SearchPathValidationError, SearchPaths, all_modules, list_modules,
|
|
resolve_module, resolve_real_module, system_module_search_paths,
|
|
};
|
|
pub use program::{
|
|
Program, ProgramSettings, PythonVersionFileSource, PythonVersionSource,
|
|
PythonVersionWithSource, SearchPathSettings,
|
|
};
|
|
pub use python_platform::PythonPlatform;
|
|
use rustc_hash::FxHasher;
|
|
pub use semantic_model::{
|
|
Completion, CompletionKind, HasDefinition, HasType, NameKind, SemanticModel,
|
|
};
|
|
pub use site_packages::{PythonEnvironment, SitePackagesPaths, SysPrefixPathOrigin};
|
|
pub use types::DisplaySettings;
|
|
pub use types::ide_support::{
|
|
ImportAliasResolution, ResolvedDefinition, definitions_for_attribute,
|
|
definitions_for_imported_symbol, definitions_for_name, map_stub_definition,
|
|
};
|
|
pub use util::diagnostics::add_inferred_python_version_hint_to_diagnostic;
|
|
|
|
pub mod ast_node_ref;
|
|
mod db;
|
|
mod dunder_all;
|
|
pub mod lint;
|
|
pub(crate) mod list;
|
|
mod module_name;
|
|
mod module_resolver;
|
|
mod node_key;
|
|
pub(crate) mod place;
|
|
mod program;
|
|
mod python_platform;
|
|
mod rank;
|
|
pub mod semantic_index;
|
|
mod semantic_model;
|
|
pub(crate) mod site_packages;
|
|
mod suppression;
|
|
pub mod types;
|
|
mod unpack;
|
|
mod util;
|
|
|
|
#[cfg(feature = "testing")]
|
|
pub mod pull_types;
|
|
|
|
type FxOrderMap<K, V> = ordermap::map::OrderMap<K, V, BuildHasherDefault<FxHasher>>;
|
|
type FxOrderSet<V> = ordermap::set::OrderSet<V, BuildHasherDefault<FxHasher>>;
|
|
type FxIndexMap<K, V> = indexmap::IndexMap<K, V, BuildHasherDefault<FxHasher>>;
|
|
type FxIndexSet<V> = indexmap::IndexSet<V, BuildHasherDefault<FxHasher>>;
|
|
|
|
/// Returns the default registry with all known semantic lints.
|
|
pub fn default_lint_registry() -> &'static LintRegistry {
|
|
static REGISTRY: std::sync::LazyLock<LintRegistry> = std::sync::LazyLock::new(|| {
|
|
let mut registry = LintRegistryBuilder::default();
|
|
register_lints(&mut registry);
|
|
registry.build()
|
|
});
|
|
|
|
®ISTRY
|
|
}
|
|
|
|
/// Register all known semantic lints.
|
|
pub fn register_lints(registry: &mut LintRegistryBuilder) {
|
|
types::register_lints(registry);
|
|
registry.register_lint(&UNUSED_IGNORE_COMMENT);
|
|
registry.register_lint(&UNKNOWN_RULE);
|
|
registry.register_lint(&INVALID_IGNORE_COMMENT);
|
|
}
|