рдХреВрд▓ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рд╣рд╛рдпрдХ рд╕рд┐рд░реНрдл рд╣рдорд╛рд░реЗ рд╕рд╛рде, рд▓рд┐рдВрдЯрд░, рдЯрд╛рдЗрдкрдХреЗрд░рд╛, рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛, рд╣рдорд╛рд░реЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдЬреИрд╕реЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓реЛрдЧ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рдкрд╛рдпрдерди рдХреЛрдб рдХреЗ рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЙрдкрдХрд░рдг рд╣реИрдВред
рд▓реЗрдХрд┐рди
рдореИрдХреНрд╕рд┐рдо рдорд╛рдЬрд╝реЗрд╡ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдХрд┐рддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдЙрд╕рдиреЗ рд╣рдореЗрдВ
рдореЙрд╕реНрдХреЛ рдкрд╛рдпрдерди рдХреЙрдиреНрдл ++ рдореЗрдВ рдмрддрд╛рдпрд╛ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдг рдФрд░ рдЗрд╕рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдЬреНрдЮрд╛рди рдиреЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рдХрд╛рд╕ рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдиреАрдЪреЗ рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдирд┐рд░реНрджреЗрд╢ рд╣реИред

рд╣рдореЗрдВ Pylint рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ: "рдХреНрдпреЛрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдЬреНрдЮрд╛рди рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?"
рдЖрдорддреМрд░ рдкрд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓рд┐рдВрдЯрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред рдЕрдм рдХреЛрдб рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╢рд░реНрдо рдирд╣реАрдВред
рд▓рдВрдмреЗ рд╕рдордп рддрдХ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд┐рдпрд╛рди рдЗрдВрд╕реНрдЯреАрдЯреНрдпреВрдЯ рдореЗрдВ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рд╕рд╛рде рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдорд╛рдореВрд▓реА рдЬреЛрдбрд╝-рдШрдЯрд╛рд╡ рдерд╛: рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рдпрдореЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЕрдзрд┐рдХрддрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдВрдмрд╛рдИ рдмрдврд╝рд╛ рджреАред
рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╡реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдореЗрдВ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░рдиреА рдкрдбрд╝реА рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕ рдкрд░ рдкрдврд╝реЗрдВред
рд╕реНрдкреАрдХрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдореИрдХреНрд╕рд┐рдо рдорд╛рдЬрд╝реЗрд╡ (
рдмреИрдХрд╕реНрд▓реИрд╢ ), 5 рд╕рд╛рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, CIAN рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЧрд╣рд░рд╛рдИ рд╕реЗ рдкрд╛рдпрдерди, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реАрдЦрддрд╛ рд╣реИред
рд╕рд┐рдпрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЬреНрдпрд╛рджрд╛рддрд░ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрд┐рдпрд╛рди рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯ рдПрдЬреЗрдВрд╕реА рд╣реИ рдФрд░ рд╡реЗ рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдпрд▓рдЯрд░реНрд╕ рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред
рд╣рдо рдПрдХ рддрдХрдиреАрдХреА рдХрдВрдкрдиреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рднреА рд░рд┐рдПрдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред
- рдкреНрд░рддрд┐ рджрд┐рди 1 рдорд┐рд▓рд┐рдпрди рдЕрджреНрд╡рд┐рддреАрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред
- рдорд╛рд╕реНрдХреЛ рдФрд░ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдореЗрдВ рдЕрдЪрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреА рдмрд┐рдХреНрд░реА рдФрд░ рдХрд┐рд░рд╛рдпреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдмреБрд▓реЗрдЯрд┐рди рдмреЛрд░реНрдбред 2018 рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрдШреАрдп рд╕реНрддрд░ рдкрд░ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рдкреВрд░реЗ рд░реВрд╕ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред
- рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдореЗрдВ рд▓рдЧрднрдЧ 100 рд▓реЛрдЧ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 30 рджреИрдирд┐рдХ рдкрд╛рдпрдерди рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╣рд░ рджрд┐рди, рдирдП рдХреЛрдб рдХреА рд╕реИрдХрдбрд╝реЛрдВ рдФрд░ рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВред рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ:
- рд╕рднреНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдХреЛрдбред
- рд╢реИрд▓реАрдЧрдд рд╕рдорд░реВрдкрддрд╛ред рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ "рд╡рд┐рдиреИрдЧреНрд░реЗрдЯ" рдХреЗ рдмрд┐рдирд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛
CIAN рдореЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ:
- рдкрд╣рд▓рд╛ рдЪрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ ред рдЬреЗрдирдХрд┐рдВрд╕ рд░реЛрдмреЛрдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ, рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рдмреАрдЪ рдПрдкреАрдЖрдИ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рд▓рд┐рдВрдЯрд░ рдХреБрдЫ рдЕрдЬреАрдм рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрд╡рд╕рд░ рд╣реИ рдЬреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреЗрдЬрддрд╛ рд╣реИред
- рдпрджрд┐ рдкрд╣рд▓рд╛ рдЪрд░рдг рд╕рдлрд▓ рдерд╛, рддреЛ рджреВрд╕рд░рд╛ рдЖрддрд╛ рд╣реИ - рджреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЕрдиреБрдореЛрджрдиред рд╡реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЛрдб рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдордВрдЬреВрд░реА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореБрджреНрджреЗ
рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рдХрд╛рд░рдг рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:
- рдЬрдм рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдЕрдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдпрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реЛ рддреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ;
- рдХреЛрдб рд╢реИрд▓реА рдореБрджреНрджреЛрдВред
рдпрджрд┐ рд▓рд╛рдЗрдирд░ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ?
рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐
рдкреАрдИрдкреА -8 рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рдХреА рддрд░рд╣, PEP-8 рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдорд╛рдирдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рджреВрд╕рд░реЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЖрдВрддрд░рд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд╕рд╛рде рдЖрдП рдХрд┐ рдХреИрд╕реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ
"рдЕрд╕реНрд╡реАрдХреГрдд рд╕реЗрд▓рд┐рдпрди рдкреНрд░рд╕реНрддрд╛рд╡" рдХрд╣рд╛ ред

"рдирд┐рдпрдд Cian рдкреНрд░рд╕реНрддрд╛рд╡" - рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдЕрдм рд▓рдЧрднрдЧ 15. рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИ рдФрд░ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрдХ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рдХреНрдпрд╛ рдмрд╛рдзрд╛ рд╣реИ?
рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рд▓рд┐рдВрдЯрд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╡рд╣ рдЬрд╛рдирддрд╛ рдерд╛ - рд╡реЗ рдЖрдВрддрд░рд┐рдХ рд╣реИрдВред
рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╡рд╣ рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдореАрдХреНрд╖рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдХрд╛рд░реНрдп рдкреБрдирд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд╛рд░реНрдп рдХреА рд░рд┐рд▓реАрдЬ рдХрд╛ рд╕рдордп рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рдж, рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд╛рд░реНрдп рдореЗрдВ рдХреНрдпрд╛ рдерд╛ред
рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдФрд░ рд╕рдореАрдХреНрд╖рдХреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреА рдЧрддрд┐ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдХреЛрдб рдХреЗ рддрд░реНрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдкрд░реАрдХреНрд╖рдХ рджреГрд╢реНрдп рд╢реИрд▓реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╡реЗ рд▓рд╛рдЗрдирд░ рдХрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рд╡реЗ рдХреЛрдб рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рд╕реЗ рд╕реНрдХреИрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдпрд╛рдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдирд╛ рд▓рд┐рдВрдЯрд░ рдордд рд▓рд┐рдЦреЛ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рд╕рдордЭреМрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рддреЛ рд╣рдо рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдВрдЯрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ?
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рд╡рд┐рдЪрд╛рд░ рдмреЗрд╡рдХреВрдл рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рд┐рдВрдЯрд░ рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣ рдЬреЗрдирдХрд┐рдВрд╕ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рд╕реБрдВрджрд░ рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрд░реЛрдз рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ,
рджреВрд╕рд░реЗ рд▓рд┐рдВрдЯрд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ ред
рддреЛ рдЕрдЧрд░ рд╣рдо рдЕрдкрдирд╛ рд▓рд┐рдВрдЯрд░ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?
рдкрд╛рдЗрд▓рд┐рдВрдЯ рдкреНрд▓рдЧрд┐рди рд▓рд┐рдЦреЗрдВ
рдЖрдк рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЪреЗрдХрд░реНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрддрд░рд┐рдХ рдирд┐рдпрдо рдХреЗ рддрд╣рдд, рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЪреЗрдХрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рдЬрд╛рдВрдЪреЗрдЧрд╛ред
рдРрд╕реЗ рдЪреЗрдХрд░реНрд╕ рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ рез
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреЛрдб рдореЗрдВ "TODO" рдлрд╝реЙрд░реНрдо рдХреА рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд╣рдЯрд╛рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВред рдРрд╕реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдХреГрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛
рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдПрдХ рд╡рд╛рджрд╛ рд▓рд┐рдЦрд╛, рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдФрд░ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорди рдХреА рд╢рд╛рдВрддрд┐ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рдЧрдпрд╛ред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
- рд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд▓рдЯрдХреА рд╣реБрдИ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдХреЛрдб рдЕрдЯреЗ рдкрдбрд╝реЗ рд╣реИрдВ;
- рддрдХрдиреАрдХреА рдЛрдг рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрдорд╛ рд╣реБрдЖ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рд╕рдлрд▓ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд░рд┐рд▓реАрдЬ 3 рд╕рд╛рд▓ рдореЗрдВ рд╣реБрдИ? рд╢рд╛рдпрдж рд╣рд╛рдБред рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдб рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдорд╛рдзрд╛рди: Pylint рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЪреЗрдХрд░ рд▓рд┐рдЦреЗрдВ
рдЖрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдРрд╕реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд╛рджреЗ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХрд░ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВред рдлрд┐рд░ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗред
рд╣рдореЗрдВ TODO рдлрд╝реЙрд░реНрдо рдХреА рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЬреАрд░рд╛ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╣реИред рд▓рд┐рдЦрддреЗ рд╣реИрдВред
Pylint рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдЪреЗрдХрд░ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЪреЗрдХрд░ рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
class TodoIssueChecker(BaseChecker): _ _implements_ _ = IRawChecker
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣
IRawChecker рд╣реИ - рддрдерд╛рдХрдерд┐рдд "рдХрдЪреНрдЪрд╛" рдЪреЗрдХрд░ред
рдПрдХ рдХрдЪреНрдЪрд╛ рдЪреЗрдХрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░реНрдЬ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкрд░, рдЪреЗрдХрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ред
рдЪреЗрдХрд░ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реВрдЪреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рдЗрд╕реЗ рдЬрд╛рд░реА рдХрд░реЗрдВрдЧреЗ:
msgs = { '9999': (' TODO ', issue-code-in-todo', ' ')}
рд╕рдВрджреЗрд╢ рдореЗрдВ рд╣реИ:
- рд╡рд░реНрдгрди рдЫреЛрдЯрд╛ рдФрд░ рд▓рдВрдмрд╛ рд╣реИ;
- рдЪреЗрдХрд░ рдХреЛрдб рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдореЗрдиреЗрдореЛрдирд┐рдХ рдирд╛рдо рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрджреЗрд╢ рд╣реИред
рд╕рдВрджреЗрд╢ рдХреЛрдб рдореЗрдВ "C1234" рд░реВрдк рд╣реИ, рдЬрд┐рд╕рдореЗрдВ:
- рдкрд╣рд▓рд╛ рдкрддреНрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХреАрдХреГрдд рд╣реИ: [рд╕реА] рдЖрд╡рд┐рд╖реНрдХрд╛рд░; [рдбрдмреНрд▓реНрдпреВ] arning; [рдИ] рдпреЛрдЧ; [рдПрдл] рдЕрдЯрд▓; [рдЖрд░] efactoringред рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд░рд┐рдкреЛрд░реНрдЯ рддреБрд░рдВрдд рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ: рд╕рдордЭреМрддреЛрдВ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдпрд╛ рдШрд╛рддрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рддрддреНрдХрд╛рд▓ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- 4 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ Pylint рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдпред
рдпрджрд┐ рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЪреЗрдХ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдк рдкрд╛рдЗрд▓рд┐рдВрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдЕрдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдХреЛрдб рдпрд╛ рдирд╛рдордорд╛рддреНрд░ рдХрд╛ рдирд╛рдо:
Pylint рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЕрд▓реНрдлрд╝рд╛рдиреНрдпреВрдореЗрд░рд┐рдХ рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ mnemonic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ рджреГрд╢реНрдп рд╣реИред
рдЕрдЧрд▓рд╛ рдХрджрдо
process_module рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд
рдХрд░рдирд╛ рд╣реИ ред

рдирд╛рдо рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдлрд┐рд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рдиреЛрдб рдкреИрд░рд╛рдореАрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдиреЛрдб рдореЗрдВ рдПрдХ
рд╕реНрдЯреНрд░реАрдо рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди рдХреЛ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЖрдк рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪреЗрдХрд░ рдХреЛрдб рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдлреЙрд░реНрдо
'рдЗрд╢реНрдпреВ-рдХреЛрдб-рдЯреВ-рдЯреВ' рдлреЙрд░реНрдо
рдХреА рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХ рджреЗрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдЪреЗрдХрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХреЗред рдпрд╣
рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
def register(linter: Pylinter) -> None: linter. register_checker ( TodoIssueChecker(linter) )
- Pylint рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлрдВрдХреНрд╢рди рдореЗрдВ рдЖрддрд╛ рд╣реИред
- рдпрд╣ register_checker рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред
- рд╣рдо рдЪреЗрдХрд░ рдХреЛ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдЪреЗрдХрд░ рдореЙрдбреНрдпреВрд▓ PYTHONPATH рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ Pylint рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЖрдпрд╛рдд рдХрд░ рд╕рдХреЗред
рдПрдХ рдкрдВрдЬреАрдХреГрдд рдкрд░реАрдХреНрд╖рдХ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рдмрд┐рдирд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
$ cat work.
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЪрд▓рд╛рдПрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрд╕рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рд▓реЛрдбрд░
-рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХрд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рд▓рд┐рдВрдЯрд░ рдХреЗ рдЕрдВрджрд░, рджреЛ рдЪрд░рдг рдЪрд▓рд╛рдПрдВред
рдЪрд░рдг 1. рдкреНрд▓рдЧрдЗрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ
- рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡рд╛рд▓реЗ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкрд╛рдЗрд▓рд┐рдВрдЯ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдмрд╛рд╣рд░реА рдЪреЗрдХрд░реНрд╕ рд╣реИрдВред рд╡реЗ рд╕рднреА рдПрдХ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ рдФрд░ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
- рд╣рдо рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ - рдореЙрдбреНрдпреВрд▓.рдЧреНрд░рд┐рд╕реНрдЯрд░ (рд╕реНрд╡) ред рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдХрд░ рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЪреЗрдХ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдПред
рдЪрд░рдг 2. рдЪреЗрдХрд░реНрд╕ рдХреЗ рдкреВрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
рдЪрд░рдг 1 рдХреЗ рдмрд╛рдж, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреЗрдХрд░реНрд╕ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдмрдиреА рд╣реБрдИ рд╣реИ:
- рдПрдПрд╕рдЯреА рдЪреЗрдХрд░;
- рдХрдЪреНрдЪрд╛ рдЪреЗрдХрд░;
- рдЯреЛрдХрди рдЪреЗрдХрд░ред

рд╕реВрдЪреА рд╕реЗ рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрдЪреНрдЪреЗ рдЪреЗрдХрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ: рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдЪреЗрдХрд░реНрд╕ IRawChecker рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рд▓реЗрддреЗ рд╣реИрдВред
рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрдирд┐рдд рдЪреЗрдХрд░ рдХреЗ рд▓рд┐рдП,
checker.process_module (рдореЙрдбреНрдпреВрд▓) рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рдЪреЗрдХ рдЪрд▓рд╛рдПрдБред
рдкрд░рд┐рдгрд╛рдо
рдЬрд╛рдБрдЪрдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЪрд▓рд╛рдПрдБ:
$ cat work.
рдПрдХ рд╕рдВрджреЗрд╢ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ TODO рдХреЗ рд╕рд╛рде рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ рдФрд░ рдЕрдм рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рд╕реЗ рдХреЛрдб рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдХреЛрдб рд▓реЗрдЦрдХ рдХреЛ рдПрдХ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝рдирд╛ рдЙрдЪрд┐рдд рд╣реИред рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ рдереЛрдбрд╝реА рддреЗрдЬ рд╣реЛрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЦреНрдпрд╛ 2. рдЦреЛрдЬрд╢рдмреНрдж-рддрд░реНрдХ
рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рд╕реНрдерд┐рддрд┐рдЧрдд рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ рд╣реИрдВ, рддреЛ рдЬрдм рд╡реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рддрд░реНрдХ рдХрд╣рд╛рдВ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред
рд╕рдорд╕реНрдпрд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:
get_offer_by_cian_id( "sale", rue, 859483, )
рдХреЛрдб рдореЗрдВ
рдмрд┐рдХреНрд░реА рдФрд░
рдЯреНрд░реВ рд╣реИ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕рдореЗрдВ рдХрдИ рддрд░реНрдХ рд╣реИрдВ, рдХреЗрд╡рд▓ рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛:
get_offer_by_cian_id( deal_type="sale", truncate=True, cian_id=859483, )
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХреЛрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╣рд╛рдВ рд╣реИ рдФрд░ рд╣рдо рдЙрдирдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП рдПрдХ рдЪреЗрдХрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬреЛ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП "рдХрдЪреНрдЪреЗ" рдЪреЗрдХрд░ рдХреЛ рдРрд╕реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЖрдк рд╕реБрдкрд░-рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ Pylint
AST рд╕рд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреЗрдХрд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдПрдПрд╕рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧреАрдд
рдПрдПрд╕рдЯреА рдпрд╛ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдЯреНрд░реА рдХреЛрдб рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдЬрд╣рд╛рдВ рд╢реАрд░реНрд╖ рдСрдкрд░реЗрдЯреНрд╕ рд╣реИ рдФрд░ рдкрддреНрддрд┐рдпрд╛рдВ рдСрдкрд░реЗрдЯрд░ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓, рдЬрд╣рд╛рдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рддрд░реНрдХ рдФрд░ рджреЛ рдирд╛рдорд┐рдд рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдПрдХ рд╕рд╛рд░ рдкреЗрдбрд╝ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:

рдЯрд╛рдЗрдк
рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реАрд░реНрд╖ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рд╣реИ:
- рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдлрдВрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рдЬрд╣рд╛рдВ рдкреНрд░рдХрд╛рд░ рдХрд╛рдВрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рд╣реИ рдФрд░ 112 рдХрд╛ рдореВрд▓реНрдп рд╣реИ;
- рдирд╛рдорд┐рдд рддрд░реНрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреАрд╡рд░реНрдбред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рд░реНрдп:
- рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреЙрд▓ (рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓) рдХреЗ рд╕рд╛рде рдиреЛрдбреНрд╕ рдвреВрдВрдвреЗрдВред
- рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реА рдЧрдИ рддрд░реНрдХреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред
- рдпрджрд┐ 2 рд╕реЗ рдЕрдзрд┐рдХ рддрд░реНрдХ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдиреЛрдб рдореЗрдВ рдХреЛрдИ рд╕реНрдерд┐рддрд┐рдЧрдд рддрд░реНрдХ рдирд╣реАрдВ рд╣реИрдВред
- рдпрджрд┐ рд╕реНрдерд┐рддрд┐рдЧрдд рддрд░реНрдХ рд╣реИрдВ, рддреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рдПрдВред
ll( func=Name(name='get_offer'), args=[Const(value=1298880)], keywords=[ тАж ]))]
рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдПрд╕рдЯреА-рдЖрдзрд╛рд░рд┐рдд рдЪреЗрдХрд░ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдмреЗрд╕ рдЪреЗрдХрд░ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░
рдЖрдИрдПрд╕реНрдЯреНрд░реЛрдЗрдб рдХреИрдЪрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
class NonKeywordArgsChecker(BaseChecker): -_ _implements_ _ = IAstroidChecker
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрджреЗрд╢ рд╕реВрдЪреА рдореЗрдВ рдЪреЗрдХрд░ рд╡рд┐рд╡рд░рдг, рд╕рдВрджреЗрд╢ рдХреЛрдб, рд▓рдШреБ mnemonic рдирд╛рдо рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
msgs = { '9191': (' ', keyword-only-args', ' ')}
рдЕрдЧрд▓рд╛ рдЪрд░рдг
visit_call рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ:
def visit_call(self, node: Call) тАж
рд╡рд┐рдзрд┐ рдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдореБрд▓рд╛рдХрд╝рд╛рдд_ рдЙрдкрд╕рд░реНрдЧ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖ рдХрд╛ рдирд╛рдо рдЖрддрд╛ рд╣реИред
- рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд░ рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЪреЗрдХрд░ рдХрд╛ рджреМрд░рд╛_ <рдирд╛рдо> рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред
- рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВред
- рдкреБрди: рдЕрдкрдиреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдЬрд░рддрд╛ рд╣реИред
- рдиреЛрдб рдЫреЛрдбрд╝рддреЗ рд╕рдордп, рдЗрд╕реЗ рд▓реАрд╡_ <рдирд╛рдо> рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, visit_call рд╡рд┐рдзрд┐ рдПрдХ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓-рдЯрд╛рдЗрдк рдиреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реНрдХ рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╕рдВрдмрдВрдзреА рддрд░реНрдХ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдиреЛрдб рдХреЛ рд╣реА рдХреЛрдб рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред
def visit_call(self, n): if node.args and len(node.args + node.keywords) > 2: self.add_message( 'keyword-only-args', node=node )
рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЪреЗрдХрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ: рд╣рдо рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд░рдЬрд┐рд╕реНрдЯрд░_рдЪреЗрдХрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЪреЗрдХрд░ рдХреЛ рд╕реНрд╡рдпрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
def register(linter: Pylinter) -> None: linter.register_checker( TodoIssueChecker(linter) )
рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ 3 рддрд░реНрдХ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдирд╛рдо рд╣реИ:
$ cat work. get_offers(1, True, deal_type="sale") $ Pylint work.py --load-plugins non_kwargs_checker тАж
рдпрд╣ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЧрд▓рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рдЗрд▓рд┐рдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред
рдкреНрд▓рдЧрдЗрди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг 1 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИред
рдЪрд░рдг 2. рдПрдПрд╕рдЯреА рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ
рдХреЛрдб рдХреЛ AST рдЯреНрд░реА рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдПрд╕реНрдЯреНрд░реЛрдЗрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛
рд╣реИ ред
рдПрд╕реНрдЯреНрд░реЛрдЗрдб, рдПрдПрд╕рдЯреА (stdlib) рдХреНрдпреЛрдВ рдирд╣реАрдВ
рдПрд╕реНрдЯреНрд░реЙрдпрдб рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рдкрд╛рдпрдерди рдПрдПрд╕рдЯреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП_рд╕реНрдЯреИрдЯ рдЯрд╛рдЗрдк рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд░ , рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреАрдИрдкреА 484
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛
рд╣реИред рдЯрд╛рдЗрдкреНрдб_рд╕реНрдЯ рдПрдПрд╕рдЯреА рдХреА рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╡рд╣реА рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рдПрдПрд╕рдЯреА рдореЗрдВ рд╣реИрдВ, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдорд░рдореНрдордд рдХреА рдЬрд╛рддреА рд╣реИред
from module import Entity def foo(bar):
рдкрд╣рд▓реЗ, рдПрд╕реНрдЯреНрд░реЛрдЗрдб рдиреЗ рдорд╛рдирдХ рдПрдПрд╕рдЯреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдкрд╛рдпрдерди рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд taiphints рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк Pylint рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рддрдХ рдпрд╣ рдЕрдкреНрд░рдпреБрдХреНрдд рдЖрдпрд╛рдд рдкрд░ рд╢рдкрде рд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдпрд╛рддрд┐рдд рдЗрдХрд╛рдИ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
GitHub рдХреЗ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, Guido Van Rossum рдПрд╕реНрдЯреНрд░реЛрдЗрдб рдореЗрдВ рдЖрдП рдФрд░ рдХрд╣рд╛: "рджреЛрд╕реНрддреЛрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ Pylint рд╣реИ рдЬреЛ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯрд╛рдЗрдк рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд░ рд╣реИ рдЬреЛ рдЗрд╕ рд╕рдм рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ рджреЛрд╕реНрдд рд╣реИрдВ! тАЭ
рдХрд╛рдо рдореЗрдВ рдЙрдмрд╛рд▓ рдЖрдиреЗ рд▓рдЧрд╛ рд╣реИ! 2 рд╕рд╛рд▓ рдмреАрдд рдЧрдП, рдЗрд╕ рд╡рд╕рдВрдд Pylint рдиреЗ рдЯрд╛рдЗрдк рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдРрд╕реА рдЪреАрдЬреЛрдВ рдкрд░ рд╢рдкрде рд▓реЗрдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред Taiphints рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рдЕрдм рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдПрд╕реНрдЯреНрд░реЛрдЗрдб рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдПрд╕рдЯреА рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк
рдЖрдпрд╛рдд * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
рд╣реИрдВ , рддреЛ рдпрд╣ рд╕рдм рдХреБрдЫ рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдкреНрд▓рдЧ рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореЗрдЯрд╛ рдХреНрд▓рд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрд╕реНрдЯреНрд░реЛрдЗрдб рдХреЛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп, Pylint рдпрд╣ рд╢рдкрде рд▓реЗрдЧрд╛ рдХрд┐ рдЙрд╕рдХреЗ рдПрдХреНрд╕реЗрд╕ рд╣реЛрдиреЗ рдкрд░ рдореЙрдбрд▓ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдкреНрд▓рдЧ рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдПрд╕реНрдЯреНрд░реЛрдЗрдб рдХреЛ рдЕрдореВрд░реНрдд рдкреЗрдбрд╝ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдЬрдЧрд░ рдХреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред
- рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдПрдПрд╕рдЯреАред
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг
pylint-django рд╣реИ ред рдЬрдЯрд┐рд▓ рдбреЗрдВрдЬреЛ-рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд▓рд╛рдЗрдирд░ рдЕрдХреНрд╕рд░ рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИред Pylint-django рдмрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред
рдЪрд░рдг 3. рдЪреЗрдХрд░реНрд╕ рдХреЗ рдкреВрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
рд╣рдо рддрдкрд╛рдХ рд╕реЗ рд▓реМрдЯреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд┐рд░ рд╕реЗ рдЪреЗрдХрд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ рдЬреЛ рдПрдПрд╕рдЯреА рдЪреЗрдХрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
рдЪрд░рдг 4. рдиреЛрдбреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕ рдЪреЗрдХрд░реНрд╕
рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдХрд░ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рд╡реЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
- visit_ <рдиреЛрдб рдирд╛рдо>
- lev_ <рдиреЛрдб рдирд╛рдо>ред
рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдкреЗрдбрд╝ рдкрд░ рдЪрд▓рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдХрд┐рди рдиреЛрдбреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдХреБрдВрдЬреА рдиреЛрдб рдХрд╛ рдирд╛рдо рд╣реИ, рдореВрд▓реНрдп рдЙрди рдЪреЗрдХрд░реНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдЗрд╕ рдиреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рддрдереНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
_visit_methods = dict( < > : [checker1, checker2 ... checkerN] )
рд▓реАрд╡-рдореЗрдердбреНрд╕ рдХреЗ рд╕рд╛рде рднреА: рдиреЛрдб рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА, рдЙрди рдЪреЗрдХрд░реНрд╕ рдХреА рд╕реВрдЪреА рдЬреЛ рдЗрд╕ рдиреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рддрдереНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
_leave_methods = dict( < >: [checker1, checker2 ... checkerN] )
рдкрд╛рдЗрд▓рд┐рдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд╣рд╛рдВ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реНрдХ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐рдЧрдд рддрд░реНрдХ рд╣реИ:
$ cat work. get_offers(1, True, deal_type="sale") $ Pylint work.py --load-plugins non_kwargs_checker C: 0, 0: c >2 (keyword-only-args)
рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдЕрдм, рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рд▓рд╛рдЗрдирд░ рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд░реЗрдЧрд╛ред
рд╣рдордиреЗ рдЕрдкрдирд╛ рд╕рдордп рдмрдЪрд╛рдпрд╛ , рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдХрд╛рд░реНрдп рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рдФрд░ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП?
Pylint рдЖрдкрдХреЛ рдЪреЗрдХрд░реНрд╕ рдХреА рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд▓рд┐рдВрдЯрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдкрд░реАрдХреНрд╖рдг-рдкрд░реАрдХреНрд╖рдХ рдПрдХ рд╡рд░реНрдЧ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдЕрдореВрд░реНрдд
CheckerTestCase рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
рдорд┐рд▓рд╛ рд╣реИ ред рдЙрд╕ рдЪреЗрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдЙрд╕рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред
class TestNonKwArgsChecker(CheckerTestCase): CHECKER_CLASS = NonKeywordArgsChecker
рдЪрд░рдг 1. рд╣рдо рдЙрд╕ рдХреЛрдб рдХреЗ рднрд╛рдЧ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдПрд╕рдЯреА-рдиреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдЬрд╛рдБрдЪ рд░рд╣реЗ рд╣реИрдВред
node = astroid.extract_node( "get_offers(3, 'magic', 'args')" )
рдЪрд░рдг 2. рдЬрд╛рдБрдЪреЗрдВ рдХрд┐ рдЪреЗрдХрд░, рдиреЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рддреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢ рдХреЛ рдлреЗрдВрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
with self.assertAddsMessages(message): self.checker.visit_call(node)
TokenChecker
рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪреЗрдХрд░ рд╣реИ рдЬрд┐рд╕реЗ
рдЯреЛрдХрдирдХреЗрдЪрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ
рдЯреЛрдХрди рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдПрдХ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдХреИрдирд░ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдЯреЛрдХрди рдХреА рд╕реВрдЪреА рдореЗрдВ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╛рдо, рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдХреАрд╡рд░реНрдб рдЯрд╛рдЗрдк NAME рдХреЗ тАЛтАЛрдЯреЛрдХрди рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕реАрдорд╛рдВрдХрдХ, рдХреЛрд╖реНрдардХ, рдХреЙрд▓рди рдУрдкреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдмрди рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рд▓рд╛рдЗрди рдлреАрдб рдФрд░ рд░рд┐рд╡рд░реНрд╕ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЛрдХрди рд╣реИрдВред
Pylint TokenChecker рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдореЙрдбреНрдпреВрд▓ рдЯреЛрдХрди рд╣реИред
- рдЯреЛрдХрди рдХреА рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реВрдЪреА рд╕рднреА рдЪреЗрдХрд░реНрд╕ рдХреЛ рджреА рдЬрд╛рддреА рд╣реИ рдЬреЛ ITokenChecker рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ process_tokens (рдЯреЛрдХрди) рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ ред
рд╣рдордиреЗ рдЯреЛрдХрдирдХреЗрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдкрд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдкрд╛рдЗрд▓рд┐рдВрдЯ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рдЬрд╛рдБрдЪ рдХрд░реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рднреА рдЯреЛрдХрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рда рдХреЗ рд╕рд╛рде рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рд╕рд╛рдХреНрд╖рд░рддрд╛ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдЯреЙрдк-рд╢рдмреНрдж рд╕реВрдЪрд┐рдпреЛрдВ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐ред
- рдЗрдВрдбреЗрдВрдЯ , рд╕реНрдкреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ ред
- рддрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╛рдпрдерди 3 рдпреВрдирд┐рдХреЛрдб рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ ASCI рдЕрдХреНрд╖рд░ рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдореЗрдВ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдереАред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд▓рд┐рдВрдЯрд░ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛, рд╡реНрдпрд░реНрде рдХреЛрдб рд╕реНрдХреИрдирд┐рдВрдЧ рдкрд░ рдЕрдкрдирд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдФрд░ рд▓реЗрдЦрдХ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ред Pylint рдХреЗ рд╕рд╛рде рд╣рдо:
- рд▓рд╛рдЗрдирд░ рдХреЛ рдирд┐рдпрдорд┐рдд рдЬрд╛рдБрдЪ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд, рдЙрд╕рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд╕рдордЭреМрддреЗ рд▓рд╛рдЧреВ рдХрд┐рдПред
- рд╡реГрджреНрдзрд┐ рдХреА рдЧрддрд┐ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛрдб рдХреА рд╕рдореАрдХреНрд╖рд╛ред
- рдЕрд╕реНрд╡реАрдХреГрдд рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЧрдИ, рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪреЗрдХрд░ рдЖрдзреЗ рдШрдВрдЯреЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдПрдХ рдЬрдЯрд┐рд▓ред рдЪреЗрдХрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ рдФрд░ рдХрдИ рдЧреИрд░-рдЕрд╕реНрд╡реАрдХреГрдд рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рддрд╛ рд╣реИред
рдЖрдк рдкрд╛рдЗрд▓рд┐рдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЪреЗрдХрд░реНрд╕ рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪреЗрдХрд░реНрд╕ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЦрд░рд╛рдм рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЛрдХрдирдХреЗрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ рдПрдХ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреЗрдХрд░ рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
GitHub рдкрд░ Pylint рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдирдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдЪреЗрдХрд░реНрд╕ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдВред
Pylint рдЖрдВрддрд░рд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдЬреНрдЮрд╛рди рдорд╛рдирд╡-рдШрдВрдЯреЗ рдмрдЪрд╛рддрд╛ рд╣реИ, рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ред рдЕрдкрдирд╛ рд╕рдордп рдмрдЪрд╛рдПрдВ, рдЕрдЪреНрдЫрд╛ рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдФрд░
рд▓рд┐рдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВредрдЕрдЧрд▓рд╛ рдореЙрд╕реНрдХреЛ рдкрд╛рдпрдерди рдХреЙрдиреНрдл ++ рд╕рдореНрдореЗрд▓рди 5 рдЕрдкреНрд░реИрд▓, 2019 рдХреЛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╢реБрд░реБрдЖрддреА рдмрд┐рд░рдл рдЯрд┐рдХрдЯ рдмреБрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдФрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реИ, рдлрд┐рд░ рдпрд╛рддреНрд░рд╛ рдореБрдлреНрдд рд╣реЛрдЧреА, рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рддреИрдпрд╛рд░реА рдкрд░ рдХреЛрдЪрд┐рдВрдЧ рд╕рд╣рд┐рдд рдЕрдЪреНрдЫреЗ рдмрдиреНрд╕ рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗред
рд╣рдорд╛рд░рд╛ рд╕рдореНрдореЗрд▓рди рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ, рдЙрджреНрдпреЛрдЧ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдФрд░ рдЪреАрдЬреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рд╣реИ, рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрдпрд╛рд░: рдмреИрдХрдПрдВрдб рдФрд░ рд╡реЗрдм, рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдПрдЖрдИ / рдПрдордПрд▓, рдкрд░реАрдХреНрд╖рдг, рдЖрдИрдУрдЯреАред рдпрд╣ рдЧрд┐рд░рд╛рд╡рдЯ рдореЗрдВ рдХреИрд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рд╣рдорд╛рд░реЗ рдкрд╛рдпрдерди рдЪреИрдирд▓ рдкрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦреЗрдВ рдФрд░ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ - рдЬрд▓реНрдж рд╣реА рд╣рдо рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд░рд┐рдкреЛрд░реНрдЯ рдореБрдлреНрдд рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд░реЗрдВрдЧреЗред