Там, где я работаю, мы широко используем SQLAlchemy.С течением времени мы разработали базовый класс для наших моделей, который соответствует нашим потребностям.Но когда приходит время помешать нашему коду, мы всегда ошеломлены предупреждением о том, что можем игнорировать.Но пока нам удалось сделать это глобально только с директивой generated-members
, которая имеет тенденцию скрывать проблемы.Поэтому я начал задаваться вопросом: «Как я могу научить это пилинту?»
Вот ситуация:
from sqlalchemy.ext.declarative import declarative_base
class CustomBaseModel(object):
def feature(self):
pass
Model = declarative_base(cls=CustomBaseModel)
class Thing(Model):
id = Column(Integer, primary_key=True)
label = Column(String(64))
t = Thing()
t.feature() # Pylint says Thing has not `feature()` method.
Итак, что я хотел бы сделатьэто сказать Pylint, что Model на самом деле более или менее CustomBaseModel.
Следовательно, похоже, я должен использовать inference_tip
в возвращаемом значении вызова declarative_base()
.Но я не совсем уверен, как поступить.И, похоже, API менялся с течением времени, и я никуда не уйду.
Другая стратегия, на которую я обратил внимание, - это копирование атрибутов, найденных в CustomBaseModel
, в Model.Но это не работает.Действительно, Pylint Model кажется просто именем ... она потеряла представление о том, что это такое, и не имеет ни малейшего представления, что это класс.
Любые намеки будут высоко оценены ...