pytype не будет комментировать (ну, аннотировать для любого ...) - PullRequest
0 голосов
/ 03 мая 2020

Я пытался запустить pytype для некоторой кодовой базы.

В проекте используется sqlalchemy, и для упрощения вещей, скажем:

  1. /proj/common/model/MyModel.py:
Base = declarative_base()

class MyModel(Base):
   __tablename__ = "my_table"

    id = Column(Integer, primary_key=True, autoincrement=True)
    my_column = Column(String(64),  nullable=True)
/proj/services/my_service/MyService.py:
class MyService:
   def create_my_model(self, some_value):
      my_model = MyModel(my_column=some_value)

      self._db_session.add(my_model)
      self._db_session.flush()

      return my_model.id

   def get_by_id(self, id):
      return self._db_session.query(MyModel).filter(MyModel.id == id).one()

сейчас я пытаюсь запустить pytype на службе. Итак:

cd /proj
pytype services/my_service/

это успешно завершается:

Computing dependencies
WARNING generate default: System module services.my_service.MyService
Analyzing 1 sources with 0 local dependencies
ninja: Entering directory `/proj/.pytype'
[1/1] check services.my_service.MyService
Success: no errors found

Это круто,

НО

проверка сгенерированной заглушки, cat /proj/.pytype/pyi/services/my_service/MyService.pyi, Я вижу:

# (generated with --quick)

import __future__
from typing import Any

ALERT_TYPES: Any
ALERT_TYPE_2_SERVICE_NAME: dict
absolute_import: __future__._Feature
orm_object_to_dictionary_recursive: Any

class MyService(Any):
    create_my_model: Any
    get_by_id: Any

Итак, я решил, что это связано с sqlalchemy, и поэтому я установил заглушку sqlalchemy: pip install -U sqlalchemy-stubs.

Я также удалил каталог .pytype (rm -rf /proj/.pytype) и повторно запустил pytype (pytype my_service/), только чтобы получить тот же результат (все Any ).

Но как я могу сказать pytype использовать эти заглушки и сгенерировать более правильный заглушку для моего сервиса? то есть что-то похожее на это:

class MyService(Any):
    create_my_model: int
    get_by_id: MyModel
...