рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ рдЬреЛ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг, рдкрд░реАрдХреНрд╖рдг, рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓реИрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛, рдПрдХрд░реВрдкрддрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкрд╛рдардХ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдпрдерди рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдиреБрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд╣ рдкрдврд╝рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реА рдХреЛрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ
рдпрд╣рд╛рдВ рдЖрдк рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд╣реМрд▓ рдХреИрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг macOS рдФрд░ рдкрд╛рдпрдерди 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЪрд░рдг 1. рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреА рд╕реНрдерд╛рдкрдирд╛
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЛ рдХреЛрдб рд╢реИрд▓реА рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмреНрд▓реИрдХ рдПрдХ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ
рдкреАрдИрдкреА 8 рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд▓рд╛рддрд╛ рд╣реИред рдмреНрд▓реИрдХ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХреА рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд▓реНрджреА рд╕реЗ рдкрд╛рдпрдерди рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдЪреНрдЫреЗ рд╕реНрд╡рд╛рдж рдХрд╛ рд╕рдВрдХреЗрдд рдмрди рдЧрдпрд╛ред
рдпрд╣рд╛рдВ рдмреНрд▓реИрдХ рдореИрдиреБрдЕрд▓ рд╣реИред
рдореИрдВ, рдПрдХ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдЯрдо рдореЗрдВ
Python-Black
рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рд╛ред рдЖрдк рдпрд╣ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ
рдпрд╣рд╛рдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдЯрдо рдлрд╛рдЗрд▓ рдХреЛ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рд░рд┐рдлреЙрд░реНрдо рдХрд░реЗрдЧрд╛ред
рдЬрдмрдХрд┐ рд╣рдо рдмреНрд▓реИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЖрдЗрдП рдЗрд╕ рдЯреВрд▓ рдХреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рд╕реЗ рд▓реИрд╕ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧ рд╕рдорд╛рди рдХреЛрдб рдкреНрд░рд╛рд░реВрдкрдг рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЕрдиреНрдпрдерд╛ рдЙрдирдХреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ_
black==18.9b0
рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдорд┐рд▓реА рдлреНрд░реА рд▓рд╛рдЗрди рдореЗрдВ
black==18.9b0
рдЬреЛрдбрд╝реЗрдВ рдФрд░
install -r requirements_dev.txt
black==18.9b0
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБред
рдХрд╛рд▓рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЛрдб рдХреА рд▓рдВрдмрд╛рдИ 88 рд╡рд░реНрдгреЛрдВ рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╢реИрд▓реА рдЧрд╛рдЗрдб, рдЬреИрд╕реЗ рдХрд┐
рд╕реНрдлрд┐рдВрдХреНрд╕ , рдХреЛ 79 рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд▓рдВрдмрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
Black-Atom
рдкреИрдХреЗрдЬ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рдЬрдм рд╣рдореЗрдВ рдПрдХ рдЯреВрд▓ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдкрд░ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рддреЛ рд╣рдо рдпрд╣ рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рддреЗрдЬреА рд╕реЗ рдФрд░ PyPI рдХреЛ рдХреЛрдб рднреЗрдЬрдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рдЪрд░рдг 2. .pypirc File рдмрдирд╛рдирд╛
рдЬрдм TestPyPI рдФрд░ PyPI рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрд╕реЗрдВрдмрд▓реА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрддрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
рддреЛ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рдиреА рд╣реЛрдЧреАред рдпрджрд┐ рдЖрдк рд╕реБрддрд▓реА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ
рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЕрдм рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВрдЧреЗред
рд╕реБрддрд▓реА
.pypirc
рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрдкрдХрд░рдг, рдбреЗрдЯрд╛ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ URL, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд▓реЗрддрд╛ рд╣реИред
рддреЛ, рдЕрдкрдиреЗ рдШрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ
.pypirc
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
touch ~/.pypirc
рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдкрд╛рда рдЬреЛрдбрд╝реЗрдВ:
[distutils] index-servers = pypi testpypi [testpypi] repository: https://test.pypi.org/legacy username = your_username password = your_pypitest_password [pypi] username = your_username password = your_pypi_password
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реЗрд╡ рдХреА рдЧрдИ рд╣реИ, рди рдХрд┐ рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
chmod 600 ~/.pypirc
рдЕрдм рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ TestPyPI рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
twine upload -r testpypi dist/*
рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ PyPI рдореЗрдВ, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреИрдХреЗрдЬ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
twine upload dist/*
.pypirc
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдм рдЕрдкрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рд╣рдо рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред
рдЪрд░рдг 3. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ pytest рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдкрд╛рдпрдерди рдкрд╛рдЗрдерди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп, рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рдЕрдм , рдпрджрд┐ рдЖрдк pytest рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХред
requirements_dev.txt
рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ_dev.txt:
pytest==4.3.0
рдЖрдЗрдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
pip install requirements_dev.txt
рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
pip install -e .
рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдкрд░рд┐рд╡реЗрд╢ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рджреЛрдиреЛрдВ
pip
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЪрд░рдг 4. рдЯреЗрд╕реНрдЯ рдмрдирд╛рдирд╛
test
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓
test_your_package_name.py
рд░рдЦреЗрдВред рдореЗрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ
test_notebookc.py
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо
test_
рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ pytest рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЛ
test_notebookc.py
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
test_notebookc.py
рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣
test_notebookc.py
рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдЖрдкрдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ, рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
"""Tests for `notebookc` package.""" import pytest from notebookc import notebookc def test_convert(capsys): """Correct my_name argument prints""" notebookc.convert("Jill") captured = capsys.readouterr() assert "Jall" in captured.out
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рдкрд╣рд▓реЗ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдпрд╣рд╛рдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ
test_my_function_name
рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рдХрд╡рд░реЗрдЬ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд╝рдВрдХреНрд╢рди (
convert
) рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ
Jill
рдирд╛рдо рджреЗрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ - рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЙрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреНрд░рд╢реНрди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИред рд╡рд╣
my_name
рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
print(f"I'll convert a notebook for you some day, {my_name}.")
рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ
Jall
рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо
Jill
рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдкрд░ рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯрд┐рдВрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░
pytest
рд▓рд┐рдЦрдХрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдБред рдпрд╣ рдкрд░реАрдХреНрд╖рд╛ рдЕрд╕рдлрд▓ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛редрдпрд╣ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ, рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рд╡реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдЖрдкрдХреЛ рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ рд╣рд░реЗ рд╕рдВрджреЗрд╢ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдпрдерд╛ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдЙрди рд╕рднреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред
рд╣рдордиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛,
Jill
рдмрдпрд╛рди рдХреЛ
Jill
рдмрджрд▓
Jall
рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред рдЕрдм рдЗрд╕реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрдиредрдЕрдм рд╕рдм рдареАрдХ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд░реЗрдЦрд╛ рдЙрд╕ рдкрд╛рда рдореЗрдВ рдЧрд┐рд░ рдЬрд╛рдПрдЧреА рдЬрд┐рд╕реЗ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдпрджрд┐ рд╡рд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЯрд╛рдЗрдк-рдПрд░рд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдБ рдкрд╛рдпрдерди рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдкрд░ рдХреБрдЫ рдЕрдЪреНрдЫреА рдЪреАрдЬреЗрдВ рд╣реИрдВред
рдЬрдм рд╣рдордиреЗ рдкрд┐рдЫрд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдХреЛрдб рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ Test-Driven Development (TDD) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреАрдбреАрдбреА рдПрдХ рд╕рд┐рджреНрдз рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯреАрдбреАрдбреА рдХреЗ рдмрд┐рдирд╛ рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред
рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЯреАрдбреАрдбреА рд╕рд╛рдордЧреНрд░реА рд╣реИред
рдЕрдм, рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬреЛ
convert()
рдлрд╝рдВрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗ, рдФрд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреЗред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ, рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреИрдХреЗрдЬ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
рдЪрд░рдг 5. рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рд╕реЗрд╡рд╛ рдФрд░ рдЙрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг
рдЯреНрд░реИрд╡рд┐рд╕ CI рдПрдХ "рд╡рд┐рддрд░рд┐рдд рд╡реЗрдм рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╣реИред" рдЗрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ
рдЗрдбреЗрд░рд╛ рдиреЗ рдЦрд░реАрджрд╛ рдерд╛ред рдЕрдиреНрдп рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп, рдЦреБрд▓рд╛-рд╕реНрд░реЛрдд рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдЙрдкрдХрд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЖрдк рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рдирд┐рд░рдВрддрд░
рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
Https://travis-ci.org/ рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБред рдЗрд╕рдХреЗ рдмрд╛рдж, рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
Review and add your authorized organizations
рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдкрд░
Review and add your authorized organizations
рдХреЛ
Review and add your authorized organizations
ред рдЖрдкрдХреЛ GitHub рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
Organization access
рдЕрдиреБрднрд╛рдЧ рдореЗрдВ
Grant
рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдЦрд╛рддрд╛ рд╕реЗрдЯ рдХрд░реЗрдВрдореБрдЭреЗ рдиреЛрдЯрдмреБрдХрдЯреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП
notebookc
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдЦрд╛рддреЗ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдирд┐рдореНрди рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрдВрдбрд╛рд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕рдХреНрд░рд┐рдпрдгрдЕрдм
Settings
рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реИрд╡рд┐рд╕ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рднреЗрдЬреА рдЧрдИ рд╢рд╛рдЦрд╛рдПрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рд╕реЗрдЯрдЕрдкрдЕрдм рд╣рдо рдЬрд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЯреНрд░реИрд╡рд┐рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХреЗрдЧрд╛ред
рдЪрд░рдг 6. .travis.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ
.travis.yml
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
dist: xenial language: python python: 3.7.2 install: - pip install -r requirements_dev.txt - pip install -e . script: - pytest
dist: xenial
рдЯреНрд░реИрд╡рд┐рд╕ рдХреЛ рдЙрдмреБрдиреНрдЯреВ рдХреНрдирд┐рдЕрд▓ 16.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
dist: xenial
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрд╛рдпрдерди 3.7 рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Ubuntu Xenial рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
install
рд╕реЗрдХреНрд╢рди рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
pip install -e .
рдХрдорд╛рдВрдб рдЯреНрд░реИрд╡рд┐рд╕ рдХреЗ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯреНрд░реЗрд╡рд┐рд╕, рдЬреЛ рдХрд┐ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдЪрд░рдг 7. рдЯреНрд░реЗрд╡рд┐рд╕ рд╕реАрдЖрдИ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг
рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ GitHub рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ, PR рдХрд░реЗрдВред рдЯреНрд░реИрд╡рд┐рд╕ рдХреЛ рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рдо рдкрд░ рдЯреНрд░реИрд╡рд┐рд╕рдЯреНрд░реИрд╡рд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред
рдЯреНрд░реИрд╡рд┐рд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдпрджрд┐ рдкреАрдЖрд░ рдЕрд╕рдлрд▓ рд░рд╣рд╛ - рдЯреНрд░реИрд╡рд┐рд╕ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдЧрд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЕрд╕рдлрд▓ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред
рдЯреНрд░реИрд╡рд┐рд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЕрдкрдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рджреЗрдЦреЗрдВред рдпрд╣рд╛рдВ рдЖрдк рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрднрд╡рддрдГ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдЕрддрд┐рдерд┐ рдмрдиреЗрдВрдЧреЗ рдЬрдм рдЖрдк рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЕрд╕рдлрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рдерд╛ред
рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛, рдпрджрд┐ рдкреГрд╖реНрда рдореЗрдВ рд╣рд░реЗ рд▓реЗрдмрд▓ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рд╕рдВрдпреЛрдЬрди рд╕рдлрд▓ рд░рд╣реЗред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдкрдиреНрди рд╣реБрдИрдпрджрд┐ рдкреГрд╖реНрда рдкрд░ рд╣рд░реЗ рдпрд╛ рд▓рд╛рд▓ рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ
More options
рдореЗрдиреВ рдЦреЛрд▓реЗрдВ рдФрд░
Requests
рдЪрдпрди рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдпрд╣рд╛рдВ рд▓рд╛рд▓ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐
Build config file is required
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреА
Build config file is required
, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯреНрд░реИрд╡рд┐рд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЖрдкрдХреА
.travis.yml
рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧреАред
рдЯреНрд░реИрд╡рд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдИрдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдЕрд╕рдлрд▓ рд╣реИ, рдФрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдЖрдк PR рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд┐рдЯ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдЧрд╛ред
рдЕрдм рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рдЪрд░рдг 8. рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдирд╛
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╡рд░реЗрдЬ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдХреЗ рдХрд┐рд╕ рднрд╛рдЧ рдореЗрдВ, рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо
pytest-cov рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
requirements_dev.txt
рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдХреЛ
requirements_dev.txt
рдлрд╝рд╛рдЗрд▓:
pytest-cov==2.6.1
рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдБ:
pytest --cov=my_project_name
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
pytest --cov=notebookc
рдХрдорд╛рдВрдб
pytest --cov=notebookc
рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рдереАред
рдХреЛрдб рдХрд╡рд░реЗрдЬ рд░рд┐рдкреЛрд░реНрдЯрдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдХреЗрддрдХ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдХрдИ рд▓рд╛рдЗрдиреЗрдВ рд╣реЛрдВред
рдЕрдм рдЖрдЗрдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрддрд┐рд╣рд╛рд╕ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЪрд░рдг 9. рдХрд╡рд░реЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХрд╡рд░рд▓реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
coverallsрдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ GitHub рдЦрд╛рддреЗ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ
https://coveralls.io/ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдЖрдкрдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
requirements_dev.txt
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд▓рд╛рдЗрди
coveralls==1.6.0
рдЬреЛрдбрд╝реЗрдВ
coveralls==1.6.0
ред рдпрд╣ рдлрд╝рд╛рдЗрд▓, рд╡реИрд╕реЗ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХреЗ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
pip==19.0.3 wheel==0.33.0 twine==1.13.0 pytest==4.3.0 pytest-cov==2.6.1 coveralls==1.6.0
.travis.yml
рдлрд╝рд╛рдЗрд▓ рдХреЛ
.travis.yml
, рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ (рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рдпрд╣рд╛рдВ рд╣реЛрдЧрд╛):
dist: xenial language: python python: 3.7.2 install: тАФ pip install -r requirements_dev.txt тАФ pip install -e . script: тАФ pytest --cov=my_package_name after_success: тАФ coveralls
рдЕрдм, рдЬрдм рдЯреНрд░реИрд╡рд┐рд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛, рддреЛ рд╡рд╣ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЗ рдХрд╡рд░реЗрдЬ рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ Coveralls рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрдорд┐рдЯ рдХрд░реЗрдВ, GitHub рдХреЛ рдХреЛрдб рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред Coveralls рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╡рд░реЗрдЬ рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ, рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬ рд░рд┐рдкреЛрд░реНрдЯрдЕрдм, PR рдЪреЗрдХ рдХреЗ рдмреАрдЪ, Coveralls рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреЗрдХ рднреА рд╣реИред
Coveralls рдкреГрд╖реНрда рдкрд░, рдЖрдк рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ 100% рдХрд╡рд░ рд╣реИред
рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬ рдЬрд╛рдирдХрд╛рд░реАрдЕрдм рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рд╕реЗ рд▓реИрд╕ рдХрд░рддреЗ рд╣реИрдВред
рдЪрд░рдг 10. PyUp рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛
PyUp.io рд╕реЗрд╡рд╛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдкреБрд░рд╛рдиреА рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рдЙрдирдХреА рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдпрд╣ рд╕реЗрд╡рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ GitHub рдкрд░ рдкреИрдХреЗрдЬ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ -
https://pyup.io/ рдкрд░ GitHub рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛрдбрд╝рддреЗ рд╕рдордп,
every week
Update Schedules
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдЕрдкрдбреЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдпрд╣рд╛рдБ рдкреИрдХреЗрдЬ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреБрд░рд╛рдиреА рд╣реИрдВ, PyUp.io рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ред
рдкреИрдХреЗрдЬ рд╡рд┐рд╡рд░рдгрдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрдм рдирд┐рдХрд▓рддреЗ рд╣реИрдВред рдЬреНрдЮрд╛рди, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЖрдзреА рдЬреАрдд рд╣реИред рдФрд░ рджреВрд╕рд░реА рдЫрдорд╛рд╣реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрд▓-рдЕрдиреБрд░реЛрдз рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдкрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдмреНрд▓реИрдХ, рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ, рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ, рдХрд╡рд░реЙрд▓реНрд╕ рдФрд░ PyUp рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрднрд░рддрд╛, рдкреНрд░рд╛рд░реВрдк рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпреЗ рдЙрдкрдХрд░рдг рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗрдВрдЧреЗред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдк рдХрд┐рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
