рдкрд╛рдпрдерди OVAL┬о рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

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



рдпрд╣ рдкрд╕рдВрдж рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдХреА "рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреА рднрд╛рд╖рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рдкреНрд░рддрд┐рд╖реНрдард╛ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореГрджреНрдз рдкреИрд▓реЗрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИред рднрд╛рд╖рд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ MITER рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрдкрдиреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп, рдореИрдВрдиреЗ OVAL рднрд╛рд╖рд╛ рдХреА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЙрдирдХреЗ рднрдВрдбрд╛рд░рдг рдФрд░ рдЕрдиреБрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред

рдкреНрд░рд╛рдердорд┐рдХ рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдПрдХрддреНрд░рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдкрд╣рд▓рд╛ (рдФрд░ рдЕрд╕рдлрд▓) рд╕рдорд╛рдзрд╛рди SQLite 3 рдерд╛ред рдореИрдВ рдЗрд╕ рджреБ: рдЦрдж рдЕрдиреБрднрд╡ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЭреВрдо рдирд╣реАрдВ рдкрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкреЗрдбрд╝ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдирдиреНрдп рдЙрдкрдпреЛрдЧ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдкрд╕рдВрдж ZoDB рдкрд░ рдЧрд┐рд░ рдЧрдИред рдмреЗрд╢рдХ, рдпрд╣ рдлреИрд╕рд▓рд╛ рднреА рдЬрд▓реНрджрдмрд╛рдЬреА рдореЗрдВ рдерд╛ред рд▓реЗрдХрд┐рди MongoDB рдХрд╛ рд░реАрдореЗрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рдереАред рдЗрд╕рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ PersistentMapping () , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рддрд╛рдирд╛рд╢рд╛рд╣реА () рд╣реИ ред рдбреЗрдЯрд╛рдмреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╣реИрд╢рдореИрдкреНрд╕ рдХреА рдзрд╛рд░рдгрд╛ рдХреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╣реИрд╢рдореИрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рд╡рд░реНрдЧ рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред PersistentList () рд╕реВрдЪреА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ () ред ZoDB рдореЗрдВ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИред рд╕реНрдерд╛рдпреА рд╡рд░реНрдЧред

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

рдХреЛрдб рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рддреБрд░рдВрдд рд╕реНрд░реЛрдд code.google.com рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдм рдУрд╡реАрдПрд▓ рднрд╛рд╖рд╛ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡реНрдпрд╛рдкрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЕрдкрдиреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ XSD рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, OBJECT рддрддреНрд╡ рдиреЗ рдЖрдзрд╛рд░ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛:

# UNIVERSAL OVAL OBJECTS
рдХреНрд▓рд╛рд╕ рдУрд╡рд▓_рдмреЙрдЬреЗрдХреНрдЯ ( рд▓рдЧрд╛рддрд╛рд░ред рд╕реНрдерд┐рд░ ) :
def __init__ ( рд╕реНрд╡ ) :
рд╕реНрд╡ ред id = str ( )
рд╕реНрд╡ ред рдЯреИрдЧ = "рд╡рд╕реНрддреБ"
рд╕реНрд╡ ред рдирд╛рдо рд╕реНрдерд╛рди = str ( )
рд╕реНрд╡ ред рдЕрдВрдбрд╛рдХрд╛рд░ = str ( )
рд╕реНрд╡ ред рд╕рдВрд╕реНрдХрд░рдг = 0
рд╕реНрд╡ ред vHash = 0
рд╕реНрд╡ ред рдкрджрд╛рд╡рдирдд = рдЧрд▓рдд
рд╕реНрд╡ ред рдЪрд░ = рд╕реНрдерд╛рдпреАрд╡рд╛рджреА ( )
рд╕реНрд╡ ред рдиреЛрдЯ = рдкрд░реНрд╕реЗрдВрдЯрд▓рд┐рд╕реНрдЯ ( )
рд╕реНрд╡ ред рдЯрд┐рдкреНрдкрдгреА = str ( )
рд╕реНрд╡ ред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ = str ( )

def рдЕрд╕рд╛рдЗрди_рдЖрдИрдбреА ( рд╕реНрд╡рдпрдВ , UniqId ) :
рд╕реНрд╡ ред id = "рдЕрдВрдбрд╛рдХрд╛рд░:" + рд╕реНрд╡ ред рдЕрдВрдбрд╛рдХрд╛рд░ + ": obj:" + str ( UniqId )

рдбреАрдИрдПрдлрд╝ рд╣реИрд╢ ( рд╕реНрд╡ ) :
sum_hash = 0
sum_hash + = рд╣реИрд╢ ( рд╕реНрд╡ ред рдЯреИрдЧ )
sum_hash + = рд╣реИрд╢ ( рд╕реНрд╡ ред рдирд╛рдо рд╕реНрдерд╛рди )
sum_hash + = рд╣реИрд╢ ( рдЖрддреНрдо рдЯрд┐рдкреНрдкрдгреА )
рд╕реНрд╡рдпрдВ рдореЗрдВ var рдХреЗ рд▓рд┐рдП ред рдЪрд░ :
рдЕрдЧрд░ рдЖрдЗрдВрд╕реНрдЯреАрди ( var, рд╡реЗрд░рд┐рдПрдмрд▓ ) :
sum_hash + = varред рд╣реИрд╢рдореЗ ( )
рдФрд░ :
рдЕрдкрд╡рд╛рдж рдЙрдард╛рдирд╛ ( "рдСрдмреНрдЬреЗрдХреНрдЯ рдЪрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░" )
рд╡рд╛рдкрд╕реА sum_hash

рдбреАрдИрдПрдЪ рд╣реИрд╢рдореЗ ( рд╕реЗрд▓реНрдл ) :
рд╕реНрд╡ ред vHash = рд╕реНрд╡ ред рд╣реИрд╢ ( )
рд╕реНрд╡ рд▓реМрдЯ рдЖрдУ ред vHash

рдбреЗрдл рдХреНрд▓реАрдпрд░ ( рд╕реНрд╡ ) :
рд╣реИрд╢рдореИрдк = рдкрд░реНрд╕реЗрдВрдЯреЗрдВрдкрд┐рдВрдЧ ( )
рд╕реНрд╡рдпрдВ рдореЗрдВ var рдХреЗ рд▓рд┐рдП ред рдЪрд░ :
рд╡рд░ред рд╕рд╛рдлрд╝ рдХрд░рдирд╛ ( )
var_hash = varред рд╣реИрд╢рдореЗ ( )
рдЕрдЧрд░ var_hash рд╣реИрд╢рдореИрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ ред рдХреБрдВрдЬрд┐рдпрд╛рдБ ( ) :
рд╣реИрд╢рдореИрдк [ var_hash ] = рдХреЛрдИ рдирд╣реАрдВ
рдФрд░ :
рд╕реНрд╡ ред рдЪрд░ ред рдирд┐рдХрд╛рд▓реЗрдВ ( var )


рдпрд╣ рд╡рд░реНрдЧ OVAL рдХреЗ рд╕рднреА рдореВрд▓ рддрддреНрд╡реЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдкрд░рд┐рднрд╛рд╖рд╛ , рдЯреЗрд╕реНрдЯ , рд░рд╛рдЬреНрдп, рдФрд░ рдУрд╡рд▓_рд╡рд░реНрдгреАрдп рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ рд╣реЛрдВрдЧреЗред рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реИрд╢ () рддрд░реАрдХреЗ (рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ) рдФрд░ рд╣реИрд╢рдореЗ () (рд╡рдВрд╢рдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд) рдмрдирд╛рдП рдЧрдП рдереЗред
рдЬреИрд╕рд╛ рдХрд┐ рдЪрд░ рдирд╛рдореЛрдВ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд╡рдВрд╢рдЬ, рдЬрд┐рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╣рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдЧрддрд┐рд╢реАрд▓ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╡рдВрд╢рдЬ" рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡реИрд░рд┐рдПрдмрд▓ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рд╕реЗ рддрддреНрд╡ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛:

рд╡рд░реНрдЧ рдЪрд░ ( рд▓рдЧрд╛рддрд╛рд░ред рд╕реНрдерд┐рд░ ) :
def __init__ ( рд╕реНрд╡ , рдЯреИрдЧ = str ( ) , рд╢рд░реАрд░ = str ( ) , рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ = рдХреЛрдИ рдирд╣реАрдВ , рдЪрд░ = рдХреЛрдИ рдирд╣реАрдВ ) :
рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВ:
рд╕реНрд╡ ред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ = рд▓рдЧрд╛рддрд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░рдг ( )
рдпрджрд┐ рдЪрд░ рдирд╣реАрдВ :
рд╕реНрд╡ ред рдЪрд░ = рд╕реНрдерд╛рдпреАрд╡рд╛рджреА ( )
рдпрджрд┐ рдЧреБрдг рдФрд░ рдирд╣реАрдВ рд╣реИ ( рдЧреБрдг, рд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг ) :
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ = рд╕реНрдерд╛рдпреА рдорд╛рдирдЪрд┐рддреНрд░рдг ( рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ )
рдЕрдЧрд░ рдЪрд░реЛрдВ рдФрд░ рдирд╣реАрдВ ( рдЪрд░, PersListList ) :
рдЪрд░ = рд╕реНрдерд╛рдпреАрддреНрд╡рд╡рд╛рджреА ( рдЪрд░ )
рд╕реНрд╡ ред рдЯреИрдЧ = рдЯреИрдЧ
рд╕реНрд╡ ред рд╢рд░реАрд░ = рд╢рд░реАрд░
рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ:
рд╕реНрд╡ ред рдЧреБрдг = рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ
рдпрджрд┐ рдЪрд░:
рд╕реНрд╡ ред рдЪрд░ = рдЪрд░
рд╕реНрд╡ ред vHash = 0

рдбреЗрдл рдХреНрд▓реАрдпрд░ ( рд╕реНрд╡ ) :
рд╣реИрд╢рдореИрдк = рдкрд░реНрд╕реЗрдВрдЯреЗрдВрдкрд┐рдВрдЧ ( )
рд╕реНрд╡рдпрдВ рдореЗрдВ var рдХреЗ рд▓рд┐рдП ред рдЪрд░ :
рд╡рд░ред рд╕рд╛рдлрд╝ рдХрд░рдирд╛ ( )
var_hash = varред рд╣реИрд╢рдореЗ ( )
рдЕрдЧрд░ var_hash рд╣реИрд╢рдореИрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ ред рдХреБрдВрдЬрд┐рдпрд╛рдБ ( ) :
рд╣реИрд╢рдореИрдк [ var_hash ] = рдХреЛрдИ рдирд╣реАрдВ
рдФрд░ :
рд╕реНрд╡ ред рдЪрд░ ред рдирд┐рдХрд╛рд▓реЗрдВ ( var )

рдбреАрдИрдПрдЪ рд╣реИрд╢рдореЗ ( рд╕реЗрд▓реНрдл ) :
sum_hash = 0
sum_hash + = рд╣реИрд╢ ( рд╕реНрд╡ ред рдЯреИрдЧ )
sum_hash + = рд╣реИрд╢ ( рд╕реНрд╡ ред рд╢рд░реАрд░ )
рдЕрдЧрд░ рд╕реНрд╡ ред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ :
рд╕реНрд╡рдпрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП ред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ ред рдХреБрдВрдЬрд┐рдпрд╛рдБ ( ) :
sum_hash + = рд╣реИрд╢ ( рд╡рд┐рд╢реЗрд╖рддрд╛ ) + рд╣реИрд╢ ( рд╕реНрд╡ ред рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ [ рд╡рд┐рд╢реЗрд╖рддрд╛ ] )
рдЕрдЧрд░ рд╕реНрд╡ ред рдЪрд░ :
рд╕реНрд╡рдпрдВ рдореЗрдВ var рдХреЗ рд▓рд┐рдП ред рдЪрд░ :
рдЕрдЧрд░ рдЖрдЗрдВрд╕реНрдЯреАрди ( var, рд╡реЗрд░рд┐рдПрдмрд▓ ) :
рдЕрдЧрд░ var ! = рд╕реНрд╡ :
sum_hash + = varред рд╣реИрд╢рдореЗ ( )
рдФрд░ :
рдЕрдкрд╡рд╛рдж рдЙрдард╛рдПрдВ ( "рдЪрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ред рд╕реЗрд▓реНрдл рдПрдкреЗрдВрдб?" )
рд╕реНрд╡ ред vHash = sum_hash
рд╕реНрд╡ рд▓реМрдЯ рдЖрдУ ред vHash


OBJECT рдХреЗ рд╕рд╛рде, рд╣реИрд╢ рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдореИрдХреНрд╕рд┐рдордо рд░реВрдк рд╕реЗ ElementTree.Element рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдордиреЗ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рднрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ: рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп, рдирдИ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рднрд░рдиреЗ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрд╛рдордХ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдордЖрдИрдЯреАрдИрдЖрд░ ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, oval_suite () рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдореВрд▓ рд╕реЗрдЯ ( рдкреБрдЯ , рдЧреЗрдЯ , рдбрд┐рд▓реАрдЯ , рд╕рд░реНрдЪ , import_xml , export_xml ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрддрд╛ рд╣реИред

рдУрд╡рд▓_рд╕реБрдЗрдЯ () рдмрдирд╛рддреЗ рд╕рдордп рдореБрдЭреЗ рдЬрд┐рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХ XML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ (рд▓рдЧрднрдЧ 100 рдПрдордмреА) рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдореЗрдореЛрд░реА рдХреА рдХрдореА рдереАред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреА рдереА рдФрд░ рддрддреНрд╡ рд╣рдЯрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ ElementTree.Element , StackOverflow рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛:

def _garbager ( рд╕реНрд╡ , рдореВрд▓ ) :
рд╕реВрдЪреА рдореЗрдВ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП ( рд░реВрдЯ ) :
рд╕реНрд╡ ._рдмрд░реНрдЧрд░ ( рддрддреНрд╡ )
рдЬрдбрд╝ред рд╕реНрдкрд╖реНрдЯ ( )
рдбреЗрд▓ рд░реВрдЯ


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

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ OVAL рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдФрд░ рдпреЗ рдШрдЯрдирд╛рдХреНрд░рдо рдЙрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред

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


All Articles