рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ
Ostrovok.ru рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдХрд╣рд╛рдиреА рдмрддрд╛рдКрдВрдЧрд╛ред

рдпрд╣ рдХрд╣рд╛рдиреА
python3.5 рдореЗрдВ рдЯрд╛рдЗрдкрд┐рдВрдЧ
рдкреНрд░рдЪрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реБрдИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣
python2.7 рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╢реБрд░реВ
рд╣реБрдИ ред
2013 : рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ
python3.3 рдХрд╛
рд╡рд┐рдореЛрдЪрди рд╣реБрдЖ , рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ
рдереАрдВ , рдФрд░ рд╕рдВрдХреНрд░рдордг рдХреЗ рджреМрд░рд╛рди рдмрд╣реБрдд рджрд░реНрдж рдФрд░ рдкреАрдбрд╝рд╛ рд╣реЛрдЧреАред
рдореИрдВ Ostrovok.ru рдкрд░ рдкрд╛рд░реНрдЯрдирд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдерд╛ - рдпрд╣ рд╕реЗрд╡рд╛ рднрд╛рдЧреАрджрд╛рд░ рдПрдХреАрдХрд░рдг, рдЖрд░рдХреНрд╖рдг, рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдФрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдереАред рд╣рдордиреЗ рдХрдВрдкрдиреА рдХреЗ рдЕрдиреНрдп рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдЯреАрдо рдиреЗ HTTP рд╣реИрдВрдбрд▓рд░ рдпрд╛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛:
1) рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ (рд╡рд░реНрдЧ) рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
2) рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
3) рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕рдВрд░рдЪрдирд╛ рджреЗрддрд╛ рд╣реИ, рдХреНрд░рдорд╢рдГ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рджрд╛рдВрд╡ рдкрд░ рд╣реИред
рдЙрджрд╛рд╣рд░рдгред
import datetime as dt from contracts import new_contract, contract from schematics.models import Model from schematics.types import IntType, DateType
рдЙрджрд╛рд╣рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
рдпреЛрдЬрдирд╛рдмрджреНрдз рдФрд░
pycontracts ред
*
рдпреЛрдЬрдирд╛рдмрджреНрдз - рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред
*
pycontracts - рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ - рд╕рддреНрдпрд╛рдкрди рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдПрдкреАрдЖрдИ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП - рдЬреЛ рд╣рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдФрд░ рдЬреЛ рд╣рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдареЛрд░ рд░реВрдкрд░реЗрдЦрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рд░реВрдк рдХреЛ рд╕рдордЭрдирд╛ / рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдпрджрд┐ рдпрд╣ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИред
рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ (рдЧреИрд░-рд╕рддреНрдпрд╛рдкрди) рдХреЗрд╡рд▓
рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛
рд╣реИ , рдФрд░ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕, рд╕реАрдЖрдИ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдФрд░ рдПрдХ
рдордВрдЪрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреА рд░рд┐рд╣рд╛рдИ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ, рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╕рд░реНрд╡рд░ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд░реНрд╖реЛрдВ рдмреАрдд рдЧрдП, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝реА, рдЕрдзрд┐рдХ рдирдП рдФрд░ рдЬрдЯрд┐рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдХрдо рд╕реЗ рдХрдо рдПрдкреАрдЖрдИ рд╣реИрдВрдбрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдирд╣реАрдВ рд╣реБрдИред
рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЙрдиреНрдЪ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕реЗрдХрдВрдб рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рддреЛ рдореБрдЭреЗ рдмреИрдардирд╛ рдкрдбрд╝рд╛ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЬрдм рдпрд╣ рдЗрдВрддрдЬрд╛рд░ 8-10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реБрдЖ, рддреЛ рд╣рдордиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, pycontracts рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рднреА рдбреЙрдХрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рднреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
@contract рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ
рдЬрд╛рдВрдЪрддрд╛ рд╣реИред рдЬрдм рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рдЪреАрдЬ рдзреАрдорд╛ рд╣реЛрдиреЗ рд▓рдЧрддреА рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЙрддреНрддрд░ рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдпрд╛рд░реНрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
2018 (
python3.5 -
python3.6 ) рд╣реИ, рдФрд░ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА
python3.6 рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░
рджрд┐рдпрд╛ рд╣реИ ред
рдореИрдВрдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ "
pycontracts +
docstring рдореЗрдВ рдЯрд╛рдЗрдк рд╡рд┐рд╡рд░рдг" рд╕реЗ "рдХреБрдЫ +
рдЯрд╛рдЗрдкрд┐рдВрдЧ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╡рд░реНрдгрди"
рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЬрд╛рдП ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ
pycontracts рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
рдЯрд╛рдЗрдкрд┐рдВрдЧ рдПрдиреЛрдЯреЗрд╢рди рд╢реИрд▓реА рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
@contract def get_order_info(data_in: OrderInfoData) -> OrderInfoResult: return OrderInfoResult( dict( order_id=data_in.order_id, checkin_at=dt.datetime.today(), checkout_at=dt.datetime.today() + dt.timedelta(days=1), cancelled_at=None, ) )
рд╕рдорд╕реНрдпрд╛рдПрдБ рддрдм рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ
рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рд╡реИрдХрд▓реНрдкрд┐рдХ рдпрд╛
рд╕рдВрдШ , рдХреНрдпреЛрдВрдХрд┐
pycontracts рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ:
from typing import Optional @contract def get_order_info(data_in: OrderInfoData) -> Optional[OrderInfoResult]: return OrderInfoResult( dict( order_id=data_in.order_id, checkin_at=dt.datetime.today(), checkout_at=dt.datetime.today() + dt.timedelta(days=1), cancelled_at=None, ) )
рдореИрдВрдиреЗ
рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХреА:
*
рд▓рд╛рдЧреВ рдХрд░реЗрдВ*
рдЯрд╛рдЗрдкрдЧрд╛рд░реНрдб*
рдкрд╛рдЗрдкреАрдЬрдЙрд╕ рд╕рдордп рд▓рд╛рдЧреВ рдХрд░рдирд╛
python3.7 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдбреЗрдЯ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ,
pytypes рдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛, рдирддреАрдЬрддрди, рд╡рд┐рдХрд▓реНрдк
рдЯрд╛рдЗрдкрдЧрд╛рд░реНрдб рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред
from typeguard import typechecked @typechecked def get_order_info(data_in: OrderInfoData) -> Optional[OrderInfoResult]: return OrderInfoResult( dict( order_id=data_in.order_id, checkin_at=dt.datetime.today(), checkout_at=dt.datetime.today() + dt.timedelta(days=1), cancelled_at=None, ) )
рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:
@typechecked def view( request: HttpRequest, data_in: AffDeeplinkSerpIn, profile: Profile, contract: Contract, ) -> AffDeeplinkSerpOut: ... @typechecked def create_contract( user: Union[User, AnonymousUser], user_uid: Optional[str], params: RegistrationCreateSchemaIn, account_manager: Manager, support_manager: Manager, sales_manager: Optional[Manager], legal_entity: LegalEntity, partner: Partner, ) -> tuple: ... @typechecked def get_metaorder_ids_from_ordergroup_orders( orders: Tuple[OrderGroupOrdersIn, ...], contract: Contract ) -> list: ...
рдирддреАрдЬрддрди, рдПрдХ рд▓рдВрдмреА рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рд╣рдо
рдПрдиреЛрдЯреЗрд╢рди рдЯрд╛рдЗрдкрд┐рдВрдЧ +
рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
рд╣рдордиреЗ рдХреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рд╣реИрдВ:
- рдкрд░рд┐рдпреЛрдЬрдирд╛ 2-3 рд╕реЗрдХрдВрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдХрд╖реНрдЯрдкреНрд░рдж рдирд╣реАрдВ рд╣реИред
- рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд╛рдЗрдиреЛрдВ рдФрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЫреЛрдЯреА рд╣реЛ рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ @new_contract рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдкрдВрдЬреАрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред
- рд╕реНрдорд╛рд░реНрдЯ PyCharm IDE рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХреЗрдд рдмрдирд╛рдиреЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛ рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рдЖрдпрд╛рдд рд╣реИред
- рдЬрдм рд╕реЗ рд╡реЗ рдЯрдВрдХрдг рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк mypy рдФрд░ рдкрд╛рдЗрд░реЗ -рдЪреЗрдХ рдЬреИрд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЬрдЧрд░ рд╕рдореБрджрд╛рдп рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд░реНрддрдорд╛рди рдХреНрд░рд┐рдпрд╛рдПрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд┐рд╡реЗрд╢ рд╣реИрдВред
- рдХрднреА-рдХрднреА рдЪрдХреНрд░реАрдп рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛!
рд╕рдВрджрд░реНрдн:
*
рд▓рд╛рдЧреВ рдХрд░реЗрдВ*
рдЯрд╛рдЗрдкрдЧрд╛рд░реНрдб*
рдкрд╛рдЗрдкреАрдЬ*
pycontracts*
рдпреЛрдЬрдирд╛рдмрджреНрдз