[pseen README 및 번역]: "Preferred Networks"에서 만든 Python linter/formatter 관리 프로그램 "pseen"의 README를 번역해 봤어요.

github: https://github.com/pfnet/pysen

개시하다


psen은preferred networks에서 공개한python용linter/formatter의 관리용 프로그램입니다.
여러 사람이 코드를 제작할 때 어느 정도의 가독성을 확보하기 위해 인코딩의 약속을 결정하지만 자동판정/성형은linter/formatter이다.그러나python용linter/formatter는 여러 개가 있고 항목마다 각양각색이므로 linter/formatter의 정비 자체 형해화가 문제입니다.그래서 preferred networks에서 linter/formatter 관리용 응용 프로그램을 제작하여 통합시켰다.
다만, preferred networks의github README.md는 영어 문서만 있기 때문에 일본어로 번역된 것은 다음과 같다.(집필시 2021/03/29)
참고 자료

psene가 뭐예요?


이것은 매일 개발되는 도구를 통합하는 것을 목표로 하는 도구이다.
구상은 다음과 같다.
  • pysen run lint, 실행pysen run format을 통해 프로젝트 내의 모든 코드를 검사하고 포맷
  • pyproject.toml에 몇 줄을 써서 표준화된 코드 스타일을 정의합니다
  • psene는 중앙 집권으로 각 팀이 쌓은 지식과 코드, 특히python의linter를 공유합니다.실행은 setup입니다.py와 우리의 명령행 도구는 모두 실행할 수 있습니다.이제 다음 도구의 프로필을 관리할 수 있습니다.
  • linter
  • flake8
  • isort
  • mypy
  • black
  • utility
  • (2021/03/29:예정)protoc
  • psene에서 할 수 없는 일

  • pson 자체는 LINTER가 아닙니다.pysen run lintpsene의 더 추상적인 설정 파일에 따라 여러 개의python의linter 설정을 자동으로 구축합니다.
  • psene는 당신의 환경 의존성과 포장을 관리하지 않습니다.pipenvpoetry를 사용하여 psen이 사용하는 도구(isort, mypy,flake8black 등)의 버전을 패키지 관리자에 고정시키는 것을 권장합니다.psen에 대응하는 버전setup.pyextra_requires/lint를 확인하세요.pip install pysen[lint]의 linter 버전 관리를 추천하지 않습니다.
  • psen은 린트만 만든 것이 아니다.자세한 상황을 확인하려면 "플러그 인"를 꼭 보십시오.
  • 설치 방법


    다음 중 하나를 사용하십시오.하지만 pip는 추천하지 않습니다.
    # pip
    pip install "pysen[lint]"
    # pipenv
    pipenv install --dev "pysen[lint]==0.9.1"
    # poetry
    poetry add -D pysen==0.9.1 -E lint
    

    빠른 시작:pseen의 linter 관리 방법


    우선, psyhon 패키지에서 다음 설정을 psene 설정 파일 pyproject.toml 에 기록하십시오.
    [tool.pysen]
    version = "0.9"
    
    [tool.pysen.lint]
    enable_black = true
    enable_flake8 = true
    enable_isort = true
    enable_mypy = true
    mypy_preset = "strict"
    line_length = 88
    py_version = "py37"
    [[tool.pysen.lint.mypy_targets]]
      paths = ["."]
    
    다음 명령을 실행합니다.
    $ pysen run lint
    $ pysen run format  # ここでformatter(black, isort)を使ったコードの自動修正を試みます
    
    이만 마치겠습니다!
    psene는 특정한 링크 (Black, isort, mypy, flake 8) 의 설정 파일을 생성하고 적절하게 실행합니다.pyproject.toml에 관해서 더 자세한 상황을 알고 싶으면 pysen/pyproject_model.py를 참조하십시오.
    설정 명령도 psyhon 패키지에 추가할 수 있습니다.가방에 있는 setup.py에 다음 코드를 추가해서 실행해 보세요.
    import pysen
    setup = pysen.setup_from_pyproject(__file__)
    
    $ python setup.py lint
    
    또한 맞춤형 설정, psene를 확장하는 파이톤 인터페이스도 제공한다.자세한 내용은 다음을 참조하십시오.
    - Pythhon 설정 예제 사용: examples/advanced_example/config.py [번역문] 3/29 현재 이 파일이 존재하지 않습니다.아마lint.py-psene 플러그인 예: examples/plugin_example/plugin.py

    어떻게 작동합니까?프로필 디렉토리


    수면 아래에서pseen이 이동할 때 linter가 사용하는 파일을 잠시 생성합니다.이 파일을 디스크에 저장하려면 (예를 들어 편집기에서 사용할 때) 다음 명령을 실행하고 저장 위치를 지정하십시오.
    $ pysen generate [保存先ディレクトリ]
    
    pysen run 실행할 때pseen이 사용하는 설정 디렉터리를 지정할 수 있습니다.pyproject.toml에 다음 영역을 추가하십시오.
    [tool.pysen-cli]
    settings_dir = "path/to/generate/settings"
    
    지정한 디렉터리에 설정 파일이 포함되어 있을 때pseen을 병합합니다.이에 따라 지정되지 않았을 때settings_dir와는 다른 행동이 나타날 수 있다.
    이 옵션은 pseen CLI를 통해서만 사용할 수 있습니다.pre-commiit 또는 setuptols를 사용할 때는 매개 변수에 settings_dir를 지정해야 합니다.

    Tips: IDE/텍스트 편집기와 결합


    [역문 주] 제가 vim과emacs에 대해 잘 몰라서 이상한 번역이 있을 수도 있어요.모르는 부분이 있으면 읽으십시오원문(수정을 환영합니다)

    vim


    pseen 출력 오류는 다음 코드로 빠른 접미사 창에 추가할 수 있습니다:cex system("pysen run_files lint --error-format gnu ".expand('%:p'))이외에도 psene를 makeprg로 설정하는 방법도 있다set makeprg=pysen\ run_files\ --error-format\ gnu\ lint\ %그런 다음 실행:make하면 빠른 창에 오류가 표시됩니다.:Dispatch를 대체:Make로 호출하면 vim-dispatch에서도 일할 수 있다.
    실행 결과는 다음과 같습니다.

    Emacs


    참조Comliation mode.
    다음은python의 연결 예입니다.
    (add-hook 'python-mode-hook
        (lambda ()
            (set (make-local-variable 'compile-command)
                (concat "pysen run_files lint --error-format gnu  " buffer-file-name))))
    

    VSCode


    설정 예의 json을 참고하세요.이렇게 하면 PROPBLEMS 창에 다음 오류가 표시됩니다.

    ※ 주의 ※
    VScode 확장 기능에서 flake8 같은 linter를 추가로 가져오면 출력 오류가 중복될 수 있습니다.psen에서 모든 파일을 검사하는 데 시간이 걸릴 수 있습니다.따라서 대규모 프로젝트에서는 파일 변경을 트리거로pseen을 실행하는 것을 추천하지 않습니다.

    기본 설정


    포텐을 설정하는 방법은 두 가지가 있습니다.
  • 첫 번째 방법은 project.toml[tool.pysen.lint] 부분에 쓴 방법이다.이 방법은 가장 간단한 방법이지만 설정할 수 있는 사항은 한계가 있다.
  • 두 번째 방법은python의 스크립트를 쓰고psyen을 직접 설정하는 것이다.pseen의 명령행 인자나pseen의 행동,pseen이 생성한 프로필을 사용자 정의하려면 이 방법을 사용하십시오.더 상세한 예는 참조pysen/examples.
  • pyproject.toml로 설정된 상황


    최신 참조pysen/pyproject_model.py.현재 참조할 곳이 없다.참조pysen/project.toml하면 됩니다.
    다음은 기본 설정의 예입니다.
    [tool.pysen]
    version = "0.9"
    
    [tool.pysen.lint]
    enable_black = true
    enable_flake8 = true
    enable_isort = true
    enable_mypy = true
    mypy_preset = "strict"
    line_length = 88
    py_version = "py37"
    isort_known_third_party = ["numpy"]
    isort_known_first_party = ["pysen"]
    mypy_ignore_packages = ["pysen.generated.*"]
    mypy_path = ["stubs"]
    [[tool.pysen.lint.mypy_targets]]
      paths = [".", "tests/"]
    
    [tool.pysen.lint.source]
      includes = ["."]
      include_globs = ["**/*.template"]
      excludes = ["third_party/"]
      exclude_globs = ["**/*_grpc.py"]
    
    [tool.pysen.lint.mypy_modules."pysen.scripts"]
      preset = "entry"
    
    [tool.pysen.lint.mypy_modules."numpy"]
      ignore_errors = true
    

    플러그인 디자인, 사용자 정의 psen


    내부 도구와 프로필 관리, 설치 명령 등을 관리하기 위해 플러그인 인터페이스를 준비했다.
    더 자세한 내용은 pysen/examples/plugin_example를 참조하십시오.

    개발하다


    우리의 개발 환경을 활용하려면 pipenv가 필요하다.
  • 환경 구축
  • # setup your environment
    $ pipenv sync
    # activate the environment
    $ pipenv shell
    

  • 업데이트Pipfile.lock 의존 관계
  • $ pipenv lock --pre
    
  • 모든 테스트의 실행
  • $ pipenv run tox
    

    Contributing


    psen의 공개 창고는 Preferred Networks의 개인 창고 거울입니다.지금은 아무런 요구도 받지 못했다.의향이 있는 개발자는 포크를 먼저 사용한 후 패치를 사용하는 것을 권장한다.
    또한 우리의 인적 자원에 한계가 있기 때문에 Preferred Networks 특유의 요구를 충족시키는 것을 우선적으로 개발해야 할 때도 있습니다.따라서 Issue는 일시적으로 종료됩니다.조금 아쉽지만 모든 문제, 고장 제거,feature request, 오류 보고서를 dev/null에 직접 제출합니다.

    좋은 웹페이지 즐겨찾기