Python-future: рдирдпрд╛ рдЬрд╛рджреВ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирд░" рдЖрдпрд╛рдд "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирд░" рдмреИрдХрдкреЛрд░реНрдЯ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдХреНрддреВре░ 2014  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: PythonCharmers/python-future

Python 3.x рдореЗрдВ configparser рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рдмреИрдХрдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ "configparser" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдирдП рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рдкреЙрд▓реАрдЧреНрд▓реЙрдЯ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде, рдЖрдкрдХрд╛ рдкреИрдХреЗрдЬ рдмреИрдХрдкреЛрд░реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдмреИрдХрдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╡реАрдирддрдо рдЕрдкрд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ (рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрднреА рднреА рдкрд╛рдпрдерди 2.x рдкрд░ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдирд╛ рдПрдкреАрдЖрдИ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреБрд░рд╛рдиреЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдирдпрд╛ рдПрдкреАрдЖрдИ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирдП рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред 2.x ConfigParser рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ Python 3 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рд▓реА https://bugs.kali.org/view.php?id=3245 рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд▓реА рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрдЬрдЧрд░ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -рднрд╡рд┐рд╖реНрдп рдФрд░ рдЕрдЬрдЧрд░-configparser. рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг Python 2.x рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рддреЛ рдЗрд╕реЗ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ (1) рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ configparser рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред (2) рдиреЛ-рдЧреЛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рдиреНрдпреВрдирддрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм setup.py рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ python-configparser рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред (3) рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рддрд░рдг рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛! рд╕реАрд╕реА @sbrun

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреИрдХрдкреЛрд░реНрдЯ рд░реЗрдкреЛ рдкрд░ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: https://bitbucket.org/ambv/configparser/issue/8/configparser-import-broken-on-py27

рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП configparser рдореЗрдВ рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред

+1

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

@ambv , @Julian : рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рддрдХ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдБ:

  1. рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рд╕реЗ configparser рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ configparser рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрджрд▓реЗрдВред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддрдм рддрдХ рдирд╣реАрдВ рдЬрдм рддрдХ рдХрд┐ configparser Py2.7 рдкрд░ ConfigParser рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рди рд╣реЛред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, test_cfgparser.py рдкрд╛рдпрдерди 2.7.9 рдкрд░ configparser рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде import ConfigParser рдХреЛ import configparser as ConfigParser рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп 14 рд╡рд┐рдлрд▓рддрд╛рдПрдВ рдФрд░ 9 рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рдФрд░ рдЗрд╕рдХреЗ рд╕рд░рд▓ configparser рдЙрдкрдирд╛рдо рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╕рднреА рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
  2. setup.py configparser рдЙрдкрдирд╛рдо рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрдЧрд░ рдПрдХ рд╣реА рдирд╛рдо рдХрд╛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдкреИрдХреЗрдЬ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рджреЛрд╖ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдкрд┐рдд рд╕рдВрдХреБрд▓ рдЙрд╕ рдХреНрд░рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ requirements.txt рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ pip рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЗрд╕ рдХреНрд░рдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ requirements.txt рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ configparser рдФрд░ future рджреЛрдиреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ pip рджреНрд╡рд╛рд░рд╛ рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
  3. $#$18 pip install future[without_configparser] #$ рдЬреИрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдкрдЯреВрд▓ рдХреА extras рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ configparser рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкрд╛рдпрдерди 2.7.9 рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рдП? рдпрд╣ рдореБрдЭреЗ Py2 рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдЕрдкрдЧреНрд░реЗрдб рдкрде рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдПрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ ConfigParser рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рд╕реАрдзреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдмреИрдХрдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╡реАрдирддрдо рдЕрдкрд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ (рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрднреА рднреА рдкрд╛рдпрдерди 2.x рдкрд░ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдпрджрд┐ рдЖрдк рдкреБрд░рд╛рдирд╛ рдПрдкреАрдЖрдИ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреБрд░рд╛рдиреЗ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдирдпрд╛ рдПрдкреАрдЖрдИ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирдП рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред 2.x ConfigParser рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ Python 3 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред

рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рд▓реА https://bugs.kali.org/view.php?id=3245 рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд▓реА рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрдЬрдЧрд░ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ -рднрд╡рд┐рд╖реНрдп рдФрд░ рдЕрдЬрдЧрд░-configparser. рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг Python 2.x рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред

рддреЛ рдЗрд╕реЗ рд╕рдореЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ (1) рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ configparser рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред (2) рдиреЛ-рдЧреЛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдмрд┐рдпрди рдкреИрдХреЗрдЬ рдиреНрдпреВрдирддрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрдм setup.py рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ python-configparser рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред (3) рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рдХрд╛ рдПрдкреАрдЖрдИ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рддрд░рдг рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╢реБрдХреНрд░рд┐рдпрд╛! рд╕реАрд╕реА @sbrun

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

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдлрд┐рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдмреИрдХрдкреЛрд░реНрдЯ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░рд░ рдмреИрдХрдкреЛрд░реНрдЯ 3.5.1 рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ред рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (1)ред

рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ v0.16 рдореЗрдВ рдЕрдЬрдЧрд░-рднрд╡рд┐рд╖реНрдп рд╕реЗ configparser рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╢рд╛рдЦрд╛ рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ: https://github.com/PythonCharmers/python-future/tree/v0.16.xред

рдореИрдВ рдпрд╣рд╛рдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ ConfigParser.read_dict рдиреЗ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ python-future (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрдпреВрдЬреАрдЖрдИрдПрд╕ рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЪрдкреЗрдЯ рдореЗрдВ рдЖ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рдпрдерди 2.7 рдореЗрдВ рдХреЙрдиреНрдлрд┐рдЧрдкрд╛рд░реНрд╕рд░ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЙрдиреНрдлрд┐рдЧрдкрд╛рд░реНрд╕рд░ рдХреЗ рдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд╛рдпрдерди 3.x рдореЗрдВред

рдореИрдВрдиреЗ рдкреИрдХреЗрдЬ рдХреЗ python-future рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реЙрдХ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛:

sudo chmod 000 /usr/lib/python2.7/dist-packages/configparser/

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

@ sigmavirus24 рдЗрдпрд╛рди, рдЖрдк configparser рдмреИрдХрдкреЛрд░реНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдФрд░ from backports import configparser рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрди рдЬреИрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЕрдирдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ :(

@ambv рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЕрдм v0.16.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ configparser рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реБрдХрд╛рдЬрд╝ рдХреЗ рдмреИрдХрдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рдм рд▓реЛрдЧ!

рдзрдиреНрдпрд╡рд╛рдж @edschofield!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

treyhunner picture treyhunner  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xmo-odoo picture xmo-odoo  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sriram-mv picture sriram-mv  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asottile picture asottile  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wimglenn picture wimglenn  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ