рдкрд╛рдпрдерди рдЖрдпрд╛рдд рд╕реНрд╡рдЪрд╛рд▓рди

рдХреЛрдХреЗ рдмрд╛рдж
import math import os.path import requests # 100500 other imports print(math.pi) print(os.path.join('my', 'path')) print(requests.get) 
 import smart_imports smart_imports.all() print(math.pi) print(os_path.join('my', 'path')) print(requests.get) 
рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ 2012 рд╕реЗ рдореИрдВ рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗред рдЕрдЬрдЧрд░ рдореЗрдВ рд╣реАред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ, рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ 1000 рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдФрд░ 120,000 рд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рдпрдирд┐рдпрд░ рдХреЛрдб рд╣реИрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрд╣ рдЙрдкрдЧреНрд░рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдврд╝ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред

рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрдпрд╛рдд рдХреЗ рдлрд░реНрд╢ рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рд╕реЗ рдердХ рдЧрдпрд╛ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рддреЛ рд╕реНрдорд╛рд░реНрдЯ_рдЗрдордкреЛрд░реНрдЯреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЬрдиреНрдо ( рдЬреАрдердм , рдкрд┐рдкреА ) рд╣реБрдЖ рдерд╛ред

рд╡рд┐рдЪрд╛рд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдХреЛрдИ рднреА рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдВрддрддрдГ рд╕рдм рдХреБрдЫ рдирд╛рдордХрд░рдг рдкрд░ рдЕрдкрдирд╛ рд╕рдордЭреМрддрд╛ рдмрдирд╛рддреА рд╣реИред рдпрджрд┐ рдЗрд╕ рд╕рдордЭреМрддреЗ рдХреЛ рдЕрдзрд┐рдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рдЗрдХрд╛рдИ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдЪрд░ рдХреЗ рдирд╛рдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ math.pi рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП import math рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА - рд╣рдо math.pi рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ math рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИред

рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдкрд╛рдпрдерди> = 3.5 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг, рдХрд╡рд░реЗрдЬ> 95% рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдореИрдВ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдХреИрдЯ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?


рддреЛ, рд╣реЗрдбрд░ рдЗрдореЗрдЬ рд╕реЗ рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. smart_imports.all() рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди smart_imports.all() рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдПрд╕рдЯреА рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  2. рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЪрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ;
  3. рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХрд╛ рдирд╛рдо рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ рдореЙрдбреНрдпреВрд▓ (рдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдирд┐рдпрдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЗрдХрд╛рдИ рдкрд╛рдИ рдЧрдИ рд╣реИ, рддреЛ рдирд┐рдореНрди рдирд┐рдпрдореЛрдВ рдХреА рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
  4. рдкрд╛рдпрд╛ рдЧрдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди (рдпрд╛ рдЗрди рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ) рдореЗрдВ рд▓реЛрдб, рдЖрд░рдВрдн рдФрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕рд╣рд┐рдд рд╕рднреА рдХреЛрдб рдореЗрдВ рдЕрдирдзрд┐рдХреГрдд рдЪрд░ рдЦреЛрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдСрдЯреЛ-рдЖрдпрд╛рдд рдХреЗрд╡рд▓ рдЙрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ smart_imoprts.all() ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЖрдпрд╛рддреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЬрдЯрд┐рд▓ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рднреА рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд╛рдардХ рдпрд╣ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдЧрд╛ рдХрд┐ рдПрдПрд╕рдЯреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  • CPython рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рддрд╛ рд╣реИ;
  • рджреВрд╕рд░реА рдмрд╛рд░ smart_imports рдЗрд╕реЗ рдПрдХ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди smart_imports.all() рдмрдирд╛рддрд╛ рд╣реИред

рдПрдПрд╕рдЯреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ PEP-0302 рдореЗрдВ рд▓рд╛рдЧреВ рдЖрдпрд╛рдд рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрдпрд╛рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдпрд╛рдд рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЖрдк рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ (рд╣реБрдХ рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛), рдореИрдВ рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рд╕реАрдкреАрдереЙрди рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ (рд╕реА-рд╢) рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдПрдПрд╕рдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкрд╛рдпрдерди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЦрдЧреЛрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдПрд╕рдЯреА рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдпрд╛рдд рдирд┐рдпрдо


рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ:

  1. рдирд╛рдо рдХреЗ рд╕рдЯреАрдХ рд╕рдВрдпреЛрдЧ рд╕реЗ, рдпрд╣ рдЪрд╛рд▓реВ (рдЕрдЧрд▓реЗ рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ) рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред
  2. рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ:
    • рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рд╕рдВрдХреБрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди рд╕реЗ;
    • рдиреЗрд╕реНрдЯреЗрдб рдкреИрдХреЗрдЬ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдпреМрдЧрд┐рдХ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рдбреЙрдЯреНрд╕ рдХреА рдЬрдЧрд╣ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ os_path рдЪрд░ os_path рд╣реИ, рддреЛ os_path рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  3. рдирд╛рдо рдХреЗ рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди рд╕реЗ, рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рддреГрддреАрдп-рдкрдХреНрд╖ рдкреИрдХреЗрдЬ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╕рд┐рджреНрдз рдкреИрдХреЗрдЬ рдЕрдиреБрд░реЛрдз ред

рдЙрддреНрдкрд╛рджрдХрддрд╛


рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдПрдПрд╕рдЯреА рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░рдг, рдкрд╣рд▓реЗ рд░рди рдХрд╛ рд╕рдордп рд▓рдЧрднрдЧ 1.52 рдЧреБрдирд╛ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рдХрд╛ рд╕рдордп рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдпрд╛рдд рд╕рдордп рдХреЗ рдмрдЬрд╛рдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реЛрддрд╛ рд╣реИред

рдЬрдм рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдПрдПрд╕рдЯреА рд╕реЗ рд╕реА рддрдХ рдХреЗ рдХрд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ - рдЗрд╕рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд▓рд╛рдЧрдд рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдПрд╕рдЯреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреИрд╢реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рд╕рдХреНрд╖рдо рд╣реИред рдЬрдм рдЖрдк рд╕реНрд░реЛрдд рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╢ рдЕрдХреНрд╖рдо рд╣реИред

рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рд╕рдордп рдореЙрдбреНрдпреВрд▓ рдЦреЛрдЬ рдирд┐рдпрдореЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ рдЕрдиреБрдХреНрд░рдо рджреЛрдиреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреБрдЫ рдирд┐рдпрдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкрд╛рдпрдерди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк "рдХрд╕реНрдЯрдо рдирд╛рдо" рдирд┐рдпрдо (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╛рдореЛрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдХреЗ рдЗрди рдЦрд░реНрдЪреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рдиреНрдпрд╛рд╕


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
 { "cache_dir": null, "rules": [{"type": "rule_local_modules"}, {"type": "rule_stdlib"}, {"type": "rule_predefined_names"}, {"type": "rule_global_modules"}] } 


рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ)ред

smart_import.all() рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди smart_import.all() рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЙрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд░реВрдЯ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ smart_imports.json рдлрд╝рд╛рдЗрд▓ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░рдЦрдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИрдВ:

 { //     AST. //     null тАФ   . "cache_dir": null|"string", //       . "rules": [] } 

рдЖрдпрд╛рдд рдирд┐рдпрдо


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдЙрдирдХреЗ рдЖрд╡реЗрджрди рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдирд┐рдпрдо рдЬрд┐рд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╡рд╣ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдирд┐рдпрдо_рдкреНрд░рддрд┐рд╖реНрдард┐рдд_рдирд╛рдо рдирд┐рдпрдо рдЕрдХреНрд╕рд░ rule_predefined_names рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, print ) рд╕рд╣реА рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдирд┐рдпрдо 1: рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╛рдо


рдирд┐рдпрдо рдЖрдкрдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╛рдореЛрдВ рдЬреИрд╕реЗ __file__ рдФрд░ print рдЬреИрд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}] # } import smart_imports smart_imports.all() #        __file__ #        print(__file__) 

рдирд┐рдпрдо 2: рд╕реНрдерд╛рдиреАрдп рдореЙрдбреНрдпреВрд▓


рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ (рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ) рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЕрдЧрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_local_modules"}] # } # #    : # # my_package # |-- __init__.py # |-- a.py # |-- b.py # b.py import smart_imports smart_imports.all() #    "a.py" print(a) 

рдирд┐рдпрдо 3: рдЧреНрд▓реЛрдмрд▓ рдореЙрдбреНрдпреВрд▓


рд╕реАрдзреЗ рдирд╛рдо рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдз рдореЙрдбреНрдпреВрд▓ред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_global_modules"}] # } # #    # # pip install requests import smart_imports smart_imports.all() #    requests print(requests.get('http://example.com')) 

рдирд┐рдпрдо 4: рдХрд╕реНрдЯрдо рдирд╛рдо


рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдирд┐рдпрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЕрдиреБрдкрд╛рд▓рди рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_custom", # "variables": {"my_import_module": {"module": "os.path"}, # "my_import_attribute": {"module": "random", "attribute": "seed"}}}] # } import smart_imports smart_imports.all() #       #        print(my_import_module) print(my_import_attribute) 

рдирд┐рдпрдо 5: рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓


рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирд╛рдо рдПрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рдд рдпрд╛ os.path рдЬреЛ os_path рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреИрд╢реНрдб рд╕реВрдЪреА рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реВрдЪреА рдпрд╣рд╛рдБ рд╕реЗ рдЖрддреА рд╣реИ: github.com/jackmaney/python-stdlib-list

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_stdlib"}] # } import smart_imports smart_imports.all() print(math.pi) 

рдирд┐рдпрдо 6: рдЙрдкрд╕рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдЖрдпрд╛рдд


рдЕрдкрдиреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдирд╛рдо рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, utils_ рдкреИрдХреЗрдЬ рдореЙрдбреНрдпреВрд▓ рдХреЛ utils_ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_prefix", # "prefixes": [{"prefix": "utils_", "module": "my_package.utils"}]}] # } # #    : # # my_package # |-- __init__.py # |-- utils # |-- |-- __init__ # |-- |-- a.py # |-- |-- b.py # |-- subpackage # |-- |-- __init__ # |-- |-- c.py # c.py import smart_imports smart_imports.all() print(utils_a) print(utils_b) 

рдирд┐рдпрдо 7: рдореВрд▓ рдкреИрдХреЗрдЬ рд╕реЗ рдореЙрдбреНрдпреВрд▓


рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, tests рдпрд╛ migrations ) рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдЙрдк-рдкреИрдХреЗрдЬ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдореВрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_local_modules_from_parent", # "suffixes": [".tests"]}] # } # #    : # # my_package # |-- __init__.py # |-- a.py # |-- tests # |-- |-- __init__ # |-- |-- b.py # b.py import smart_imports smart_imports.all() print(a) 

рдирд┐рдпрдо 8: рджреВрд╕рд░реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдмрд╛рдВрдзрдирд╛


рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдирд╛рдо рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЦреЛрдЬ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ)ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рдпрдо рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ рдЬрдм рдореИрдВ рдкрд┐рдЫрд▓реЗ рдирд┐рдпрдо (рдореВрд▓ рдкреИрдХреЗрдЬ рд╕реЗ рдореЙрдбреНрдпреВрд▓) рдХреЗ рдХрд╛рдо рдХреЛ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рддрдХ рдирд╣реАрдВ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЙрджрд╛рд╣рд░рдг
 # : # { # "rules": [{"type": "rule_predefined_names"}, # {"type": "rule_local_modules_from_namespace", # "map": {"my_package.subpackage_1": ["my_package.subpackage_2"]}}] # } # #    : # # my_package # |-- __init__.py # |-- subpackage_1 # |-- |-- __init__ # |-- |-- a.py # |-- subpackage_2 # |-- |-- __init__ # |-- |-- b.py # a.py import smart_imports smart_imports.all() print(b) 

рдЕрдкрдиреЗ рдирд┐рдпрдо рдЬреЛрдбрд╝рдирд╛


рдЕрдкрдирд╛ рдирд┐рдпрдо рдЬреЛрдбрд╝рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

  1. рд╣рдореЗрдВ рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ smart_imports.rules.BaseRule ред
  2. рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИред
  3. Smart_imports.rules.register рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рдпрдо рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ
  4. рдирд┐рдпрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
  5. ???
  6. рд▓рд╛рднред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдореЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рд╛рдн


рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрдпрд╛рдд рдХреА рдмрд╣реБрд╕реНрддрд░реАрдп рд╕реВрдЪреА рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ рд╣реИред

рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЧрдИ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдореЗрдВ рдмрджрд▓ рдЬрд╛рдП, рдЗрд╕рдореЗрдВ 6688 рд▓рд╛рдЗрдиреЗрдВ рдереАрдВ рдЬреЛ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдереАрдВред рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж, 2084 рдмрдиреА рд░рд╣реА (рдлрд╝рд╛рдЗрд▓ рдФрд░ 130 рдЖрдпрд╛рддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдорд╛рд░реНрдЯ_рдЗрдордкреЛрд░реНрдЯреНрд╕ рдХреА рджреЛ рд▓рд╛рдЗрдиреЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рд╕рдорд╛рди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд╛рдореЛрдВ рдХрд╛ рдорд╛рдирдХреАрдХрд░рдг рдерд╛ред рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдпрд╛рддрд┐рдд рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХреА рдпреЛрдЬрдирд╛рдПрдБ


рдореБрдЭреЗ рдЪрд░ рдирд╛рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреЛрдб рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд╕реНрдорд╛рд░реНрдЯ рдЖрдпрд╛рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореЗрд░реА рдпреЛрдЬрдирд╛ рд╣реИ:

  1. рдкрд╛рдпрдерди рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВред
  2. рдХреЛрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕рдореБрджрд╛рдп рдкреНрд░рдерд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВред
  3. рдЖрд▓рд╕реА рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВред
  4. рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдПрдХ config рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдФрд░ smart_imports рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ред
  5. рдПрдПрд╕рдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА рдХреЛрдб рдХрд╛ рдкреБрди: рднрд╛рдЧред
  6. рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рд▓рд┐рдВрдЯрд░реНрд╕ рдФрд░ рдЖрдИрдбреАрдИ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЖрдпрд╛рдд рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рдкрд╛рда рдХреА рдЗрд╕ рд╢реАрдЯ рдХреЛ рдУрд╡рд░рдкрд╛рд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :-D

Source: https://habr.com/ru/post/hi459930/


All Articles