diff --git a/.gitignore b/.gitignore index c7b3d78..175152c 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ config.conf *.DS_Store *.pyc +.coverage* .repo !addons/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ee9712..053833d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,8 +19,10 @@ Update module `website`. - Ajepe odoo-addons to support restful - OmniaGIT Odoo PLM - MathBenTech family-management + - erplibre-3D-printing-addons - Add module: - iohub_connector to support mqtt + - sinerkia_jitsi_meet to integrate Jitsi - Add module by default: - auto_backup - muk_website_branding @@ -28,6 +30,12 @@ Update module `website`. - website_anchor_smooth_scroll - crm_team_quebec - Documentation Odoo dev +- Format command supported addons +- Install theme with Odoo command +- Script to install theme addons +- Image website with default theme +- Image erplibre demo +- Test with coverage ### Changed @@ -35,6 +43,9 @@ Update module `website`. - Move packages modules in makefile image creation - Update pip dependency with security update - Pillow==9.0.1 + - PyPDF2==1.27.8 +- Code generator export website with attachments and scss design file with documentation +- Code generator support multiple snippet ### Fixed diff --git a/Makefile b/Makefile index b224a2e..41a3029 100644 --- a/Makefile +++ b/Makefile @@ -182,35 +182,57 @@ db_create_db_test: ./script/make.sh db_drop_db_test ./.venv/bin/python3 ./odoo/odoo-bin db --create --database test +.PHONY: db_create_db_image_creation +db_create_db_image_creation: + .venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation + .venv/bin/python3 ./odoo/odoo-bin db --create --database image_creation + +.PHONY: db_clone_test_to_test2 +db_clone_test_to_test2: + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test2 + ./.venv/bin/python3 ./odoo/odoo-bin db --clone --database test2 --from_database test + ######################## # Image installation # ######################## .PHONY: image_db_create_erplibre_base image_db_create_erplibre_base: - ./script/make.sh db_create_db_test - ./script/addons/install_addons.sh test web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info,web_timeline,web_diagram_position,auto_backup - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_base + ./script/make.sh db_create_db_image_creation + ./script/addons/install_addons.sh image_creation web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info,web_timeline,web_diagram_position,auto_backup + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_base .PHONY: image_db_create_erplibre_website image_db_create_erplibre_website: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder,muk_website_branding,website_snippet_anchor,website_anchor_smooth_scroll,website_snippet_product_category,website_snippet_carousel_product,website_snippet_all - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website - ./script/addons/install_addons.sh test crm,website_crm,crm_team_quebec - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website_crm - ./script/addons/install_addons.sh test website_livechat - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_website_chat_crm - ./script/addons/install_addons.sh test website_sale,erplibre_base_quebec - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_base - ./script/addons/install_addons.sh test stock,purchase,website_sale_management - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_advance - ./script/addons/install_addons.sh test project - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_project - ./script/addons/install_addons.sh test pos_sale,muk_pos_branding - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_pos - ./script/addons/install_addons.sh test hr - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_ecommerce_pos_hr + ./script/addons/install_addons.sh image_creation website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder,muk_website_branding,website_snippet_anchor,website_anchor_smooth_scroll,website_snippet_all + ./script/addons/install_addons_theme.sh image_creation theme_default + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_website + ./script/addons/install_addons.sh image_creation crm,website_crm,crm_team_quebec + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_website_crm + ./script/addons/install_addons.sh image_creation website_livechat + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_website_chat_crm + ./script/addons/install_addons.sh image_creation website_sale,erplibre_base_quebec,website_snippet_product_category,website_snippet_carousel_product + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_ecommerce_base + ./script/addons/install_addons.sh image_creation stock,purchase,website_sale_management + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_ecommerce_advance + ./script/addons/install_addons.sh image_creation project + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_ecommerce_project + ./script/addons/install_addons.sh image_creation pos_sale,muk_pos_branding + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_ecommerce_pos + ./script/addons/install_addons.sh image_creation hr + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_ecommerce_pos_hr + +.PHONY: image_db_create_erplibre_demo +image_db_create_erplibre_demo: + # take the same of image_db_create_erplibre_base + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database image_creation + ./.venv/bin/python3 ./odoo/odoo-bin db --create --database image_creation --demo + ./script/addons/install_addons.sh image_creation web_responsive,disable_odoo_online,remove_odoo_enterprise,auth_user_case_insensitive,muk_web_theme,muk_utils,muk_branding,muk_mail_branding,muk_web_branding,muk_web_theme_mail,muk_web_utils,fetchmail_notify_error_to_sender,mail_debrand,partner_quebec_tz,erplibre_info,web_timeline,web_diagram_position,auto_backup + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_demo_base + ./script/addons/install_addons.sh image_creation website,erplibre_website_snippets_basic_html,erplibre_website_snippets_cards,erplibre_website_snippets_structures,erplibre_website_snippets_timelines,website_form_builder,muk_website_branding,website_snippet_anchor,website_anchor_smooth_scroll,website_snippet_all,crm,website_crm,crm_team_quebec,website_livechat,website_sale,erplibre_base_quebec,website_snippet_product_category,website_snippet_carousel_product,stock,purchase,website_sale_management,project,pos_sale,muk_pos_branding,hr + ./script/addons/install_addons_theme.sh image_creation theme_default + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_demo_full .PHONY: image_db_create_erplibre_code_generator image_db_create_erplibre_code_generator: @@ -225,128 +247,130 @@ image_db_create_erplibre_code_generator: image_db_create_erplibre_package_accounting: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test account_fiscal_year_closing,account_export_csv,account_financial_report,account_tax_balance,mis_builder_cash_flow,partner_statement,account_bank_statement_import_camt_oca,account_bank_statement_import_move_line,account_bank_statement_import_ofx,account_bank_statement_import_online,account_bank_statement_import_online_paypal,account_bank_statement_import_online_transferwise,account_bank_statement_import_paypal,account_bank_statement_import_split,account_bank_statement_import_txt_xlsx,accounting_pdf_reports,om_account_accountant,om_account_asset,om_account_budget - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_accounting + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation account_fiscal_year_closing,account_export_csv,account_financial_report,account_tax_balance,mis_builder_cash_flow,partner_statement,account_bank_statement_import_camt_oca,account_bank_statement_import_move_line,account_bank_statement_import_ofx,account_bank_statement_import_online,account_bank_statement_import_online_paypal,account_bank_statement_import_online_transferwise,account_bank_statement_import_paypal,account_bank_statement_import_split,account_bank_statement_import_txt_xlsx,accounting_pdf_reports,om_account_accountant,om_account_asset,om_account_budget + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_accounting .PHONY: image_db_create_erplibre_package_business_requirements image_db_create_erplibre_package_business_requirements: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test crm_team_quebec - ./script/addons/install_addons.sh test business_requirement,business_requirement_crm,business_requirement_deliverable,business_requirement_sale,business_requirement_sale_timesheet - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_business_requirements + ./script/addons/install_addons.sh image_creation crm_team_quebec + ./script/addons/install_addons.sh image_creation business_requirement,business_requirement_crm,business_requirement_deliverable,business_requirement_sale,business_requirement_sale_timesheet + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_business_requirements .PHONY: image_db_create_erplibre_package_contract image_db_create_erplibre_package_contract: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test agreement,agreement_account,agreement_legal,agreement_legal_sale,agreement_project,agreement_sale,agreement_serviceprofile,agreement_stock,contract,contract_forecast,contract_invoice_start_end_dates,contract_layout_category_hide_detail,contract_mandate,contract_payment_mode,contract_sale,contract_sale_invoicing,contract_sale_mandate,contract_sale_payment_mode,contract_transmit_method,contract_variable_qty_prorated,contract_variable_qty_timesheet,contract_variable_quantity,product_contract,product_contract_variable_quantity -# ./script/addons/install_addons.sh test agreement_legal_sale_fieldservice,agreement_maintenance,agreement_mrp,agreement_repair - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_contract + ./script/addons/install_addons.sh image_creation agreement,agreement_account,agreement_legal,agreement_legal_sale,agreement_project,agreement_sale,agreement_serviceprofile,agreement_stock,contract,contract_forecast,contract_invoice_start_end_dates,contract_layout_category_hide_detail,contract_mandate,contract_payment_mode,contract_sale,contract_sale_invoicing,contract_sale_mandate,contract_sale_payment_mode,contract_transmit_method,contract_variable_qty_prorated,contract_variable_qty_timesheet,contract_variable_quantity,product_contract,product_contract_variable_quantity +# ./script/addons/install_addons.sh image_creation agreement_legal_sale_fieldservice,agreement_maintenance,agreement_mrp,agreement_repair + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_contract .PHONY: image_db_create_erplibre_package_crm image_db_create_erplibre_package_crm: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec,crm_team_quebec - ./script/addons/install_addons.sh test crm,crm_livechat,crm_phone_validation,crm_project,crm_reveal - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_crm + ./script/addons/install_addons.sh image_creation erplibre_base_quebec,crm_team_quebec + ./script/addons/install_addons.sh image_creation crm,crm_livechat,crm_phone_validation,crm_project,crm_reveal + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_crm .PHONY: image_db_create_erplibre_package_e_commerce image_db_create_erplibre_package_e_commerce: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test website_sale,website_sale_comparison,website_sale_delivery,website_sale_digital,website_sale_link_tracker,website_sale_management,website_sale_stock,website_sale_wishlist,website_sale_attribute_filter_category,website_sale_attribute_filter_order,website_sale_attribute_filter_price,website_sale_cart_selectable,website_sale_category_description,website_sale_checkout_country_vat,website_sale_checkout_skip_payment,website_sale_exception,website_sale_hide_empty_category,website_sale_hide_price,website_sale_product_attachment,website_sale_product_attribute_filter_visibility,website_sale_product_attribute_value_filter_existing,website_sale_product_detail_attribute_image,website_sale_product_detail_attribute_value_image,website_sale_product_minimal_price,website_sale_product_reference_displayed,website_sale_product_sort,website_sale_product_style_badge,website_sale_require_legal,website_sale_require_login,website_sale_secondary_unit,website_sale_show_company_data,website_sale_stock_available,website_sale_stock_available_display,website_sale_stock_force_block,website_sale_suggest_create_account,website_sale_wishlist_keep,website_snippet_carousel_product,website_snippet_product_category,product_rating_review,product_configurator,product_configurator_mrp,product_configurator_purchase,product_configurator_sale,product_configurator_stock,website_product_configurator -# ./script/addons/install_addons.sh test website_sale_product_brand,website_sale_tax_toggle,website_sale_vat_required,product_configurator_sale_mrp,product_configurator_stock_lots,product_configurator_subconfig,website_product_configurator_mrp - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_e_commerce + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation website_sale,website_sale_comparison,website_sale_delivery,website_sale_digital,website_sale_link_tracker,website_sale_management,website_sale_stock,website_sale_wishlist,website_sale_attribute_filter_category,website_sale_attribute_filter_order,website_sale_attribute_filter_price,website_sale_cart_selectable,website_sale_category_description,website_sale_checkout_country_vat,website_sale_checkout_skip_payment,website_sale_exception,website_sale_hide_empty_category,website_sale_hide_price,website_sale_product_attachment,website_sale_product_attribute_filter_visibility,website_sale_product_attribute_value_filter_existing,website_sale_product_detail_attribute_image,website_sale_product_detail_attribute_value_image,website_sale_product_minimal_price,website_sale_product_reference_displayed,website_sale_product_sort,website_sale_product_style_badge,website_sale_require_legal,website_sale_require_login,website_sale_secondary_unit,website_sale_show_company_data,website_sale_stock_available,website_sale_stock_available_display,website_sale_stock_force_block,website_sale_suggest_create_account,website_sale_wishlist_keep,website_snippet_carousel_product,website_snippet_product_category,product_rating_review,product_configurator,product_configurator_mrp,product_configurator_purchase,product_configurator_sale,product_configurator_stock,website_product_configurator + ./script/addons/install_addons_theme.sh image_creation theme_default +# ./script/addons/install_addons.sh image_creation website_sale_product_brand,website_sale_tax_toggle,website_sale_vat_required,product_configurator_sale_mrp,product_configurator_stock_lots,product_configurator_subconfig,website_product_configurator_mrp + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_e_commerce .PHONY: image_db_create_erplibre_package_field_service image_db_create_erplibre_package_field_service: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec,crm_team_quebec - ./script/addons/install_addons.sh test fieldservice,fieldservice_account,fieldservice_account_analytic,fieldservice_account_payment,fieldservice_activity,fieldservice_agreement,fieldservice_change_management,fieldservice_crm,fieldservice_delivery,fieldservice_distribution,fieldservice_fleet,fieldservice_geoengine,fieldservice_isp_account,fieldservice_isp_flow,fieldservice_location_builder,fieldservice_maintenance,fieldservice_partner_multi_relation,fieldservice_project,fieldservice_purchase,fieldservice_recurring,fieldservice_repair,fieldservice_route,fieldservice_route_account,fieldservice_route_stock,fieldservice_route_vehicle,fieldservice_sale,fieldservice_sale_recurring,fieldservice_sale_stock,fieldservice_size,fieldservice_skill,fieldservice_stage_server_action,fieldservice_stage_validation,fieldservice_stock,fieldservice_stock_account,fieldservice_stock_account_analytic,fieldservice_substatus,fieldservice_vehicle,fieldservice_vehicle_stock -# ./script/addons/install_addons.sh test fieldservice_google_map,fieldservice_google_marker_icon_picker - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_field_service + ./script/addons/install_addons.sh image_creation erplibre_base_quebec,crm_team_quebec + ./script/addons/install_addons.sh image_creation fieldservice,fieldservice_account,fieldservice_account_analytic,fieldservice_account_payment,fieldservice_activity,fieldservice_agreement,fieldservice_change_management,fieldservice_crm,fieldservice_delivery,fieldservice_distribution,fieldservice_fleet,fieldservice_geoengine,fieldservice_isp_account,fieldservice_isp_flow,fieldservice_location_builder,fieldservice_maintenance,fieldservice_partner_multi_relation,fieldservice_project,fieldservice_purchase,fieldservice_recurring,fieldservice_repair,fieldservice_route,fieldservice_route_account,fieldservice_route_stock,fieldservice_route_vehicle,fieldservice_sale,fieldservice_sale_recurring,fieldservice_sale_stock,fieldservice_size,fieldservice_skill,fieldservice_stage_server_action,fieldservice_stage_validation,fieldservice_stock,fieldservice_stock_account,fieldservice_stock_account_analytic,fieldservice_substatus,fieldservice_vehicle,fieldservice_vehicle_stock +# ./script/addons/install_addons.sh image_creation fieldservice_google_map,fieldservice_google_marker_icon_picker + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_field_service .PHONY: image_db_create_erplibre_package_helpdesk image_db_create_erplibre_package_helpdesk: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test helpdesk_mailing_list,helpdesk_join_team,helpdesk_mgmt,helpdesk_mgmt_project,helpdesk_motive,helpdesk_mrp,helpdesk_partner,helpdesk_service_call,helpdesk_supplier,helpdesk_type - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_helpdesk + ./script/addons/install_addons.sh image_creation helpdesk_mailing_list,helpdesk_join_team,helpdesk_mgmt,helpdesk_mgmt_project,helpdesk_motive,helpdesk_mrp,helpdesk_partner,helpdesk_service_call,helpdesk_supplier,helpdesk_type + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_helpdesk .PHONY: image_db_create_erplibre_package_hr image_db_create_erplibre_package_hr: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test hr,hr_expense_associate_with_customer,hr_expense_tip,res_partner_fix_group_by_company,hr_attendance,hr_contract,hr_expense,hr_expense_check,hr_gamification,hr_holidays,hr_maintenance,hr_org_chart,hr_payroll,hr_payroll_account,hr_recruitment,hr_recruitment_survey,hr_timesheet,hr_timesheet_attendance,hr_attendance_autoclose,hr_attendance_geolocation,hr_attendance_modification_tracking,hr_attendance_reason,hr_attendance_report_theoretical_time,hr_attendance_rfid,hr_calendar_rest_time,hr_contract_currency,hr_contract_document,hr_contract_multi_job,hr_contract_rate,hr_course,hr_employee_age,hr_employee_birth_name,hr_employee_calendar_planning,hr_employee_display_own_info,hr_employee_document,hr_employee_emergency_contact,hr_employee_firstname,hr_employee_health,hr_employee_id,hr_employee_language,hr_employee_medical_examination,hr_employee_partner_external,hr_employee_phone_extension,hr_employee_relative,hr_employee_service,hr_employee_service_contract,hr_employee_social_media,hr_employee_ssn,hr_expense_advance_clearing,hr_expense_cancel,hr_expense_invoice,hr_expense_payment_difference,hr_expense_petty_cash,hr_expense_sequence,hr_expense_tier_validation,hr_experience,hr_holidays_accrual_advanced,hr_holidays_credit,hr_holidays_hour,hr_holidays_leave_auto_approve,hr_holidays_leave_repeated,hr_holidays_leave_request_wizard,hr_holidays_length_validation,hr_holidays_notify_employee_manager,hr_holidays_public,hr_holidays_settings,hr_holidays_validity_date,hr_job_category,hr_payroll_cancel,hr_payslip_change_state,hr_period,hr_skill,hr_worked_days_from_timesheet,resource_hook,hr_contract_single_open,hr_contract_wage_type,hr_employee_private_wizard,hr_employee_type,hr_employee_type_private_wizard,hr_event,hr_expense_same_month,hr_working_space,muk_hr_utils - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_hr + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation hr,hr_expense_associate_with_customer,hr_expense_tip,res_partner_fix_group_by_company,hr_attendance,hr_contract,hr_expense,hr_expense_check,hr_gamification,hr_holidays,hr_maintenance,hr_org_chart,hr_payroll,hr_payroll_account,hr_recruitment,hr_recruitment_survey,hr_timesheet,hr_timesheet_attendance,hr_attendance_autoclose,hr_attendance_geolocation,hr_attendance_modification_tracking,hr_attendance_reason,hr_attendance_report_theoretical_time,hr_attendance_rfid,hr_calendar_rest_time,hr_contract_currency,hr_contract_document,hr_contract_multi_job,hr_contract_rate,hr_course,hr_employee_age,hr_employee_birth_name,hr_employee_calendar_planning,hr_employee_display_own_info,hr_employee_document,hr_employee_emergency_contact,hr_employee_firstname,hr_employee_health,hr_employee_id,hr_employee_language,hr_employee_medical_examination,hr_employee_partner_external,hr_employee_phone_extension,hr_employee_relative,hr_employee_service,hr_employee_service_contract,hr_employee_social_media,hr_employee_ssn,hr_expense_advance_clearing,hr_expense_cancel,hr_expense_invoice,hr_expense_payment_difference,hr_expense_petty_cash,hr_expense_sequence,hr_expense_tier_validation,hr_experience,hr_holidays_accrual_advanced,hr_holidays_credit,hr_holidays_hour,hr_holidays_leave_auto_approve,hr_holidays_leave_repeated,hr_holidays_leave_request_wizard,hr_holidays_length_validation,hr_holidays_notify_employee_manager,hr_holidays_public,hr_holidays_settings,hr_holidays_validity_date,hr_job_category,hr_payroll_cancel,hr_payslip_change_state,hr_period,hr_skill,hr_worked_days_from_timesheet,resource_hook,hr_contract_single_open,hr_contract_wage_type,hr_employee_private_wizard,hr_employee_type,hr_employee_type_private_wizard,hr_event,hr_expense_same_month,hr_working_space,muk_hr_utils + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_hr .PHONY: image_db_create_erplibre_package_project image_db_create_erplibre_package_project: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test project,project_chatter,project_default_task_stage,project_form_with_dates,project_hide_create_sale_order,project_iteration,project_iteration_parent_only,project_iteration_parent_type_required,project_portal_hide_timesheets,project_portal_parent_task,project_remaining_hours_update,project_stage,project_stage_allow_timesheet,project_stage_no_quick_create,project_task_date_planned,project_task_deadline_from_project,project_task_full_text_search,project_task_id_in_display_name,project_task_link,project_task_reference,project_task_resource_type,project_task_search_parent_subtask,project_task_stage_external_mail,project_task_subtask_same_project,project_task_subtask_time_range,project_task_time_range,project_task_type,project_template,project_template_numigi,project_template_timesheet,project_time_management,project_time_range,project_type - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_project + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation project,project_chatter,project_default_task_stage,project_form_with_dates,project_hide_create_sale_order,project_iteration,project_iteration_parent_only,project_iteration_parent_type_required,project_portal_hide_timesheets,project_portal_parent_task,project_remaining_hours_update,project_stage,project_stage_allow_timesheet,project_stage_no_quick_create,project_task_date_planned,project_task_deadline_from_project,project_task_full_text_search,project_task_id_in_display_name,project_task_link,project_task_reference,project_task_resource_type,project_task_search_parent_subtask,project_task_stage_external_mail,project_task_subtask_same_project,project_task_subtask_time_range,project_task_time_range,project_task_type,project_template,project_template_numigi,project_template_timesheet,project_time_management,project_time_range,project_type + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_project .PHONY: image_db_create_erplibre_package_purchase image_db_create_erplibre_package_purchase: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test purchase,purchase_mrp,purchase_requisition,purchase_stock,product_supplier_info_helpers,purchase_consignment,purchase_consignment_delivery_expense,purchase_consignment_inventory,purchase_consignment_inventory_line_domain,purchase_estimated_time_arrival,purchase_invoice_empty_lines,purchase_invoice_from_picking,purchase_partner_products,purchase_warning_minimum_amount - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_purchase + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation purchase,purchase_mrp,purchase_requisition,purchase_stock,product_supplier_info_helpers,purchase_consignment,purchase_consignment_delivery_expense,purchase_consignment_inventory,purchase_consignment_inventory_line_domain,purchase_estimated_time_arrival,purchase_invoice_empty_lines,purchase_invoice_from_picking,purchase_partner_products,purchase_warning_minimum_amount + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_purchase .PHONY: image_db_create_erplibre_package_sale image_db_create_erplibre_package_sale: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec,crm_team_quebec - ./script/addons/install_addons.sh test sale,sale_crm,sale_expense,sale_management,sale_margin,sale_mrp,sale_purchase,sale_quotation_builder,sale_stock,sale_timesheet,sales_team,product_create_group,product_dimension,product_dimension_numigi,product_extra_views,product_extra_views_purchase,product_extra_views_sale,product_extra_views_stock,product_kit,product_panel_shortcut,product_reference,product_reference_list_view,product_supplier_name_search,product_variant_button_complete_form,sale_order_line_limit,sale_degroup_tax,payment,payment_transfer,purchase,stock - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_sale + ./script/addons/install_addons.sh image_creation erplibre_base_quebec,crm_team_quebec + ./script/addons/install_addons.sh image_creation sale,sale_crm,sale_expense,sale_management,sale_margin,sale_mrp,sale_purchase,sale_quotation_builder,sale_stock,sale_timesheet,sales_team,product_create_group,product_dimension,product_dimension_numigi,product_extra_views,product_extra_views_purchase,product_extra_views_sale,product_extra_views_stock,product_kit,product_panel_shortcut,product_reference,product_reference_list_view,product_supplier_name_search,product_variant_button_complete_form,sale_order_line_limit,sale_degroup_tax,payment,payment_transfer,purchase,stock + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_sale .PHONY: image_db_create_erplibre_package_scrummer image_db_create_erplibre_package_scrummer: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test erplibre_base_quebec - ./script/addons/install_addons.sh test scrummer,scrummer_git,scrummer_kanban,scrummer_scrum,scrummer_timesheet_category,scrummer_workflow_security,scrummer_workflow_transition_by_project,scrummer_workflow_transitions_by_task_type,web_diagram_position,web_syncer,web_widget_image_url,project_agile_sale_timesheet,project_agile_analytic,project_agile_scrum,project_git_github,project_git_gitlab,project_portal - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_scrummer + ./script/addons/install_addons.sh image_creation erplibre_base_quebec + ./script/addons/install_addons.sh image_creation scrummer,scrummer_git,scrummer_kanban,scrummer_scrum,scrummer_timesheet_category,scrummer_workflow_security,scrummer_workflow_transition_by_project,scrummer_workflow_transitions_by_task_type,web_diagram_position,web_syncer,web_widget_image_url,project_agile_sale_timesheet,project_agile_analytic,project_agile_scrum,project_git_github,project_git_gitlab,project_portal + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_scrummer .PHONY: image_db_create_erplibre_package_stock image_db_create_erplibre_package_stock: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test stock,stock_account,stock_dropshipping,stock_landed_costs,stock_picking_batch,purchase_warehouse_access,stock_component,stock_component_account,stock_inventory_accounting_date_editable,stock_inventory_category_domain,stock_inventory_internal_location,stock_inventory_line_domain,stock_location_position_alphanum,stock_picking_change_destination,stock_serial_single_quant,stock_theorical_quantity_access,stock_turnover_rate,stock_warehouse_access,stock_warehouse_distance -# ./script/addons/install_addons.sh test stock_zebra,stock_inventory_line_domain_barcode - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_stock + ./script/addons/install_addons.sh image_creation stock,stock_account,stock_dropshipping,stock_landed_costs,stock_picking_batch,purchase_warehouse_access,stock_component,stock_component_account,stock_inventory_accounting_date_editable,stock_inventory_category_domain,stock_inventory_internal_location,stock_inventory_line_domain,stock_location_position_alphanum,stock_picking_change_destination,stock_serial_single_quant,stock_theorical_quantity_access,stock_turnover_rate,stock_warehouse_access,stock_warehouse_distance +# ./script/addons/install_addons.sh image_creation stock_zebra,stock_inventory_line_domain_barcode + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_stock .PHONY: image_db_create_erplibre_package_timesheet image_db_create_erplibre_package_timesheet: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test payroll_code_on_task_type,payroll_period,payroll_preparation,payroll_preparation_export_wizard,payroll_preparation_from_timesheet,project_timesheet_time_control_enhanced,timesheet_edit_only_today,timesheet_list_description_after_task,timesheet_list_employee,timesheet_multi_line_wizard,timesheet_multi_line_wizard_security,timesheet_payroll_period,timesheet_validation_status - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_timesheet + ./script/addons/install_addons.sh image_creation payroll_code_on_task_type,payroll_period,payroll_preparation,payroll_preparation_export_wizard,payroll_preparation_from_timesheet,project_timesheet_time_control_enhanced,timesheet_edit_only_today,timesheet_list_description_after_task,timesheet_list_employee,timesheet_multi_line_wizard,timesheet_multi_line_wizard_security,timesheet_payroll_period,timesheet_validation_status + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_timesheet .PHONY: image_db_create_erplibre_package_website image_db_create_erplibre_package_website: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test portal,website,website_blog,website_crm,website_crm_partner_assign,website_crm_phone_validation,website_customer,website_event,website_event_questions,website_event_sale,website_event_track,website_form,website_form_project,website_forum,website_gengo,website_google_map,website_hr,website_hr_recruitment,website_links,website_livechat,website_mail,website_mail_channel,website_mass_mailing,website_membership,website_partner,website_payment,website_rating,website_slides,website_survey,website_theme_install,website_twitter,website_adv_image_optimization,website_anchor_smooth_scroll,website_blog_excerpt_img,website_breadcrumb,website_canonical_url,website_cookie_notice,website_crm_privacy_policy,website_crm_quick_answer,website_crm_recaptcha,website_form_builder,website_form_recaptcha,website_google_tag_manager,website_img_dimension,website_js_below_the_fold,website_lazy_load_image,website_legal_page,website_logo,website_media_size,website_megamenu,website_odoo_debranding,website_portal_address,website_portal_contact,website_snippet_anchor,website_snippet_big_button,website_snippet_country_dropdown,website_snippet_marginless_gallery,smile_website_login_as,website_snippet_all -# ./script/addons/install_addons.sh test website_no_crawler - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_website + ./script/addons/install_addons.sh image_creation portal,website,website_blog,website_crm,website_crm_partner_assign,website_crm_phone_validation,website_customer,website_event,website_event_questions,website_event_sale,website_event_track,website_form,website_form_project,website_forum,website_gengo,website_google_map,website_hr,website_hr_recruitment,website_links,website_livechat,website_mail,website_mail_channel,website_mass_mailing,website_membership,website_partner,website_payment,website_rating,website_slides,website_survey,website_theme_install,website_twitter,website_adv_image_optimization,website_anchor_smooth_scroll,website_blog_excerpt_img,website_breadcrumb,website_canonical_url,website_cookie_notice,website_crm_privacy_policy,website_crm_quick_answer,website_crm_recaptcha,website_form_builder,website_form_recaptcha,website_google_tag_manager,website_img_dimension,website_js_below_the_fold,website_lazy_load_image,website_legal_page,website_logo,website_media_size,website_megamenu,website_odoo_debranding,website_portal_address,website_portal_contact,website_snippet_anchor,website_snippet_big_button,website_snippet_country_dropdown,website_snippet_marginless_gallery,smile_website_login_as,website_snippet_all + ./script/addons/install_addons_theme.sh image_creation theme_default +# ./script/addons/install_addons.sh image_creation website_no_crawler + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_website .PHONY: image_db_create_erplibre_package_wiki image_db_create_erplibre_package_wiki: # Depend on image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_base - ./script/addons/install_addons.sh test document_page,document_page_approval,document_page_group,document_page_project,document_page_reference,document_page_tag,document_url,knowledge,attachment_preview,document_page_procedure,document_page_quality_manual,document_page_work_instruction,mgmtsystem,mgmtsystem_action,mgmtsystem_audit,mgmtsystem_hazard,mgmtsystem_manual,mgmtsystem_nonconformity,mgmtsystem_nonconformity_hr,mgmtsystem_nonconformity_product,mgmtsystem_nonconformity_project,mgmtsystem_quality,mgmtsystem_review,mgmtsystem_survey - ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test --restore_image erplibre_package_wiki + ./script/addons/install_addons.sh image_creation document_page,document_page_approval,document_page_group,document_page_project,document_page_reference,document_page_tag,document_url,knowledge,attachment_preview,document_page_procedure,document_page_quality_manual,document_page_work_instruction,mgmtsystem,mgmtsystem_action,mgmtsystem_audit,mgmtsystem_hazard,mgmtsystem_manual,mgmtsystem_nonconformity,mgmtsystem_nonconformity_hr,mgmtsystem_nonconformity_product,mgmtsystem_nonconformity_project,mgmtsystem_quality,mgmtsystem_review,mgmtsystem_survey + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database image_creation --restore_image erplibre_package_wiki .PHONY: image_db_create_all image_db_create_all: @@ -354,6 +378,7 @@ image_db_create_all: #./script/make.sh image_db_create_erplibre_base ./script/make.sh image_db_create_erplibre_website ./script/make.sh image_db_create_erplibre_code_generator + #./script/make.sh image_db_create_erplibre_demo #./script/make.sh image_db_create_erplibre_package_accounting #./script/make.sh image_db_create_erplibre_package_business_requirements #./script/make.sh image_db_create_erplibre_package_contract @@ -372,6 +397,13 @@ image_db_create_all: #./script/make.sh image_db_create_erplibre_package_wiki #./script/make.sh config_gen_all +.PHONY: image_db_create_test_website_attachments +image_db_create_test_website_attachments: + ./script/db_restore.py --clean_cache + ./script/db_restore.py --database code_generator_test_website_attachements --image test_website_attachments + # Do your stuff + ./.venv/bin/python3 ./odoo/odoo-bin db --backup --database code_generator_test_website_attachements --restore_image test_website_attachments + .PHONY: image_diff_base_website image_diff_base_website: #./script/manifest/compare_backup.py --backup_file_1 ./image_db/erplibre_base.zip --backup_file_2 ./image_db/erplibre_website.zip @@ -405,6 +437,12 @@ addons_install_all_code_generator_demo: ./script/db_restore.py --database code_generator # TODO ignore code_generator_demo_internal cause (demo_internal, demo_model_2_internal_view_form) already exists ./script/addons/install_addons_dev.sh code_generator code_generator_demo,code_generator_demo_export_helpdesk,code_generator_demo_export_website,code_generator_demo_internal_inherit,code_generator_demo_portal,code_generator_demo_theme_website,code_generator_demo_website_leaflet,code_generator_demo_website_snippet,code_generator_auto_backup + # Conflict between code_generator_demo_website_multiple_snippet and code_generator_demo_internal_inherit + ./script/db_restore.py --database code_generator + ./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_multiple_snippet + ./script/db_restore.py --database code_generator_test_website_attachements --image test_website_attachments + ./script/addons/install_addons_dev.sh code_generator_test_website_attachements code_generator_demo_export_website_attachments + #./script/addons/install_addons_dev.sh code_generator code_generator_demo #./script/addons/install_addons_dev.sh code_generator code_generator_demo_export_helpdesk #./script/addons/install_addons_dev.sh code_generator code_generator_demo_export_website @@ -414,6 +452,7 @@ addons_install_all_code_generator_demo: #./script/addons/install_addons_dev.sh code_generator code_generator_demo_theme_website #./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_leaflet #./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_snippet + #./script/addons/install_addons_dev.sh code_generator code_generator_demo_website_multiple_snippet #./script/addons/install_addons_dev.sh code_generator code_generator_auto_backup .PHONY: addons_install_all_code_generator_template @@ -438,10 +477,21 @@ addons_install_all_code_generator_template: #./script/addons/install_addons_dev.sh template demo_internal_inherit #./script/addons/install_addons_dev.sh template code_generator_template_demo_internal_inherit + # TODO not working, need to add in test parallel + #./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_website_snippet -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_snippet + #./script/addons/install_addons_dev.sh template demo_website_snippet + #./script/addons/install_addons_dev.sh template code_generator_template_demo_website_snippet + + # TODO not working, need to add in test parallel + #./script/code_generator/search_class_model.py --quiet -d addons/TechnoLibre_odoo-code-generator-template/demo_website_multiple_snippet -t addons/TechnoLibre_odoo-code-generator-template/code_generator_template_demo_website_multiple_snippet + #./script/addons/install_addons_dev.sh template demo_website_multiple_snippet + #./script/addons/install_addons_dev.sh template code_generator_template_demo_website_multiple_snippet + .PHONY: addons_install_all_generated_demo addons_install_all_generated_demo: ./script/db_restore.py --database template ./script/addons/install_addons_dev.sh template demo_helpdesk_data,demo_website_data,demo_internal,demo_internal_inherit,demo_portal,demo_website_leaflet,demo_website_snippet,auto_backup + ./script/addons/install_addons_theme.sh template theme_website_demo_code_generator #./script/addons/install_addons_dev.sh template demo_helpdesk_data #./script/addons/install_addons_dev.sh template demo_website_data #./script/addons/install_addons_dev.sh template demo_internal @@ -450,8 +500,7 @@ addons_install_all_generated_demo: #./script/addons/install_addons_dev.sh template demo_website_leaflet #./script/addons/install_addons_dev.sh template demo_website_snippet #./script/addons/install_addons_dev.sh template auto_backup - # TODO support installation theme with cli - #./script/addons/install_addons_dev.sh template theme_website_demo_code_generator + #./script/addons/install_addons_theme.sh template theme_website_demo_code_generator ################## # Code generator # @@ -526,6 +575,18 @@ test_full_fast: # TODO This test is broken in parallel ./script/make.sh test_code_generator_hello_world +.PHONY: test_full_fast_coverage +test_full_fast_coverage: + ./script/make.sh clean + ./.venv/bin/coverage erase + ./script/test/run_parallel_test.py --coverage + # TODO This test is broken in parallel + ./script/make.sh test_code_generator_hello_world + ./.venv/bin/coverage combine -a + ./.venv/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*" + ./.venv/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*" + # run: make open_test_coverage + .PHONY: test_base test_base: ./script/make.sh test_format @@ -554,8 +615,7 @@ test_installation_demo: ./script/code_generator/check_git_change_code_generator.sh ./addons/TechnoLibre_odoo-code-generator-template ./script/db_restore.py --database test_demo ./script/addons/install_addons.sh test_demo demo_helpdesk_data,demo_internal,demo_internal_inherit,demo_mariadb_sql_example_1,demo_portal,demo_website_data,demo_website_leaflet,demo_website_snippet - # TODO cannot install from command line (CLI) - #./script/addons/install_addons.sh test_demo theme_website_demo_code_generator + ./script/addons/install_addons_theme.sh test_demo theme_website_demo_code_generator .PHONY: test_code_generator_generation test_code_generator_generation: @@ -646,9 +706,58 @@ test_code_generator_demo_mariadb_sql_example_1: #./script/addons/install_addons_dev.sh test_code_generator code_generator_demo_mariadb_sql_example_1 ./script/code_generator/install_and_test_code_generator.sh test_code_generator code_generator_demo_mariadb_sql_example_1 ./addons/TechnoLibre_odoo-code-generator-template demo_mariadb_sql_example_1 -############## +############### +# Test addons # +############### +.PHONY: test_addons_sale +test_addons_sale: + ./.venv/bin/coverage erase + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test_addons_sale + ./test.sh -d test_addons_sale --db-filter test_addons_sale -i sale + ./.venv/bin/coverage combine -a + ./.venv/bin/coverage report -m + ./.venv/bin/coverage html + +.PHONY: test_addons_helpdesk +test_addons_helpdesk: + ./.venv/bin/coverage erase + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test_addons_helpdesk + ./test.sh -d test_addons_helpdesk --db-filter test_addons_helpdesk -i helpdesk_mgmt + ./.venv/bin/coverage combine -a + ./.venv/bin/coverage report -m + ./.venv/bin/coverage html + +.PHONY: test_addons_code_generator +test_addons_code_generator: + ./.venv/bin/coverage erase + ./.venv/bin/python3 ./odoo/odoo-bin db --drop --database test_addons_code_generator + # TODO missing test in code_generator + ./test.sh --dev all -d test_addons_code_generator --db-filter test_addons_code_generator -i code_generator + ./.venv/bin/coverage combine -a + ./.venv/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*" + ./.venv/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*" + # run: make open_test_coverage + +.PHONY: test_addons_code_generator_code_generator +test_addons_code_generator_code_generator: + # TODO this test only generation, not test + ./.venv/bin/coverage erase + ./script/db_restore.py --database test_addons_code_generator_code_generator + ./test.sh --dev all -d test_addons_code_generator_code_generator --db-filter test_addons_code_generator_code_generator -i code_generator_code_generator + ./.venv/bin/coverage combine -a + ./.venv/bin/coverage report -m --include="addons/TechnoLibre_odoo-code-generator/*" + ./.venv/bin/coverage html --include="addons/TechnoLibre_odoo-code-generator/*" + # run: make open_test_coverage + +.PHONY: open_test_coverage +open_test_coverage: + -$(BROWSER) htmlcov/index.html + +# TODO load specific test file : ./run.sh -d test_file --log-level=test --test-enable --stop-after-init --test-file ./.venv/test.py + +######### # tag # -############## +######### .PHONY: tag_push_all tag_push_all: ./script/tag_push_all.py @@ -669,6 +778,7 @@ format: ./script/make.sh format_code_generator_template ./script/make.sh format_script ./script/make.sh format_erplibre_addons + ./script/make.sh format_supported_addons .PHONY: format_code_generator format_code_generator: @@ -681,9 +791,15 @@ format_erplibre_addons: .venv/bin/isort --profile black -l 79 ./addons/ERPLibre_erplibre_addons/ ./script/maintenance/black.sh ./addons/ERPLibre_erplibre_addons/ #./script/maintenance/prettier_xml.sh ./addons/ERPLibre_erplibre_addons/ - .venv/bin/isort --profile black -l 79 ./addons/ERPLibre_erplibre_themes_addons/ - ./script/maintenance/black.sh ./addons/ERPLibre_erplibre_themes_addons/ - #./script/maintenance/prettier_xml.sh ./addons/ERPLibre_erplibre_themes_addons/ + .venv/bin/isort --profile black -l 79 ./addons/ERPLibre_erplibre_theme_addons/ + ./script/maintenance/black.sh ./addons/ERPLibre_erplibre_theme_addons/ + #./script/maintenance/prettier_xml.sh ./addons/ERPLibre_erplibre_theme_addons/ + +.PHONY: format_supported_addons +format_supported_addons: + .venv/bin/isort --profile black -l 79 ./addons/MathBenTech_erplibre-family-management/ + ./script/maintenance/black.sh ./addons/MathBenTech_erplibre-family-management/ + #./script/maintenance/prettier_xml.sh ./addons/MathBenTech_erplibre-family-management/ .PHONY: format_code_generator_template format_code_generator_template: diff --git a/coverage_run.sh b/coverage_run.sh new file mode 100755 index 0000000..5c79454 --- /dev/null +++ b/coverage_run.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +source ./.venv/bin/activate + +CONFIG_PATH="./config.conf" +ORIGIN_CONFIG_PATH=CONFIG_PATH +if [ ! -f "${CONFIG_PATH}" ]; then + CONFIG_PATH="/etc/odoo/odoo.conf" + if [ ! -f "${CONFIG_PATH}" ]; then + echo "Cannot find ERPLibre configuration ${ORIGIN_CONFIG_PATH}, did you install ERPLibre? > make install" + exit 1 + fi +fi + +coverage run -p ./odoo/odoo-bin -c ${CONFIG_PATH} --limit-time-real 99999 --limit-time-cpu 99999 $@ +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error coverage_run.sh" + exit 1 +fi diff --git a/doc/CODE_GENERATOR.base.md b/doc/CODE_GENERATOR.base.md index bf02274..56f1688 100644 --- a/doc/CODE_GENERATOR.base.md +++ b/doc/CODE_GENERATOR.base.md @@ -509,6 +509,98 @@ Générer le module avec «Action/Générer code». make db_restore_erplibre_base_db_test_module_test ``` + +### Export a website to a module + +TODO + + +### Exporter un site web vers un module + +Cette technique a été testé sans thème d'installé. + +Ce qui est exporté : Les pages, les fichiers attachés et les fichiers CSS. +Ce qui n'est pas exporté à notre connaissance : Les menus, les fichiers XML autres. + +À propos des fichiers attachés, ils sont importés et associés à un xml_id. Les doublons sont enlevés et les noms +duppliqués sont gérés. Les URL sont réécrites dans chaque page. + +À propos des fichiers CSS, pour modifier les couleurs sans avoir de thème, aller en mode debug assets, dans le website +builder, activé `Inclure tous les fichiers SCSS`. Vous pourrez ainsi modifier les fichiers `user_color_palette` +et `user_theme_color_palette`. + +Exemple pour `/website/static/src/scss/options/colors/user_color_palette.scss` : + +```scss +$o-user-color-palette: map-merge($o-user-color-palette, o-map-omit(( + 'menu': #ffffff, + // -- hook -- +))); +``` + +Exemple pour `/website/static/src/scss/options/colors/user_theme_color_palette.scss` : + +```scss +$o-user-theme-color-palette: map-merge($o-user-theme-color-palette, o-map-omit(( + 'alpha': #ff956b, + 'beta': null, + 'gamma': null, + 'delta': null, + 'epsilon': #ffffff, + // -- hook -- +))); +``` + +Plus d'exemple des variables dans le +fichier `addons/TechnoLibre_odoo-code-generator-template/theme_website_demo_code_generator/static/src/scss/primary_variables.scss` + +Une fois qu'on passe en module, il n'est plus possible d'utiliser adéquatement le `website_builder`, puisqu'une mise à +jour effacerait toutes les modifications sur le design. Il faut ainsi toujours mettre à jour le module et faire des +mises à jour sur le design. La stratégie est alors de migrer le design dans un module thème. + +#### Méthode 1 (fonctionnel pour les fichiers attachés et pages, non fonctionnel pour les CSS) + +Cette méthode permet de voir tous les fichiers importés, mais il ne nécessite pas de transformation de la BD. + +Modifier le module `code_generator_demo_export_website` pour décider du nouveau module à créer. + +Suggestion, faites un clone de votre BD de production avant de l'exporter pour ne pas l'affecter, l'exportation modifie +des informations dans la base de données. + +Le résultat généré montre les fichiers modifiés, mais il doit être adapté, surement être transformé en thème. + +Supposons que le nom de votre BD est `test_website` : + +```bash +./script/addons/install_addons_dev.sh test_website code_generator_demo_export_website +``` + +#### Méthode 2 (fonctionnel pour les CSS, fichiers attachés et pages) + +Cette méthode nécessite la transformation de la BD, elle remplace ensuite les fichiers d'origine dans le website +builder. + +Modifier le module `code_generator_demo_export_website_attachments` pour décider du nouveau module à créer. + +Suggestion, faites un clone de votre BD de production avant de l'exporter pour ne pas l'affecter, l'exportation modifie +des informations dans la base de données. + +Supposons que le nom de votre BD est `test_website` : + +```bash +./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test_website --restore_image test_website_backup +./script/db_restore.py --database test_website_2 --image test_website_backup.zip --clean_cache +``` + +Un fichier temporaire `./image_db/test_website_backup.zip` a été créé, vous pouvez aller l'effacer. + +Maintenant, modifier chaques fichiers manuellements de la liste désiré à importer (comme ajouter un espace à la fin du +fichier, le formatage va l'effacer) et exécuter : + +```bash +./script/addons/install_addons_dev.sh test_website_2 code_generator_demo_export_website_attachments +``` + ### Migrate external database into the migration module diff --git a/doc/CODE_GENERATOR.fr.md b/doc/CODE_GENERATOR.fr.md index 5bf2671..9d66786 100644 --- a/doc/CODE_GENERATOR.fr.md +++ b/doc/CODE_GENERATOR.fr.md @@ -329,6 +329,92 @@ Générer le module avec «Action/Générer code». make db_restore_erplibre_base_db_test_module_test ``` +### Exporter un site web vers un module + +Cette technique a été testé sans thème d'installé. + +Ce qui est exporté : Les pages, les fichiers attachés et les fichiers CSS. +Ce qui n'est pas exporté à notre connaissance : Les menus, les fichiers XML autres. + +À propos des fichiers attachés, ils sont importés et associés à un xml_id. Les doublons sont enlevés et les noms +duppliqués sont gérés. Les URL sont réécrites dans chaque page. + +À propos des fichiers CSS, pour modifier les couleurs sans avoir de thème, aller en mode debug assets, dans le website +builder, activé `Inclure tous les fichiers SCSS`. Vous pourrez ainsi modifier les fichiers `user_color_palette` +et `user_theme_color_palette`. + +Exemple pour `/website/static/src/scss/options/colors/user_color_palette.scss` : + +```scss +$o-user-color-palette: map-merge($o-user-color-palette, o-map-omit(( + 'menu': #ffffff, + // -- hook -- +))); +``` + +Exemple pour `/website/static/src/scss/options/colors/user_theme_color_palette.scss` : + +```scss +$o-user-theme-color-palette: map-merge($o-user-theme-color-palette, o-map-omit(( + 'alpha': #ff956b, + 'beta': null, + 'gamma': null, + 'delta': null, + 'epsilon': #ffffff, + // -- hook -- +))); +``` + +Plus d'exemple des variables dans le +fichier `addons/TechnoLibre_odoo-code-generator-template/theme_website_demo_code_generator/static/src/scss/primary_variables.scss` + +Une fois qu'on passe en module, il n'est plus possible d'utiliser adéquatement le `website_builder`, puisqu'une mise à +jour effacerait toutes les modifications sur le design. Il faut ainsi toujours mettre à jour le module et faire des +mises à jour sur le design. La stratégie est alors de migrer le design dans un module thème. + +#### Méthode 1 (fonctionnel pour les fichiers attachés et pages, non fonctionnel pour les CSS) + +Cette méthode permet de voir tous les fichiers importés, mais il ne nécessite pas de transformation de la BD. + +Modifier le module `code_generator_demo_export_website` pour décider du nouveau module à créer. + +Suggestion, faites un clone de votre BD de production avant de l'exporter pour ne pas l'affecter, l'exportation modifie +des informations dans la base de données. + +Le résultat généré montre les fichiers modifiés, mais il doit être adapté, surement être transformé en thème. + +Supposons que le nom de votre BD est `test_website` : + +```bash +./script/addons/install_addons_dev.sh test_website code_generator_demo_export_website +``` + +#### Méthode 2 (fonctionnel pour les CSS, fichiers attachés et pages) + +Cette méthode nécessite la transformation de la BD, elle remplace ensuite les fichiers d'origine dans le website +builder. + +Modifier le module `code_generator_demo_export_website_attachments` pour décider du nouveau module à créer. + +Suggestion, faites un clone de votre BD de production avant de l'exporter pour ne pas l'affecter, l'exportation modifie +des informations dans la base de données. + +Supposons que le nom de votre BD est `test_website` : + +```bash +./.venv/bin/python3 ./odoo/odoo-bin db --backup --database test_website --restore_image test_website_backup +./script/db_restore.py --database test_website_2 --image test_website_backup.zip --clean_cache +``` + +Un fichier temporaire `./image_db/test_website_backup.zip` a été créé, vous pouvez aller l'effacer. + +Maintenant, modifier chaques fichiers manuellements de la liste désiré à importer (comme ajouter un espace à la fin du +fichier, le formatage va l'effacer) et exécuter : + +```bash +./script/addons/install_addons_dev.sh test_website_2 code_generator_demo_export_website_attachments +``` + ### Migrer une base de données externe en module de migration En progression. @@ -410,6 +496,7 @@ lst_depend = [ Générer un nouveau module, ceci va écraser `code_generator_template_demo_website_snippet` : ```bash +make db_restore_erplibre_base_db_code_generator make addons_install_code_generator_demo ``` diff --git a/doc/CODE_GENERATOR.md b/doc/CODE_GENERATOR.md index 4819ab6..a269089 100644 --- a/doc/CODE_GENERATOR.md +++ b/doc/CODE_GENERATOR.md @@ -189,6 +189,10 @@ TODO make db_restore_erplibre_base_db_test_module_test ``` +### Export a website to a module + +TODO + ### Migrate external database into the migration module TODO diff --git a/doc/POETRY.md b/doc/POETRY.md index a5f17d6..a79a185 100644 --- a/doc/POETRY.md +++ b/doc/POETRY.md @@ -21,3 +21,8 @@ The automatic script will erase this dependency, but you can add it for your loc ```bash poetry add PYTHON_MODULE ``` + +## Error `relative path can't be expressed as a file URI` + +If you got this error `relative path can't be expressed as a file URI` when executing poetry, delete directory +artifacts: `rm -rf artifacts/` and rerun the update. diff --git a/manifest/default.dev.xml b/manifest/default.dev.xml index 3b17b6d..30b41df 100644 --- a/manifest/default.dev.xml +++ b/manifest/default.dev.xml @@ -68,6 +68,7 @@ + diff --git a/poetry.lock b/poetry.lock index 9aea6e0..48c79aa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -158,11 +158,11 @@ typecheck = ["mypy"] [[package]] name = "beautifulsoup4" -version = "4.10.0" +version = "4.11.1" description = "Screen-scraping library" category = "main" optional = false -python-versions = ">3.0.0" +python-versions = ">=3.6.0" [package.dependencies] soupsieve = ">1.2" @@ -221,14 +221,14 @@ tornado = ">=4.3" [[package]] name = "boto3" -version = "1.21.28" +version = "1.23.3" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.6" [package.dependencies] -botocore = ">=1.24.28,<1.25.0" +botocore = ">=1.26.3,<1.27.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.5.0,<0.6.0" @@ -237,7 +237,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.24.28" +version = "1.26.3" description = "Low-level, data-driven core of boto 3." category = "main" optional = false @@ -249,7 +249,7 @@ python-dateutil = ">=2.1,<3.0.0" urllib3 = ">=1.25.4,<1.27" [package.extras] -crt = ["awscrt (==0.13.5)"] +crt = ["awscrt (==0.13.8)"] [[package]] name = "cached-property" @@ -261,7 +261,7 @@ python-versions = "*" [[package]] name = "cachetools" -version = "5.0.0" +version = "5.1.0" description = "Extensible memoizing collections and decorators" category = "main" optional = false @@ -315,7 +315,7 @@ unicode_backport = ["unicodedata2"] [[package]] name = "click" -version = "8.1.0" +version = "8.1.3" description = "Composable command line interface toolkit" category = "main" optional = false @@ -327,7 +327,7 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "cloudflare" -version = "2.8.15" +version = "2.9.10" description = "Python wrapper for the Cloudflare v4 API" category = "main" optional = false @@ -371,6 +371,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "coverage" +version = "6.3.3" +description = "Code coverage measurement for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +toml = ["tomli"] + [[package]] name = "cryptography" version = "36.0.1" @@ -434,7 +445,7 @@ python-versions = ">=3.6" [[package]] name = "cython" -version = "0.29.28" +version = "0.29.30" description = "The Cython compiler for writing C extensions for the Python language." category = "main" optional = false @@ -573,8 +584,8 @@ python-versions = "*" [[package]] name = "email-validator" -version = "1.1.3" -description = "A robust email syntax and deliverability validation library for Python 2.x/3.x." +version = "1.2.1" +description = "A robust email syntax and deliverability validation library." category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" @@ -642,7 +653,7 @@ python-versions = ">=3.6" [[package]] name = "extract-msg" -version = "0.30.8" +version = "0.30.12" description = "Extracts emails and attachments saved in Microsoft Outlook's .msg files" category = "main" optional = false @@ -693,14 +704,17 @@ pyflakes = ">=2.4.0,<2.5.0" [[package]] name = "formio-data" -version = "0.3.14" +version = "0.4.4" description = "formio.js JSON-data API" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6,<4.0" + +[package.dependencies] +requests = "*" [package.extras] -json_logic = ["json-logic-qubit"] +json_logic = ["json_logic_qubit (>=0.9.1,<0.10.0)"] [[package]] name = "freezegun" @@ -1172,7 +1186,7 @@ upload_appveyor_builds = ["twine (==1.5.0)"] [[package]] name = "lxml" -version = "4.7.1" +version = "4.8.0" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." category = "main" optional = false @@ -1417,7 +1431,7 @@ et-xmlfile = "*" [[package]] name = "openupgradelib" -version = "3.3.2" +version = "3.3.3" description = "A library with support functions to be called from Odoo migration scripts." category = "main" optional = false @@ -1436,6 +1450,14 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "orjson" +version = "3.6.8" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "os-service-types" version = "1.7.0" @@ -1558,7 +1580,7 @@ test = ["hypothesis (>=3.58)", "pytest (>=6.0)", "pytest-xdist"] [[package]] name = "paramiko" -version = "2.10.3" +version = "2.11.0" description = "SSH2 protocol library" category = "main" optional = false @@ -1647,7 +1669,7 @@ ptyprocess = ">=0.5" [[package]] name = "phonenumbers" -version = "8.12.45" +version = "8.12.48" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." category = "main" optional = false @@ -1913,7 +1935,7 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" [[package]] name = "pylint-odoo" -version = "5.0.6.dev1" +version = "6.0.1.dev1" description = "Pylint plugin for Odoo" category = "main" optional = false @@ -1926,7 +1948,7 @@ lxml = ">=4.2.3" pbr = "*" polib = "<=1.1.1" Pygments = "<=2.10.0" -pylint = "<=2.11.1" +pylint = "<=2.13.5" pylint-plugin-utils = "0.6" restructuredtext-lint = "<=1.3.2" rfc3986 = "*" @@ -1937,7 +1959,7 @@ whichcraft = "*" type = "git" url = "https://github.com/oca/pylint-odoo.git" reference = "master" -resolved_reference = "151d31d452f8963c560672e2abe1919649769a45" +resolved_reference = "5c15bca5fa12f3eaef54e03a1d8718150f6f2d5a" [[package]] name = "pylint-plugin-utils" @@ -1952,7 +1974,7 @@ pylint = ">=1.7" [[package]] name = "pymssql" -version = "2.2.4" +version = "2.2.5" description = "DB-API interface to Microsoft SQL Server for Python. (new Cython-based version)" category = "main" optional = false @@ -2004,11 +2026,11 @@ python-versions = "*" [[package]] name = "pypdf2" -version = "1.26.0" -description = "PDF toolkit" +version = "1.27.8" +description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" category = "main" optional = false -python-versions = "*" +python-versions = ">=2.7" [[package]] name = "pypdf4" @@ -2149,7 +2171,7 @@ stevedore = ">=1.20.0" [[package]] name = "python-slugify" -version = "6.1.1" +version = "6.1.2" description = "A Python slugify application that also handles Unicode" category = "main" optional = false @@ -2671,7 +2693,7 @@ test = ["pytest", "sqlalchemy", "whoosh", "sphinx"] [[package]] name = "sqlalchemy" -version = "1.4.32" +version = "1.4.36" description = "Database Abstraction Library" category = "main" optional = false @@ -2685,7 +2707,7 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} aiomysql = ["greenlet (!=0.4.17)", "aiomysql"] aiosqlite = ["typing_extensions (!=3.10.0.1)", "greenlet (!=0.4.17)", "aiosqlite"] asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3)"] +asyncmy = ["greenlet (!=0.4.17)", "asyncmy (>=0.2.3,!=0.2.4)"] mariadb_connector = ["mariadb (>=1.0.1)"] mssql = ["pyodbc"] mssql_pymssql = ["pymssql"] @@ -3073,11 +3095,11 @@ python-versions = "*" [[package]] name = "xmltodict" -version = "0.12.0" +version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" [[package]] name = "yarl" @@ -3140,7 +3162,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.7.12" -content-hash = "2db33749ac40b29c90384af08533abb5495f80d903435d7a802496780217ef7c" +content-hash = "efc864bffd9e0e066e14b378fca6ccff204472474d24ee7b74230b3b72aef47f" [metadata.files] agithub = [ @@ -3221,28 +3243,28 @@ bcrypt = [ {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"}, ] beautifulsoup4 = [ - {file = "beautifulsoup4-4.10.0-py3-none-any.whl", hash = "sha256:9a315ce70049920ea4572a4055bc4bd700c940521d36fc858205ad4fcde149bf"}, - {file = "beautifulsoup4-4.10.0.tar.gz", hash = "sha256:c23ad23c521d818955a4151a67d81580319d4bf548d3d49f4223ae041ff98891"}, + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, ] black = [] bokeh = [ {file = "bokeh-1.1.0.tar.gz", hash = "sha256:70c944ccb99faea9c1bc2b77caba4dbcd884e083fc32511efbd6f895d7cb6832"}, ] boto3 = [ - {file = "boto3-1.21.28-py3-none-any.whl", hash = "sha256:ca37b9b4ade72f6d4fa2b7bee584dd5b1c7585f07f22ff1edbc9ecc0c4173b1f"}, - {file = "boto3-1.21.28.tar.gz", hash = "sha256:788aa3281e91413bc201268a251c9d4ca2e9deb3a4af74daea2389cf66e5132e"}, + {file = "boto3-1.23.3-py3-none-any.whl", hash = "sha256:5f27eec9b0a43edbfb3ed5e748837b10219a972f0728fecd78f84ec3629f2092"}, + {file = "boto3-1.23.3.tar.gz", hash = "sha256:9d5ce5ae3ddd4429cf752efe7c9f39691db6c85b6b5f1cfc8861b8f23b72b67a"}, ] botocore = [ - {file = "botocore-1.24.28-py3-none-any.whl", hash = "sha256:03c41d26d1e765380b8175d4b136d3144aa051f17a86eebfdf9a885a5a9a6a72"}, - {file = "botocore-1.24.28.tar.gz", hash = "sha256:102eb24b44d473adea6bb8728b20fb9547fa5858c3293df7cad67ef17ea736a7"}, + {file = "botocore-1.26.3-py3-none-any.whl", hash = "sha256:869308e29c1e8a9baa3e2fc336a1293e098855e34ea77c035dc4194a96316688"}, + {file = "botocore-1.26.3.tar.gz", hash = "sha256:f83c5cd7b3e1889aabf2fcf7926ddafc41f249a29f76f37cdb9e8680ac9b5af4"}, ] cached-property = [ {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, ] cachetools = [ - {file = "cachetools-5.0.0-py3-none-any.whl", hash = "sha256:8fecd4203a38af17928be7b90689d8083603073622229ca7077b72d8e5a976e4"}, - {file = "cachetools-5.0.0.tar.gz", hash = "sha256:486471dfa8799eb7ec503a8059e263db000cdda20075ce5e48903087f79d5fd6"}, + {file = "cachetools-5.1.0-py3-none-any.whl", hash = "sha256:4ebbd38701cdfd3603d1f751d851ed248ab4570929f2d8a7ce69e30c420b141c"}, + {file = "cachetools-5.1.0.tar.gz", hash = "sha256:8b3b8fa53f564762e5b221e9896798951e7f915513abf2ba072ce0f07f3f5a98"}, ] cerberus = [ {file = "Cerberus-1.3.4.tar.gz", hash = "sha256:d1b21b3954b2498d9a79edf16b3170a3ac1021df88d197dc2ce5928ba519237c"}, @@ -3312,11 +3334,12 @@ charset-normalizer = [ {file = "charset_normalizer-2.0.10-py3-none-any.whl", hash = "sha256:cb957888737fc0bbcd78e3df769addb41fd1ff8cf950dc9e7ad7793f1bf44455"}, ] click = [ - {file = "click-8.1.0-py3-none-any.whl", hash = "sha256:19a4baa64da924c5e0cd889aba8e947f280309f1a2ce0947a3e3a7bcb7cc72d6"}, - {file = "click-8.1.0.tar.gz", hash = "sha256:977c213473c7665d3aa092b41ff12063227751c41d7b17165013e10069cc5cd2"}, + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, ] cloudflare = [ - {file = "cloudflare-2.8.15.tar.gz", hash = "sha256:1f47bd324f80e91487dea2c79be934b1dc612bcfa63e784dcf74c6a2f52a41cc"}, + {file = "cloudflare-2.9.10-py2.py3-none-any.whl", hash = "sha256:4c4094e50e7c26faea091d062d1757cdc7f57a32b31098e975b11a87ab885084"}, + {file = "cloudflare-2.9.10.tar.gz", hash = "sha256:2ec50c074cea95e947a96b2076627cbfe427feb798bb1093293383053f4ad1b8"}, ] code-writer = [ {file = "code-writer-1.1.1.tar.gz", hash = "sha256:485260d0444707876596c499bd9b1ef9a11dc720d741ac57c884216de9fa3f40"}, @@ -3333,6 +3356,49 @@ colorclass = [ compressed-rtf = [ {file = "compressed_rtf-1.0.6.tar.gz", hash = "sha256:c1c827f1d124d24608981a56e8b8691eb1f2a69a78ccad6440e7d92fde1781dd"}, ] +coverage = [ + {file = "coverage-6.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df32ee0f4935a101e4b9a5f07b617d884a531ed5666671ff6ac66d2e8e8246d8"}, + {file = "coverage-6.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75b5dbffc334e0beb4f6c503fb95e6d422770fd2d1b40a64898ea26d6c02742d"}, + {file = "coverage-6.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:114944e6061b68a801c5da5427b9173a0dd9d32cd5fcc18a13de90352843737d"}, + {file = "coverage-6.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ab88a01cd180b5640ccc9c47232e31924d5f9967ab7edd7e5c91c68eee47a69"}, + {file = "coverage-6.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad8f9068f5972a46d50fe5f32c09d6ee11da69c560fcb1b4c3baea246ca4109b"}, + {file = "coverage-6.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4cd696aa712e6cd16898d63cf66139dc70d998f8121ab558f0e1936396dbc579"}, + {file = "coverage-6.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c1a9942e282cc9d3ed522cd3e3cab081149b27ea3bda72d6f61f84eaf88c1a63"}, + {file = "coverage-6.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c06455121a089252b5943ea682187a4e0a5cf0a3fb980eb8e7ce394b144430a9"}, + {file = "coverage-6.3.3-cp310-cp310-win32.whl", hash = "sha256:cb5311d6ccbd22578c80028c5e292a7ab9adb91bd62c1982087fad75abe2e63d"}, + {file = "coverage-6.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:6d4a6f30f611e657495cc81a07ff7aa8cd949144e7667c5d3e680d73ba7a70e4"}, + {file = "coverage-6.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:79bf405432428e989cad7b8bc60581963238f7645ae8a404f5dce90236cc0293"}, + {file = "coverage-6.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:338c417613f15596af9eb7a39353b60abec9d8ce1080aedba5ecee6a5d85f8d3"}, + {file = "coverage-6.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db094a6a4ae6329ed322a8973f83630b12715654c197dd392410400a5bfa1a73"}, + {file = "coverage-6.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1414e8b124611bf4df8d77215bd32cba6e3425da8ce9c1f1046149615e3a9a31"}, + {file = "coverage-6.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:93b16b08f94c92cab88073ffd185070cdcb29f1b98df8b28e6649145b7f2c90d"}, + {file = "coverage-6.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:fbc86ae8cc129c801e7baaafe3addf3c8d49c9c1597c44bdf2d78139707c3c62"}, + {file = "coverage-6.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b5ba058610e8289a07db2a57bce45a1793ec0d3d11db28c047aae2aa1a832572"}, + {file = "coverage-6.3.3-cp37-cp37m-win32.whl", hash = "sha256:8329635c0781927a2c6ae068461e19674c564e05b86736ab8eb29c420ee7dc20"}, + {file = "coverage-6.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:e5af1feee71099ae2e3b086ec04f57f9950e1be9ecf6c420696fea7977b84738"}, + {file = "coverage-6.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e814a4a5a1d95223b08cdb0f4f57029e8eab22ffdbae2f97107aeef28554517e"}, + {file = "coverage-6.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61f4fbf3633cb0713437291b8848634ea97f89c7e849c2be17a665611e433f53"}, + {file = "coverage-6.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3401b0d2ed9f726fadbfa35102e00d1b3547b73772a1de5508ef3bdbcb36afe7"}, + {file = "coverage-6.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8586b177b4407f988731eb7f41967415b2197f35e2a6ee1a9b9b561f6323c8e9"}, + {file = "coverage-6.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:892e7fe32191960da559a14536768a62e83e87bbb867e1b9c643e7e0fbce2579"}, + {file = "coverage-6.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:afb03f981fadb5aed1ac6e3dd34f0488e1a0875623d557b6fad09b97a942b38a"}, + {file = "coverage-6.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cbe91bc84be4e5ef0b1480d15c7b18e29c73bdfa33e07d3725da7d18e1b0aff2"}, + {file = "coverage-6.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:91502bf27cbd5c83c95cfea291ef387469f2387508645602e1ca0fd8a4ba7548"}, + {file = "coverage-6.3.3-cp38-cp38-win32.whl", hash = "sha256:c488db059848702aff30aa1d90ef87928d4e72e4f00717343800546fdbff0a94"}, + {file = "coverage-6.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:ceb6534fcdfb5c503affb6b1130db7b5bfc8a0f77fa34880146f7a5c117987d0"}, + {file = "coverage-6.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cc692c9ee18f0dd3214843779ba6b275ee4bb9b9a5745ba64265bce911aefd1a"}, + {file = "coverage-6.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:462105283de203df8de58a68c1bb4ba2a8a164097c2379f664fa81d6baf94b81"}, + {file = "coverage-6.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc972d829ad5ef4d4c5fcabd2bbe2add84ce8236f64ba1c0c72185da3a273130"}, + {file = "coverage-6.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:06f54765cdbce99901871d50fe9f41d58213f18e98b170a30ca34f47de7dd5e8"}, + {file = "coverage-6.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7835f76a081787f0ca62a53504361b3869840a1620049b56d803a8cb3a9eeea3"}, + {file = "coverage-6.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6f5fee77ec3384b934797f1873758f796dfb4f167e1296dc00f8b2e023ce6ee9"}, + {file = "coverage-6.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:baa8be8aba3dd1e976e68677be68a960a633a6d44c325757aefaa4d66175050f"}, + {file = "coverage-6.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4d06380e777dd6b35ee936f333d55b53dc4a8271036ff884c909cf6e94be8b6c"}, + {file = "coverage-6.3.3-cp39-cp39-win32.whl", hash = "sha256:f8cabc5fd0091976ab7b020f5708335033e422de25e20ddf9416bdce2b7e07d8"}, + {file = "coverage-6.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:9c9441d57b0963cf8340268ad62fc83de61f1613034b79c2b1053046af0c5284"}, + {file = "coverage-6.3.3-pp36.pp37.pp38-none-any.whl", hash = "sha256:d522f1dc49127eab0bfbba4e90fa068ecff0899bbf61bf4065c790ddd6c177fe"}, + {file = "coverage-6.3.3.tar.gz", hash = "sha256:2781c43bffbbec2b8867376d4d61916f5e9c4cc168232528562a61d1b4b01879"}, +] cryptography = [ {file = "cryptography-36.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:73bc2d3f2444bcfeac67dd130ff2ea598ea5f20b40e36d19821b4df8c9c5037b"}, {file = "cryptography-36.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:2d87cdcb378d3cfed944dac30596da1968f88fb96d7fc34fdae30a99054b2e31"}, @@ -3373,42 +3439,46 @@ cycler = [ {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] cython = [ - {file = "Cython-0.29.28-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:75686c586e37b1fed0fe4a2c053474f96fc07da0063bbfc98023454540515d31"}, - {file = "Cython-0.29.28-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:16f2e74fcac223c53e298ecead62c353d3cffa107bea5d8232e4b2ba40781634"}, - {file = "Cython-0.29.28-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6c77cc24861a33714e74212abfab4e54bf42e1ad602623f193b8e369389af2f"}, - {file = "Cython-0.29.28-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:59f4e86b415620a097cf0ec602adf5a7ee3cc33e8220567ded96566f753483f8"}, - {file = "Cython-0.29.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:31465dce7fd3f058d02afb98b13af962848cc607052388814428dc801cc26f57"}, - {file = "Cython-0.29.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5658fa477e80d96c49d5ff011938dd4b62da9aa428f771b91f1a7c49af45aad8"}, - {file = "Cython-0.29.28-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:33b69ac9bbf2b93d8cae336cfe48889397a857e6ceeb5cef0b2f0b31b6c54f2b"}, - {file = "Cython-0.29.28-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9d39ee7ddef6856413f950b8959e852d83376d9db1c509505e3f4873df32aa70"}, - {file = "Cython-0.29.28-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c9848a423a14e8f51bd4bbf8e2ff37031764ce66bdc7c6bc06c70d4084eb23c7"}, - {file = "Cython-0.29.28-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:09448aadb818387160ca4d1e1b82dbb7001526b6d0bed7529c4e8ac12e3b6f4c"}, - {file = "Cython-0.29.28-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:341917bdb2c95bcf8322aacfe50bbe6b4794880b16fa8b2300330520e123a5e5"}, - {file = "Cython-0.29.28-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fdcef7abb09fd827691e3abe6fd42c6c34beaccfa0bc2df6074f0a49949df6a8"}, - {file = "Cython-0.29.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:43eca77169f855dd04be11921a585c8854a174f30bc925257e92bc7b9197fbd2"}, - {file = "Cython-0.29.28-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7962a78ceb80cdec21345fb5088e675060fa65982030d446069f2d675d30e3cd"}, - {file = "Cython-0.29.28-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ed32c206e1d68056a34b21d2ec0cf0f23d338d6531476a68c73e21e20bd7bb63"}, - {file = "Cython-0.29.28-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a0ed39c63ba52edd03a39ea9d6da6f5326aaee5d333c317feba543270a1b3af5"}, - {file = "Cython-0.29.28-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ded4fd3da4dee2f4414c35214244e29befa7f6fede3e9be317e765169df2cbc7"}, - {file = "Cython-0.29.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e24bd94946ffa37f30fcb865f2340fb6d429a3c7bf87b47b22f7d22e0e68a15c"}, - {file = "Cython-0.29.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:076aa8da83383e2bed0ca5f92c13a7e76e684bc41fe8e438bbed735f5b1c2731"}, - {file = "Cython-0.29.28-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:004387d8b94c64681ee05660d6a234e125396097726cf2f419c0fa2ac38034d6"}, - {file = "Cython-0.29.28-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d6036f6a5a0c7fb1af88889872268b15bf20dd9cefe33a6602d79ba18b8db20f"}, - {file = "Cython-0.29.28-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1612d7439590ba3b8de5f907bf0e54bd8e024eafb8c59261531a7988030c182d"}, - {file = "Cython-0.29.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d7d7beb600d5dd551e9322e1393b74286f4a3d4aa387f7bfbaccc1495a98603b"}, - {file = "Cython-0.29.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:5e82f6b3dc2133b2e0e2c5c63d352d40a695e40cc7ed99f4cbe83334bcf9ab39"}, - {file = "Cython-0.29.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:49076747b731ed78acf203666c3b3c5d664754ea01ca4527f62f6d8675703688"}, - {file = "Cython-0.29.28-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f2b7c86a73db0d8dbbd885fe67f04c7b787df37a3848b9867270d3484101fbd"}, - {file = "Cython-0.29.28-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a3b27812ac9e9737026bfbb1dd47434f3e84013f430bafe1c6cbaf1cd51b5518"}, - {file = "Cython-0.29.28-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0378a14d2580dcea234d7a2dc8d75f60c091105885096e6dd5b032be97542c16"}, - {file = "Cython-0.29.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d7c98727397c2547a56aa0c3c98140f1873c69a0642edc9446c6c870d0d8a5b5"}, - {file = "Cython-0.29.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6626f9691ce2093ccbcc9932f449efe3b6e1c893b556910881d177c61612e8ff"}, - {file = "Cython-0.29.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:e9cc6af0c9c477c5e175e807dce439509934efefc24ea2da9fced7fbc8170591"}, - {file = "Cython-0.29.28-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:05edfa51c0ff31a8df3cb291b90ca93ab499686d023b9b81c216cd3509f73def"}, - {file = "Cython-0.29.28-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4b3089255b6b1cc69e4b854626a41193e6acae5332263d24707976b3cb8ca644"}, - {file = "Cython-0.29.28-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:03b749e4f0bbf631cee472add2806d338a7d496f8383f6fb28cc5fdc34b7fdb8"}, - {file = "Cython-0.29.28-py2.py3-none-any.whl", hash = "sha256:26d8d0ededca42be50e0ac377c08408e18802b1391caa3aea045a72c1bff47ac"}, - {file = "Cython-0.29.28.tar.gz", hash = "sha256:d6fac2342802c30e51426828fe084ff4deb1b3387367cf98976bb2e64b6f8e45"}, + {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5cb144728a335d7a7fd0a61dff6abb7a9aeff9acd46d50b886b7d9a95bb7311"}, + {file = "Cython-0.29.30-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d52d5733dcb144deca8985f0a197c19cf71e6bd6bd9d8034f3f67b2dea68d12b"}, + {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0cd6c932e945af15ae4ddcf8fdc0532bda48784c92ed0a53cf4fae897067ccd1"}, + {file = "Cython-0.29.30-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a30092c6e2d24255fbfe0525f9a750554f96a263ed986d12ac3c9f7d9a85a424"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:abcaf99f90cddc0f53600613eaafc81d27c4ac0671f0df8bce5466d4e86d54a1"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9826981308802c61a76f967875b31b7c683b7fc369eabaa6cbc22efeb12c90e8"}, + {file = "Cython-0.29.30-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:d166d9f853db436f5e10733a9bd615699ddb4238feadcbdf5ae50dc0b18b18f5"}, + {file = "Cython-0.29.30-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0b83a342a071c4f14e7410568e0c0bd95e2f20c0b32944e3a721649a1357fda4"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:ffa8c09617833ff0824aa7926fa4fa9d2ec3929c67168e89105f276b7f36a63e"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6b389a94b42909ff56d3491fde7c44802053a103701a7d210dcdd449a5b4f7b4"}, + {file = "Cython-0.29.30-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:7eff71c39b98078deaad1d1bdbf10864d234e2ab5d5257e980a6926a8523f697"}, + {file = "Cython-0.29.30-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8e08f18d249b9b65e272a5a60f3360a8922c4c149036b98fc821fe1afad5bdae"}, + {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3993aafd68a7311ef94e00e44a137f6a50a69af0575ebcc8a0a074ad4152a2b2"}, + {file = "Cython-0.29.30-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:5c7cfd908efc77306ddd41ef07f5a7a352c9205ced5c1e00a0e5ece4391707c4"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e605635a92ae862cb46d84d1d6883324518f9aaff4a71cede6d61df20b6a410c"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:786ee7b0cdb508b6de64c0f1f9c74f207186dfafad1ef938f25b7494cc481a80"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:1e078943bbde703ca08d43e719480eb8b187d9023cbd91798619f5b5e18d0d71"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5183356c756b56c2df12d96300d602e47ffb89943c5a0bded66faca5d3da7be0"}, + {file = "Cython-0.29.30-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e36755e71fd20eceb410cc441b7f2586654c2edb013f4663842fdaf60b96c1ca"}, + {file = "Cython-0.29.30-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e29d3487f357108b711f2f29319811d92166643d29aec1b8e063aad46a346775"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5a8a3709ad9343a1dc02b8ec9cf6bb284be248d2c64af85464d9c3525eec74a5"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b17639b6a155abaa61a89f6f1323fb57b138d0529911ca03978d594945d062ba"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:9462e9cf284d9b1d2c5b53d62188e3c09cc5c7a0018ba349d99b73cf930238de"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:58d2b734250c1093bc69c1c3a6f5736493b9f8b34eb765f0a28a4a09468c0b00"}, + {file = "Cython-0.29.30-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:28db751e2d8365b39664d9cb62dc1668688b8fcc5b954e9ca9d20e0b8e03d8b0"}, + {file = "Cython-0.29.30-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f2dae7dd56860018d5fd5032a71f11fdc224020932b463d0511a1536f27df85"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d0859a958e0155b6ae4dee04170ccfac2c3d613a7e3bee8749614530b9e3b4a4"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:d0f34b44078e3e0b2f1be2b99044619b37127128e7d55c54bbd2438adcaf31d3"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:80a7255ad84620f53235c0720cdee2bc7431d9e3db7b3742823a606c329eb539"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0239c7a22a0f3fb1deec75cab0078eba4dd17868aa992a54a178851e0c8684"}, + {file = "Cython-0.29.30-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c299c5b250ae9f81c38200441b6f1d023aeee9d8e7f61c04001c7437181ccb06"}, + {file = "Cython-0.29.30-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:019d330ac580b2ca4a457c464ac0b8c35009d820ef5d09f328d6e31a10e1ce89"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:71fd1d910aced510c001936667fc7f2901c49b2ca7a2ad67358979c94a7f42ac"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:60d370c33d56077d30e5f425026e58c2559e93b4784106f61581cf54071f6270"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:20778297c8bcba201ca122a2f792a9899d6e64c68a92363dd7eb24306d54d7ce"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f1fe924c920b699af27aefebd722df4cfbb85206291623cd37d1a7ddfd57792"}, + {file = "Cython-0.29.30-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c79685dd4631a188e2385dc6a232896c7b67ea2e3e5f8b5555b4b743f475d6d7"}, + {file = "Cython-0.29.30-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:88c5e2f92f16cd999ddfc43d572639679e8a057587088e627e98118e46a803e6"}, + {file = "Cython-0.29.30-py2.py3-none-any.whl", hash = "sha256:acb72e0b42079862cf2f894964b41f261e941e75677e902c5f4304b3eb00af33"}, + {file = "Cython-0.29.30.tar.gz", hash = "sha256:2235b62da8fe6fa8b99422c8e583f2fb95e143867d337b5c75e4b9a1a865f9e3"}, ] dateparser = [ {file = "dateparser-1.1.0-py2.py3-none-any.whl", hash = "sha256:fec344db1f73d005182e214c0ff27313c748bbe0c1638ce9d48a809ddfdab2a0"}, @@ -3456,8 +3526,8 @@ ebcdic = [ {file = "ebcdic-1.1.1-py2.py3-none-any.whl", hash = "sha256:33b4cb729bc2d0bf46cc1847b0e5946897cb8d3f53520c5b9aa5fa98d7e735f1"}, ] email-validator = [ - {file = "email_validator-1.1.3-py2.py3-none-any.whl", hash = "sha256:5675c8ceb7106a37e40e2698a57c056756bf3f272cfa8682a4f87ebd95d8440b"}, - {file = "email_validator-1.1.3.tar.gz", hash = "sha256:aa237a65f6f4da067119b7df3f13e89c25c051327b2b5b66dc075f33d62480d7"}, + {file = "email_validator-1.2.1-py2.py3-none-any.whl", hash = "sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c"}, + {file = "email_validator-1.2.1.tar.gz", hash = "sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8"}, ] emoji = [ {file = "emoji-1.7.0.tar.gz", hash = "sha256:65c54533ea3c78f30d0729288998715f418d7467de89ec258a31c0ce8660a1d1"}, @@ -3480,8 +3550,8 @@ et-xmlfile = [ {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, ] extract-msg = [ - {file = "extract_msg-0.30.8-py2.py3-none-any.whl", hash = "sha256:d14ca915d3e9aab10b38164aa41b71b3394cba44f9540bdede5c3afeeaaacf39"}, - {file = "extract_msg-0.30.8.tar.gz", hash = "sha256:cf54c63d45cb14ba9a08784e0561170cb7e523151456adcc593ea3b0102a4554"}, + {file = "extract_msg-0.30.12-py2.py3-none-any.whl", hash = "sha256:862e93a2a82a16d3cd20da133dba794751459a66942510ba04268bf0fe7469bb"}, + {file = "extract_msg-0.30.12.tar.gz", hash = "sha256:4910370b530e0c9ed01a22cb18b6d06857ce84b5db0d1cc2ce55cfa39f95e52c"}, ] factur-x = [ {file = "factur-x-2.3.tar.gz", hash = "sha256:1b930a09ae6df3c9ed7bdf5d7088e7160304310840a7f29847c4e7296d5b1f0e"}, @@ -3496,8 +3566,8 @@ flake8 = [ {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"}, ] formio-data = [ - {file = "formio-data-0.3.14.tar.gz", hash = "sha256:900e910652e36698ccc9daaa7ef7a6806866b6a751441c416db73d2a27dd4103"}, - {file = "formio_data-0.3.14-py3-none-any.whl", hash = "sha256:823db4f985be5acf95aeca2ab969fa50b9834283927846a2292597bc072dd556"}, + {file = "formio-data-0.4.4.tar.gz", hash = "sha256:ca89ffc4425d8e8ae750eb4e50fe62d622b5e326514cf73c0b5171d7fec574bb"}, + {file = "formio_data-0.4.4-py3-none-any.whl", hash = "sha256:9b133a063c59e8ba74fad7a90da1ebd5be12de627024afb0a7496d40694a75bf"}, ] freezegun = [ {file = "freezegun-0.3.11-py2.py3-none-any.whl", hash = "sha256:6cb82b276f83f2acce67f121dc2656f4df26c71e32238334eb071170b892a278"}, @@ -3770,66 +3840,67 @@ libsass = [ {file = "libsass-0.12.3.tar.gz", hash = "sha256:236762af9c693bb72ed92d65ff4a5a77d27af9494b6174fbec7e6308416673b0"}, ] lxml = [ - {file = "lxml-4.7.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:d546431636edb1d6a608b348dd58cc9841b81f4116745857b6cb9f8dadb2725f"}, - {file = "lxml-4.7.1-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6308062534323f0d3edb4e702a0e26a76ca9e0e23ff99be5d82750772df32a9e"}, - {file = "lxml-4.7.1-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f76dbe44e31abf516114f6347a46fa4e7c2e8bceaa4b6f7ee3a0a03c8eba3c17"}, - {file = "lxml-4.7.1-cp27-cp27m-win32.whl", hash = "sha256:d5618d49de6ba63fe4510bdada62d06a8acfca0b4b5c904956c777d28382b419"}, - {file = "lxml-4.7.1-cp27-cp27m-win_amd64.whl", hash = "sha256:9393a05b126a7e187f3e38758255e0edf948a65b22c377414002d488221fdaa2"}, - {file = "lxml-4.7.1-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50d3dba341f1e583265c1a808e897b4159208d814ab07530202b6036a4d86da5"}, - {file = "lxml-4.7.1-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:44f552e0da3c8ee3c28e2eb82b0b784200631687fc6a71277ea8ab0828780e7d"}, - {file = "lxml-4.7.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:e662c6266e3a275bdcb6bb049edc7cd77d0b0f7e119a53101d367c841afc66dc"}, - {file = "lxml-4.7.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4c093c571bc3da9ebcd484e001ba18b8452903cd428c0bc926d9b0141bcb710e"}, - {file = "lxml-4.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3e26ad9bc48d610bf6cc76c506b9e5ad9360ed7a945d9be3b5b2c8535a0145e3"}, - {file = "lxml-4.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a5f623aeaa24f71fce3177d7fee875371345eb9102b355b882243e33e04b7175"}, - {file = "lxml-4.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7b5e2acefd33c259c4a2e157119c4373c8773cf6793e225006a1649672ab47a6"}, - {file = "lxml-4.7.1-cp310-cp310-win32.whl", hash = "sha256:67fa5f028e8a01e1d7944a9fb616d1d0510d5d38b0c41708310bd1bc45ae89f6"}, - {file = "lxml-4.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:b1d381f58fcc3e63fcc0ea4f0a38335163883267f77e4c6e22d7a30877218a0e"}, - {file = "lxml-4.7.1-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:38d9759733aa04fb1697d717bfabbedb21398046bd07734be7cccc3d19ea8675"}, - {file = "lxml-4.7.1-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:dfd0d464f3d86a1460683cd742306d1138b4e99b79094f4e07e1ca85ee267fe7"}, - {file = "lxml-4.7.1-cp35-cp35m-win32.whl", hash = "sha256:534e946bce61fd162af02bad7bfd2daec1521b71d27238869c23a672146c34a5"}, - {file = "lxml-4.7.1-cp35-cp35m-win_amd64.whl", hash = "sha256:6ec829058785d028f467be70cd195cd0aaf1a763e4d09822584ede8c9eaa4b03"}, - {file = "lxml-4.7.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:ade74f5e3a0fd17df5782896ddca7ddb998845a5f7cd4b0be771e1ffc3b9aa5b"}, - {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:41358bfd24425c1673f184d7c26c6ae91943fe51dfecc3603b5e08187b4bcc55"}, - {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6e56521538f19c4a6690f439fefed551f0b296bd785adc67c1777c348beb943d"}, - {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b0f782f0e03555c55e37d93d7a57454efe7495dab33ba0ccd2dbe25fc50f05d"}, - {file = "lxml-4.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:490712b91c65988012e866c411a40cc65b595929ececf75eeb4c79fcc3bc80a6"}, - {file = "lxml-4.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c22eb8c819d59cec4444d9eebe2e38b95d3dcdafe08965853f8799fd71161d"}, - {file = "lxml-4.7.1-cp36-cp36m-win32.whl", hash = "sha256:2a906c3890da6a63224d551c2967413b8790a6357a80bf6b257c9a7978c2c42d"}, - {file = "lxml-4.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:36b16fecb10246e599f178dd74f313cbdc9f41c56e77d52100d1361eed24f51a"}, - {file = "lxml-4.7.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:a5edc58d631170de90e50adc2cc0248083541affef82f8cd93bea458e4d96db8"}, - {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:87c1b0496e8c87ec9db5383e30042357b4839b46c2d556abd49ec770ce2ad868"}, - {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:0a5f0e4747f31cff87d1eb32a6000bde1e603107f632ef4666be0dc065889c7a"}, - {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bf6005708fc2e2c89a083f258b97709559a95f9a7a03e59f805dd23c93bc3986"}, - {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc15874816b9320581133ddc2096b644582ab870cf6a6ed63684433e7af4b0d3"}, - {file = "lxml-4.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0b5e96e25e70917b28a5391c2ed3ffc6156513d3db0e1476c5253fcd50f7a944"}, - {file = "lxml-4.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ec9027d0beb785a35aa9951d14e06d48cfbf876d8ff67519403a2522b181943b"}, - {file = "lxml-4.7.1-cp37-cp37m-win32.whl", hash = "sha256:9fbc0dee7ff5f15c4428775e6fa3ed20003140560ffa22b88326669d53b3c0f4"}, - {file = "lxml-4.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1104a8d47967a414a436007c52f533e933e5d52574cab407b1e49a4e9b5ddbd1"}, - {file = "lxml-4.7.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:fc9fb11b65e7bc49f7f75aaba1b700f7181d95d4e151cf2f24d51bfd14410b77"}, - {file = "lxml-4.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:317bd63870b4d875af3c1be1b19202de34c32623609ec803b81c99193a788c1e"}, - {file = "lxml-4.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:610807cea990fd545b1559466971649e69302c8a9472cefe1d6d48a1dee97440"}, - {file = "lxml-4.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:09b738360af8cb2da275998a8bf79517a71225b0de41ab47339c2beebfff025f"}, - {file = "lxml-4.7.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a2ab9d089324d77bb81745b01f4aeffe4094306d939e92ba5e71e9a6b99b71e"}, - {file = "lxml-4.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eed394099a7792834f0cb4a8f615319152b9d801444c1c9e1b1a2c36d2239f9e"}, - {file = "lxml-4.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:735e3b4ce9c0616e85f302f109bdc6e425ba1670a73f962c9f6b98a6d51b77c9"}, - {file = "lxml-4.7.1-cp38-cp38-win32.whl", hash = "sha256:772057fba283c095db8c8ecde4634717a35c47061d24f889468dc67190327bcd"}, - {file = "lxml-4.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:13dbb5c7e8f3b6a2cf6e10b0948cacb2f4c9eb05029fe31c60592d08ac63180d"}, - {file = "lxml-4.7.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:718d7208b9c2d86aaf0294d9381a6acb0158b5ff0f3515902751404e318e02c9"}, - {file = "lxml-4.7.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:5bee1b0cbfdb87686a7fb0e46f1d8bd34d52d6932c0723a86de1cc532b1aa489"}, - {file = "lxml-4.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:e410cf3a2272d0a85526d700782a2fa92c1e304fdcc519ba74ac80b8297adf36"}, - {file = "lxml-4.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:585ea241ee4961dc18a95e2f5581dbc26285fcf330e007459688096f76be8c42"}, - {file = "lxml-4.7.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a555e06566c6dc167fbcd0ad507ff05fd9328502aefc963cb0a0547cfe7f00db"}, - {file = "lxml-4.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:adaab25be351fff0d8a691c4f09153647804d09a87a4e4ea2c3f9fe9e8651851"}, - {file = "lxml-4.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:82d16a64236970cb93c8d63ad18c5b9f138a704331e4b916b2737ddfad14e0c4"}, - {file = "lxml-4.7.1-cp39-cp39-win32.whl", hash = "sha256:59e7da839a1238807226f7143c68a479dee09244d1b3cf8c134f2fce777d12d0"}, - {file = "lxml-4.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:a1bbc4efa99ed1310b5009ce7f3a1784698082ed2c1ef3895332f5df9b3b92c2"}, - {file = "lxml-4.7.1-pp37-pypy37_pp73-macosx_10_14_x86_64.whl", hash = "sha256:0607ff0988ad7e173e5ddf7bf55ee65534bd18a5461183c33e8e41a59e89edf4"}, - {file = "lxml-4.7.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:6c198bfc169419c09b85ab10cb0f572744e686f40d1e7f4ed09061284fc1303f"}, - {file = "lxml-4.7.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a58d78653ae422df6837dd4ca0036610b8cb4962b5cfdbd337b7b24de9e5f98a"}, - {file = "lxml-4.7.1-pp38-pypy38_pp73-macosx_10_14_x86_64.whl", hash = "sha256:e18281a7d80d76b66a9f9e68a98cf7e1d153182772400d9a9ce855264d7d0ce7"}, - {file = "lxml-4.7.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8e54945dd2eeb50925500957c7c579df3cd07c29db7810b83cf30495d79af267"}, - {file = "lxml-4.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:447d5009d6b5447b2f237395d0018901dcc673f7d9f82ba26c1b9f9c3b444b60"}, - {file = "lxml-4.7.1.tar.gz", hash = "sha256:a1613838aa6b89af4ba10a0f3a972836128801ed008078f8c1244e65958f1b24"}, + {file = "lxml-4.8.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:e1ab2fac607842ac36864e358c42feb0960ae62c34aa4caaf12ada0a1fb5d99b"}, + {file = "lxml-4.8.0-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28d1af847786f68bec57961f31221125c29d6f52d9187c01cd34dc14e2b29430"}, + {file = "lxml-4.8.0-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b92d40121dcbd74831b690a75533da703750f7041b4bf951befc657c37e5695a"}, + {file = "lxml-4.8.0-cp27-cp27m-win32.whl", hash = "sha256:e01f9531ba5420838c801c21c1b0f45dbc9607cb22ea2cf132844453bec863a5"}, + {file = "lxml-4.8.0-cp27-cp27m-win_amd64.whl", hash = "sha256:6259b511b0f2527e6d55ad87acc1c07b3cbffc3d5e050d7e7bcfa151b8202df9"}, + {file = "lxml-4.8.0-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1010042bfcac2b2dc6098260a2ed022968dbdfaf285fc65a3acf8e4eb1ffd1bc"}, + {file = "lxml-4.8.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:fa56bb08b3dd8eac3a8c5b7d075c94e74f755fd9d8a04543ae8d37b1612dd170"}, + {file = "lxml-4.8.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:31ba2cbc64516dcdd6c24418daa7abff989ddf3ba6d3ea6f6ce6f2ed6e754ec9"}, + {file = "lxml-4.8.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:31499847fc5f73ee17dbe1b8e24c6dafc4e8d5b48803d17d22988976b0171f03"}, + {file = "lxml-4.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5f7d7d9afc7b293147e2d506a4596641d60181a35279ef3aa5778d0d9d9123fe"}, + {file = "lxml-4.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a3c5f1a719aa11866ffc530d54ad965063a8cbbecae6515acbd5f0fae8f48eaa"}, + {file = "lxml-4.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6268e27873a3d191849204d00d03f65c0e343b3bcb518a6eaae05677c95621d1"}, + {file = "lxml-4.8.0-cp310-cp310-win32.whl", hash = "sha256:330bff92c26d4aee79c5bc4d9967858bdbe73fdbdbacb5daf623a03a914fe05b"}, + {file = "lxml-4.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:b2582b238e1658c4061ebe1b4df53c435190d22457642377fd0cb30685cdfb76"}, + {file = "lxml-4.8.0-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a2bfc7e2a0601b475477c954bf167dee6d0f55cb167e3f3e7cefad906e7759f6"}, + {file = "lxml-4.8.0-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a1547ff4b8a833511eeaceacbcd17b043214fcdb385148f9c1bc5556ca9623e2"}, + {file = "lxml-4.8.0-cp35-cp35m-win32.whl", hash = "sha256:a9f1c3489736ff8e1c7652e9dc39f80cff820f23624f23d9eab6e122ac99b150"}, + {file = "lxml-4.8.0-cp35-cp35m-win_amd64.whl", hash = "sha256:530f278849031b0eb12f46cca0e5db01cfe5177ab13bd6878c6e739319bae654"}, + {file = "lxml-4.8.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:078306d19a33920004addeb5f4630781aaeabb6a8d01398045fcde085091a169"}, + {file = "lxml-4.8.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:86545e351e879d0b72b620db6a3b96346921fa87b3d366d6c074e5a9a0b8dadb"}, + {file = "lxml-4.8.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24f5c5ae618395ed871b3d8ebfcbb36e3f1091fd847bf54c4de623f9107942f3"}, + {file = "lxml-4.8.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bbab6faf6568484707acc052f4dfc3802bdb0cafe079383fbaa23f1cdae9ecd4"}, + {file = "lxml-4.8.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7993232bd4044392c47779a3c7e8889fea6883be46281d45a81451acfd704d7e"}, + {file = "lxml-4.8.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6d6483b1229470e1d8835e52e0ff3c6973b9b97b24cd1c116dca90b57a2cc613"}, + {file = "lxml-4.8.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ad4332a532e2d5acb231a2e5d33f943750091ee435daffca3fec0a53224e7e33"}, + {file = "lxml-4.8.0-cp36-cp36m-win32.whl", hash = "sha256:db3535733f59e5605a88a706824dfcb9bd06725e709ecb017e165fc1d6e7d429"}, + {file = "lxml-4.8.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5f148b0c6133fb928503cfcdfdba395010f997aa44bcf6474fcdd0c5398d9b63"}, + {file = "lxml-4.8.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:8a31f24e2a0b6317f33aafbb2f0895c0bce772980ae60c2c640d82caac49628a"}, + {file = "lxml-4.8.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:719544565c2937c21a6f76d520e6e52b726d132815adb3447ccffbe9f44203c4"}, + {file = "lxml-4.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:c0b88ed1ae66777a798dc54f627e32d3b81c8009967c63993c450ee4cbcbec15"}, + {file = "lxml-4.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fa9b7c450be85bfc6cd39f6df8c5b8cbd76b5d6fc1f69efec80203f9894b885f"}, + {file = "lxml-4.8.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9f84ed9f4d50b74fbc77298ee5c870f67cb7e91dcdc1a6915cb1ff6a317476c"}, + {file = "lxml-4.8.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1d650812b52d98679ed6c6b3b55cbb8fe5a5460a0aef29aeb08dc0b44577df85"}, + {file = "lxml-4.8.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:80bbaddf2baab7e6de4bc47405e34948e694a9efe0861c61cdc23aa774fcb141"}, + {file = "lxml-4.8.0-cp37-cp37m-win32.whl", hash = "sha256:6f7b82934c08e28a2d537d870293236b1000d94d0b4583825ab9649aef7ddf63"}, + {file = "lxml-4.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e1fd7d2fe11f1cb63d3336d147c852f6d07de0d0020d704c6031b46a30b02ca8"}, + {file = "lxml-4.8.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5045ee1ccd45a89c4daec1160217d363fcd23811e26734688007c26f28c9e9e7"}, + {file = "lxml-4.8.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0c1978ff1fd81ed9dcbba4f91cf09faf1f8082c9d72eb122e92294716c605428"}, + {file = "lxml-4.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cbf2ff155b19dc4d4100f7442f6a697938bf4493f8d3b0c51d45568d5666b5"}, + {file = "lxml-4.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ce13d6291a5f47c1c8dbd375baa78551053bc6b5e5c0e9bb8e39c0a8359fd52f"}, + {file = "lxml-4.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11527dc23d5ef44d76fef11213215c34f36af1608074561fcc561d983aeb870"}, + {file = "lxml-4.8.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:60d2f60bd5a2a979df28ab309352cdcf8181bda0cca4529769a945f09aba06f9"}, + {file = "lxml-4.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:62f93eac69ec0f4be98d1b96f4d6b964855b8255c345c17ff12c20b93f247b68"}, + {file = "lxml-4.8.0-cp38-cp38-win32.whl", hash = "sha256:20b8a746a026017acf07da39fdb10aa80ad9877046c9182442bf80c84a1c4696"}, + {file = "lxml-4.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:891dc8f522d7059ff0024cd3ae79fd224752676447f9c678f2a5c14b84d9a939"}, + {file = "lxml-4.8.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b6fc2e2fb6f532cf48b5fed57567ef286addcef38c28874458a41b7837a57807"}, + {file = "lxml-4.8.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:74eb65ec61e3c7c019d7169387d1b6ffcfea1b9ec5894d116a9a903636e4a0b1"}, + {file = "lxml-4.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:627e79894770783c129cc5e89b947e52aa26e8e0557c7e205368a809da4b7939"}, + {file = "lxml-4.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:545bd39c9481f2e3f2727c78c169425efbfb3fbba6e7db4f46a80ebb249819ca"}, + {file = "lxml-4.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5a58d0b12f5053e270510bf12f753a76aaf3d74c453c00942ed7d2c804ca845c"}, + {file = "lxml-4.8.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec4b4e75fc68da9dc0ed73dcdb431c25c57775383fec325d23a770a64e7ebc87"}, + {file = "lxml-4.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5804e04feb4e61babf3911c2a974a5b86f66ee227cc5006230b00ac6d285b3a9"}, + {file = "lxml-4.8.0-cp39-cp39-win32.whl", hash = "sha256:aa0cf4922da7a3c905d000b35065df6184c0dc1d866dd3b86fd961905bbad2ea"}, + {file = "lxml-4.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:dd10383f1d6b7edf247d0960a3db274c07e96cf3a3fc7c41c8448f93eac3fb1c"}, + {file = "lxml-4.8.0-pp37-pypy37_pp73-macosx_10_14_x86_64.whl", hash = "sha256:2403a6d6fb61c285969b71f4a3527873fe93fd0abe0832d858a17fe68c8fa507"}, + {file = "lxml-4.8.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:986b7a96228c9b4942ec420eff37556c5777bfba6758edcb95421e4a614b57f9"}, + {file = "lxml-4.8.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6fe4ef4402df0250b75ba876c3795510d782def5c1e63890bde02d622570d39e"}, + {file = "lxml-4.8.0-pp38-pypy38_pp73-macosx_10_14_x86_64.whl", hash = "sha256:f10ce66fcdeb3543df51d423ede7e238be98412232fca5daec3e54bcd16b8da0"}, + {file = "lxml-4.8.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:730766072fd5dcb219dd2b95c4c49752a54f00157f322bc6d71f7d2a31fecd79"}, + {file = "lxml-4.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8b99ec73073b37f9ebe8caf399001848fced9c08064effdbfc4da2b5a8d07b93"}, + {file = "lxml-4.8.0.tar.gz", hash = "sha256:f63f62fc60e6228a4ca9abae28228f35e1bd3ce675013d1dfb828688d50c6e23"}, ] mako = [ {file = "Mako-1.0.4.tar.gz", hash = "sha256:fed99dbe4d0ddb27a33ee4910d8708aca9ef1fe854e668387a9ab9a90cbf9059"}, @@ -4099,13 +4170,47 @@ openpyxl = [ {file = "openpyxl-3.0.9.tar.gz", hash = "sha256:40f568b9829bf9e446acfffce30250ac1fa39035124d55fc024025c41481c90f"}, ] openupgradelib = [ - {file = "openupgradelib-3.3.2-py2.py3-none-any.whl", hash = "sha256:acdd89626a829f1a22bee4a109d4c69b09aa7a461dcb565cb39a380081d0b87e"}, - {file = "openupgradelib-3.3.2.tar.gz", hash = "sha256:1480dc046b24b3eb09bb8a6513f5818b2a7800163bab9543262942f086cbe5bc"}, + {file = "openupgradelib-3.3.3-py2.py3-none-any.whl", hash = "sha256:56c91051258efccc9d1db205af5a5da58128c9517ea8cd8a3849ab9538350b26"}, + {file = "openupgradelib-3.3.3.tar.gz", hash = "sha256:b69c7028b28db4de1eb97ca918b03929ebaf11a4ea4fa209b158346c9a42fec7"}, ] optionaldict = [ {file = "optionaldict-0.1.2-py2.py3-none-any.whl", hash = "sha256:278d9b79b3d6a55b1b8ff5f9017bff6383a33426348d09e699ff50162bbcdab7"}, {file = "optionaldict-0.1.2.tar.gz", hash = "sha256:175b62ee8259af703def42e0b44b413ea55e7b0732456cb2fd5cbbc998605966"}, ] +orjson = [ + {file = "orjson-3.6.8-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:3a287a650458de2211db03681b71c3e5cb2212b62f17a39df8ad99fc54855d0f"}, + {file = "orjson-3.6.8-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:5204e25c12cea58e524fc82f7c27ed0586f592f777b33075a92ab7b3eb3687c2"}, + {file = "orjson-3.6.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:77e8386393add64f959c044e0fb682364fd0e611a6f477aa13f0e6a733bd6a28"}, + {file = "orjson-3.6.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:279f2d2af393fdf8601020744cb206b91b54ad60fb8401e0761819c7bda1f4e4"}, + {file = "orjson-3.6.8-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:c31c9f389be7906f978ed4192eb58a4b74a37ad60556a0b88ddc47c576697770"}, + {file = "orjson-3.6.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0db5c5a0c5b89f092d52f6e5a3701660a9d6ffa9e2968b3ce17c2bc4f5eb0414"}, + {file = "orjson-3.6.8-cp310-none-win_amd64.whl", hash = "sha256:eb22485847b9a0c4bbedc668df860126ac931edbed1d456cf41a59f3cb961ed8"}, + {file = "orjson-3.6.8-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:1a5fe569310bc819279bd4d5f2c349910b104ed3207936246dd5d5e0b085e74a"}, + {file = "orjson-3.6.8-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:ccb356a47ab1067cd3549847e9db1d279a63fe0482d315b3ffd6e7abef35ef77"}, + {file = "orjson-3.6.8-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab29c069c222248ce302a25855b4e1664f9436e8ae5a131fb0859daf31676d2b"}, + {file = "orjson-3.6.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d2b5e4cba9e774ac011071d9d27760f97f4b8cd46003e971d122e712f971345"}, + {file = "orjson-3.6.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:c311ec504414d22834d5b972a209619925b48263856a11a14d90230f9682d49c"}, + {file = "orjson-3.6.8-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:a3dfec7950b90fb8d143743503ee53fa06b32e6068bdea792fc866284da3d71d"}, + {file = "orjson-3.6.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b890dbbada2cbb26eb29bd43a848426f007f094bb0758df10dfe7a438e1cb4b4"}, + {file = "orjson-3.6.8-cp37-none-win_amd64.whl", hash = "sha256:9143ae2c52771525be9ad11a7a8cc8e7fd75391b107e7e644a9e0050496f6b4f"}, + {file = "orjson-3.6.8-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:33a82199fd42f6436f833e210ae5129c922a5c355629356ca7a8e82964da7285"}, + {file = "orjson-3.6.8-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:90159ea8b9a5a2a98fa33dc7b421cfac4d2ae91ba5e1058f5909e7f059f6b467"}, + {file = "orjson-3.6.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:656fbe15d9ef0733e740d9def78f4fdb4153102f4836ee774a05123499005931"}, + {file = "orjson-3.6.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7be3be6153843e0f01351b1313a5ad4723595427680dac2dfff22a37e652ce02"}, + {file = "orjson-3.6.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:dd24f66b6697ee7424f7da575ec6cbffc8ede441114d53470949cda4d97c6e56"}, + {file = "orjson-3.6.8-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:b07c780f7345ecf5901356dc21dee0669defc489c38ce7b9ab0f5e008cc0385c"}, + {file = "orjson-3.6.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ea32015a5d8a4ce00d348a0de5dc7040e0ad58f970a8fcbb5713a1eac129e493"}, + {file = "orjson-3.6.8-cp38-none-win_amd64.whl", hash = "sha256:c5a3e382194c838988ec128a26b08aa92044e5e055491cc4056142af0c1c54d7"}, + {file = "orjson-3.6.8-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:83a8424e857ae1bf53530e88b4eb2f16ca2b489073b924e655f1575cacd7f52a"}, + {file = "orjson-3.6.8-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:81e1a6a2d67f15007dadacbf9ba5d3d79237e5e33786c028557fe5a2b72f1c9a"}, + {file = "orjson-3.6.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:137b539881c77866eba86ff6a11df910daf2eb9ab8f1acae62f879e83d7c38af"}, + {file = "orjson-3.6.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cbd358f3b3ad539a27e36900e8e7d172d0e1b72ad9dd7d69544dcbc0f067ee7"}, + {file = "orjson-3.6.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:6ab94701542d40b90903ecfc339333f458884979a01cb9268bc662cc67a5f6d8"}, + {file = "orjson-3.6.8-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:32b6f26593a9eb606b40775826beb0dac152e3d224ea393688fced036045a821"}, + {file = "orjson-3.6.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:afd9e329ebd3418cac3cd747769b1d52daa25fa672bbf414ab59f0e0881b32b9"}, + {file = "orjson-3.6.8-cp39-none-win_amd64.whl", hash = "sha256:0c89b419914d3d1f65a1b0883f377abe42a6e44f6624ba1c63e8846cbfc2fa60"}, + {file = "orjson-3.6.8.tar.gz", hash = "sha256:e19d23741c5de13689bb316abfccea15a19c264e3ec8eb332a5319a583595ace"}, +] os-service-types = [ {file = "os-service-types-1.7.0.tar.gz", hash = "sha256:31800299a82239363995b91f1ebf9106ac7758542a1e4ef6dc737a5932878c6c"}, {file = "os_service_types-1.7.0-py2.py3-none-any.whl", hash = "sha256:0505c72205690910077fb72b88f2a1f07533c8d39f2fe75b29583481764965d6"}, @@ -4161,8 +4266,8 @@ pandas = [ {file = "pandas-1.3.5.tar.gz", hash = "sha256:1e4285f5de1012de20ca46b188ccf33521bff61ba5c5ebd78b4fb28e5416a9f1"}, ] paramiko = [ - {file = "paramiko-2.10.3-py2.py3-none-any.whl", hash = "sha256:ac6593479f2b47a9422eca076b22cff9f795495e6733a64723efc75dd8c92101"}, - {file = "paramiko-2.10.3.tar.gz", hash = "sha256:ddb1977853aef82804b35d72a0e597b244fa326c404c350bd00c5b01dbfee71a"}, + {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, + {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, ] passlib = [ {file = "passlib-1.6.5-py2.py3-none-any.whl", hash = "sha256:ad631a58dc8abeb0f48016c13f4b3b0f3a7b1045a8cb3c61dd15e2d95b45c472"}, @@ -4192,8 +4297,8 @@ pexpect = [ {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, ] phonenumbers = [ - {file = "phonenumbers-8.12.45-py2.py3-none-any.whl", hash = "sha256:e3af21c1e33a3dd063cddba3cad653abb8d23c37c62cedee597a3f3ea0f5365c"}, - {file = "phonenumbers-8.12.45.tar.gz", hash = "sha256:94e30f59b2be6c4310a90f3d5da53d49900bdb440484506f3333c694ebb0cdab"}, + {file = "phonenumbers-8.12.48-py2.py3-none-any.whl", hash = "sha256:429273b98966475d0c18ee293096eaf81c6b5727d0d55c7ba5ce9c60ec8c59ef"}, + {file = "phonenumbers-8.12.48.tar.gz", hash = "sha256:af0681fbfe9fa0721376ad9b729e772e5d20bf2cf50d9dd8ca2f0bdd78e9f0ce"}, ] pillow = [ {file = "Pillow-9.0.1-1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5d24e1d674dd9d72c66ad3ea9131322819ff86250b30dc5821cbafcfa0b96b4"}, @@ -4424,57 +4529,57 @@ pylint-plugin-utils = [ {file = "pylint_plugin_utils-0.6-py3-none-any.whl", hash = "sha256:2f30510e1c46edf268d3a195b2849bd98a1b9433229bb2ba63b8d776e1fc4d0a"}, ] pymssql = [ - {file = "pymssql-2.2.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3284ea2fa08215213da756016d75af9930a65f7173e2481fef6380ca0130e979"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9db1fc72239c668bb1ed94aff4ef69d361a6c5cb629c4977dc9dc2ee561ed5ac"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:83697fbd5d03619937e5128bce3428624b4cb7de9c1560eb46d1c891a074c298"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f64c0d3c17ca995ba183579377246a8c5ca9a2819c32b17570d5de6373b0d996"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76699eaa7af652fddcc2ead5ec2cd0487bdb962d87ce0b517025632025235390"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_24_i686.whl", hash = "sha256:a97d0c11b26fe35a988d7acc40c837ed9cbd721d44376d92577eb836936dfa9a"}, - {file = "pymssql-2.2.4-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:ac941251374fda6480f60361c7a48c7d0530fd51c3b3f85e596ed43af7970825"}, - {file = "pymssql-2.2.4-cp310-cp310-win32.whl", hash = "sha256:1ee1f6c79f6f29b2bad3d72aef221e82634c5c49d050ebfac285c88cdff4ab0f"}, - {file = "pymssql-2.2.4-cp310-cp310-win_amd64.whl", hash = "sha256:3a922873b06b65962ddf1964f4a50d60b0ef9198bba54b6b4f2f2b7b642ff23d"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3c1a54523488839805d9fd4411996290fa7953fd5eaa8960d60d134ca18850ed"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3aed8be741f20cc597af0137aea4ebe5751101bb532167d8cf2ff19703c040e0"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25d73715b5eed2052b6e470973a8499015f8c442dd57adfb2a2bdff86f4b2ccf"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e551c3db04b8a2462deed830c4a7e4155fd8f7b66b00c6ec0998740a3080aa2"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_24_i686.whl", hash = "sha256:b025b563deb868cb6ba7fb120839d5d98ebef4684c6b10dff90a0c8736046a48"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:fcd56b78a26030a1deab042921eceb6674e09a632923ec7f931ae87b20c35045"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2751e8c4ff1711896fe9f1a834874a034972cfda852163e97ccb817ea348ea33"}, - {file = "pymssql-2.2.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:451c4dd1e09bfb83bd51b8a34d557c3b9b13d82bb5333101011fa692c7dc7dab"}, - {file = "pymssql-2.2.4-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:81e7ad8d936d43122e67389d56053d88296a4770ed859a36a1f7cbd6b5bca2a3"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:886b5b7c24cb89f53b2fbd97450c1056d4a61a980da59187e9b65b6b4d40900e"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f769a06cb267f0039dce913c76d87a49a17a68f874f5daf8da662543e83ab01"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:819268b65683596a1973452517f2176221e81ee820507456491e86f6c4779380"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33f9cb5e6feb1e37724b013fbb502c010fa738c024e623da99dc41b633bb99dc"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_24_i686.whl", hash = "sha256:eb49db14671d44a5951ee99d7c9850c7f269485f03dc53f01abc4e3ffff41db0"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:74f3b6f33f52018e64eb54401176c8e514f374008a02e1740d9ad0e01065f3b4"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe85fb8eb35028bccdcf24653c4db50ec8d376656b2353fd91c08582ce38a9bd"}, - {file = "pymssql-2.2.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0c75cea079f84d243eba3e5116e1d4cddf2c9422b2608ed0ce3707c1a948f0b2"}, - {file = "pymssql-2.2.4-cp37-cp37m-win32.whl", hash = "sha256:023e0e902377d00f295e3e452577b71345745a2b5c47adadfc949b1b9a82ce05"}, - {file = "pymssql-2.2.4-cp37-cp37m-win_amd64.whl", hash = "sha256:83ab5af89840ac7f8725449dc73371d2c23e8cb8bd17221486cd40c785057858"}, - {file = "pymssql-2.2.4-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:82a27f5057f17e486689e1d74e5778bc460c6a3dc5b94a32d7a69041c125784e"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:38a9f41883e454c41ae5b1609726f1f48dc90c0e6b4525ecda18c91d120d7bb0"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:99b99919a6154aa4553badd249285ccef3ac7622d043e9653b83e9d5c8532f1e"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bbb39d2d563d13381bceefefb39b29315ae96d4d84364101db84247995e961c"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16ef4e75785e6d7a41152d0661efa3b247f13b397249684c588b3a0eeb1d8d5f"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_24_i686.whl", hash = "sha256:15454fa315e7e0672ef38f71b326f29db58824e6a585db7281368bf88fab1c80"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:f36871a4c72ea49cdf538cf2e8634c2aaadf182bf6ad82af178be25e956480c9"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a345d7bb02fd42a8dfac9ca31a6ad423d04f1a11b3370de5f1e281ca375a70c6"}, - {file = "pymssql-2.2.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:631608059b1a1a5013776d151bdb3234b665d0ace5918aee17c7e0e08d2d83be"}, - {file = "pymssql-2.2.4-cp38-cp38-win32.whl", hash = "sha256:af2cb1ef4aa350093a9eeb627eccebea2b0f323b70f12ce7890261fbf46bfb6e"}, - {file = "pymssql-2.2.4-cp38-cp38-win_amd64.whl", hash = "sha256:8aa6047f0112ca18c556a306a8a593442a17626c8b5d45453598c9487d7fcf6e"}, - {file = "pymssql-2.2.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:27dd2dd82a716fb0516d24013b26920fd6f819e52ef624c6761592b6b74212d2"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7b15014ef5bcb75f8f73228598a46766369d2af1adbaaeabd62976927800844d"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0b7e1177b30642351c1514f703dee1a6ab046a25da953c5e0199478385d1a4be"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:823b0dc5a9feea197823d95f1e3fe7aa8b6b3ef3d95a31351e2c40024af74d4e"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbc098b6846dabe967df71023ebec857e634a4d113cae9f0e58fb8ab9d9f053a"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_24_i686.whl", hash = "sha256:48c54c805ae7704717bb8ab146b95084ced2b7aca87264b525404cebf1222240"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:e441e76716d06216bbcbeb24782aaf2f2d65b28cb38c971aad35f11346fdfd83"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fbabea3e3d128953ff0b52899e2a183b79219a14e79d60f538ea30098c4f1c53"}, - {file = "pymssql-2.2.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:539267209e9e41ccf3b2ad9f2cc79aa3967c8c293d9aec31c0cea4c25f0b2abe"}, - {file = "pymssql-2.2.4-cp39-cp39-win32.whl", hash = "sha256:f694e31c28d412833e8ec3331fe4363d52ec3d0a3b1cd314ef432aba5e6cbb7c"}, - {file = "pymssql-2.2.4-cp39-cp39-win_amd64.whl", hash = "sha256:95a8786094c9ae30b6e322fabe89e8f50a636d05c34f2d17add9bc9643c2a6af"}, - {file = "pymssql-2.2.4.tar.gz", hash = "sha256:6ff7867699997e73114d96314361696ab1a49a1250b6b5d6f884c7ab380a5b82"}, + {file = "pymssql-2.2.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6462017183f05ae231c3f84efce4e9a8d085b4a2e9e3ed5c407ee643494a0842"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6a013c82f7320c92039ac20db935e897a3fcd7423435705cef177f863dbb32e4"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:45e9bba4870103363c865d2b867de8de082745dd753083f27927ded3d15df587"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20de2f718f3c99040637a0e7d3b81f22e62211bcac01fb65641b964e70f26e20"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18eb4fcb55b67aaa2811e124eb8750fd84eeba1668a695908c6cc13682f6be5d"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_24_i686.whl", hash = "sha256:9969971117401096a8a7c1e08d84ea3d5d3f598ee482822583a44e2e6d3791d0"}, + {file = "pymssql-2.2.5-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:bb858c8a64990dd0145d874ef01af4b6fe39e9202ee0a74a8dff8285b801db21"}, + {file = "pymssql-2.2.5-cp310-cp310-win32.whl", hash = "sha256:da78a94908d42aa0f8af1b917c49c4dea38273035f81ea168b095e0b3ba8e486"}, + {file = "pymssql-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:b691779a450ebbbb98cd2ad89ae9f17799b0bf0c9dd2e65b316efcc74246716e"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92262bf5d21b6d80e887d6fd0f03ab6337dad39b642b1887416cc67b1bd04cbf"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00f5b7e22bf7eb0faa5c6693e02c00f10ecc89fe505bbe84d553352681c2a749"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac80d1d11703120b986c604ddf4993c3dcbcbe907b04e34729c5aae2891399c0"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bf813ea0e4a0bfbb53a3469125eed06635222ea729339403585fd45f18a7812"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_24_i686.whl", hash = "sha256:73b747261cdf8d69395823cf650cf143d618ada412cbec90a88e4d449e7fa7f8"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:ce9e7ed16793c72d28e80506abd59a06b594fc55fe24f6256b7007b5b5e26120"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5dcb4e4ceb16592a5d9ea3868162f21e7c215dde5c5e7f992709696c84a69b0"}, + {file = "pymssql-2.2.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9c90bc134a0c5c60e9acf651d87275c7e6dc6682981f62d574fa3dd441acb0f2"}, + {file = "pymssql-2.2.5-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:29d647ef61641cebc0e16d4a549b3f793f32bab88e7ba7c7550772a7aba9dea3"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:633079e248cdefef2207c0a55608637d0f3410f53e5679c589b37ea7965a2cca"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e373764cc81719f830b113ce6fee6849f2c4e5dfe1037804864b7dfb9946817e"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b47c05da0fffd6dd77141c1c37975a8469334f63e6faf03f5eab6d83c9001cc"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc245011aad9c018105193585469461c35fb35e7255b8e66fa27479f835742aa"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_24_i686.whl", hash = "sha256:72bbccdaf4938db7ff99db1f82ecdf6dc78778d8b7bbe6080590dd01024988de"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:395ec9e512a8d5b707aea8f516eebf51291b6fb6bc18fe4da88b222843bd4d46"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bb912b4681d55dce63f940becb7f4533661cfdb99cd6cd3daa7d7b5e285e977"}, + {file = "pymssql-2.2.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14dee37da84653d1e483236d51bc0545e6442e0642ee362526db6599fd3c1733"}, + {file = "pymssql-2.2.5-cp37-cp37m-win32.whl", hash = "sha256:5e2cd5a6da441aa3e8ee13e8811f884791d77a4cb17028381543bf50d010c919"}, + {file = "pymssql-2.2.5-cp37-cp37m-win_amd64.whl", hash = "sha256:ba43efd1057018ab404c8603bbce643347b9165c08364df8a8c03d54dffc4453"}, + {file = "pymssql-2.2.5-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:ac8d6b7e0dc97a9261b7500f086772ff5cf2bf9a0340d0aaee4dff5b217dd526"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ed7c5e58cd0ffcf3448cc38dfd2a6011f657759fcae9509748320cd89a0b8d32"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:30c4ab08cff619c7fe4d309fa6a05219b343082a1f46ca368deab5841632b8bf"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49806c343a6dea5221e98cabed1532fdd14535c5e5bb183001e0ffad31e11032"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15cc71762ec75a66bcb3751c2534ba4151b8512252b0377b842efec7cae6d953"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_24_i686.whl", hash = "sha256:e42c7043c472d45db686ae67601c6680596a2f12ceaa99fb136e647d3d8cd643"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:c738d51181ab4b3332631644ef7b561543837d1d942a291f8bc36a9e2dfb65db"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e33770ad113a646a45e4fc75f30683e92c9b929431e12977f824d6c810f28162"}, + {file = "pymssql-2.2.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8c5ad8d09f9035009ccb6f20bc9829ef60c03c436efb4b5c33af395c4030ea3d"}, + {file = "pymssql-2.2.5-cp38-cp38-win32.whl", hash = "sha256:c0611a3ea2a7ac496df30506fd28e4f7389808c59743b2eac0069e89af7289b8"}, + {file = "pymssql-2.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:45c1519c94f9915911075c95fc63d62ba612e152248093aa12b7e902499c6416"}, + {file = "pymssql-2.2.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:1089cd5871daedc9918f8958605bbd2621006c29c06b571b419be53ea46c113a"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8ac2b3213462f078671806702dfadb8e459923f0f5013d371febebf4caf598ba"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9b707e5867bb49ad9d8945231112dfa3e9588b98f6f1248714d1f1af88321230"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:538a8e7ce255cabf093b25b72f8037b1d5fd3ba28b13a34c761a029840dc1880"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b9f5ec7896fd2f19393cd564d8ef562b26692218a84088ce1b10e9fe1215032"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_24_i686.whl", hash = "sha256:6086f0b695b7ceb4603cdc2f66356a58e367a3f1828d1ca99255c4d92d1f0932"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:e0b1bcb8465d787d5141bfc02d98e1e507d02155848b1b5622528402760f5dbf"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebb7867207cf4cd497ea1d01b42590ed1db3561ef3ab8e135239301b6ee2695e"}, + {file = "pymssql-2.2.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8b32ad436f293c8cbadc1ba3aaf2621ab82303d169b1ab6f30f55053640ab5b1"}, + {file = "pymssql-2.2.5-cp39-cp39-win32.whl", hash = "sha256:cc523bfd26671346faccb1273b16a74dcdf1a8ac81c93c6bfebdb240e4d5a042"}, + {file = "pymssql-2.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:e9cce9c47e6d550992936f91f8f2e97a8f5132749bad1cd4f5f7923bf8732d1f"}, + {file = "pymssql-2.2.5.tar.gz", hash = "sha256:857411c308ecb584a3ca633be30f1971d2a8cc0bcd978709b1abf96ff43767ad"}, ] pymysql = [ {file = "PyMySQL-1.0.2-py3-none-any.whl", hash = "sha256:41fc3a0c5013d5f039639442321185532e3e2c8924687abe6537de157d403641"}, @@ -4515,7 +4620,8 @@ pyparsing = [ {file = "pyparsing-2.1.10.zip", hash = "sha256:0aa6e8d8c3f9c447a95a33bb04b103ead630121c3f4233e2980348cecf8b69c8"}, ] pypdf2 = [ - {file = "PyPDF2-1.26.0.tar.gz", hash = "sha256:e28f902f2f0a1603ea95ebe21dff311ef09be3d0f0ef29a3e44a932729564385"}, + {file = "PyPDF2-1.27.8-py3-none-any.whl", hash = "sha256:6f032ac1e7e98de38072219b622ce9dcbf64d3664e68eb330b658b29d841dd1a"}, + {file = "PyPDF2-1.27.8.tar.gz", hash = "sha256:b8fabebc080688f65cd1a51b0a6076eeb706354d947d2c71c8a83966ab21f2e5"}, ] pypdf4 = [ {file = "PyPDF4-1.27.0.tar.gz", hash = "sha256:7c932441146d205572f96254d53c79ea2c30c9e11df55a5cf87e056c7b3d7f89"}, @@ -4598,8 +4704,8 @@ python-keystoneclient = [ {file = "python_keystoneclient-3.22.0-py2.py3-none-any.whl", hash = "sha256:b9f9e74219a44be7c9955c836ab9a7ae16bde7325db6db15b6e5fe140c11bc3a"}, ] python-slugify = [ - {file = "python-slugify-6.1.1.tar.gz", hash = "sha256:00003397f4e31414e922ce567b3a4da28cf1436a53d332c9aeeb51c7d8c469fd"}, - {file = "python_slugify-6.1.1-py2.py3-none-any.whl", hash = "sha256:8c0016b2d74503eb64761821612d58fcfc729493634b1eb0575d8f5b4aa1fbcf"}, + {file = "python-slugify-6.1.2.tar.gz", hash = "sha256:272d106cb31ab99b3496ba085e3fea0e9e76dcde967b5e9992500d1f785ce4e1"}, + {file = "python_slugify-6.1.2-py2.py3-none-any.whl", hash = "sha256:7b2c274c308b62f4269a9ba701aa69a797e9bca41aeee5b3a9e79e36b6656927"}, ] python-stdnum = [ {file = "python-stdnum-1.17.tar.gz", hash = "sha256:374e2b5e13912ccdbf50b0b23fca2c3e0531174805c32d74e145f37756328340"}, @@ -4944,41 +5050,42 @@ sphinxcontrib-websupport = [ {file = "sphinxcontrib_websupport-1.2.4-py2.py3-none-any.whl", hash = "sha256:6fc9287dfc823fe9aa432463edd6cea47fa9ebbf488d7f289b322ffcfca075c7"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.32-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:4b2bcab3a914715d332ca783e9bda13bc570d8b9ef087563210ba63082c18c16"}, - {file = "SQLAlchemy-1.4.32-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:159c2f69dd6efd28e894f261ffca1100690f28210f34cfcd70b895e0ea7a64f3"}, - {file = "SQLAlchemy-1.4.32-cp27-cp27m-win_amd64.whl", hash = "sha256:d7e483f4791fbda60e23926b098702340504f7684ce7e1fd2c1bf02029288423"}, - {file = "SQLAlchemy-1.4.32-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4aa96e957141006181ca58e792e900ee511085b8dae06c2d08c00f108280fb8a"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:576684771456d02e24078047c2567025f2011977aa342063468577d94e194b00"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fff677fa4522dafb5a5e2c0cf909790d5d367326321aeabc0dffc9047cb235bd"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8679f9aba5ac22e7bce54ccd8a77641d3aea3e2d96e73e4356c887ebf8ff1082"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7046f7aa2db445daccc8424f50b47a66c4039c9f058246b43796aa818f8b751"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-win32.whl", hash = "sha256:bedd89c34ab62565d44745212814e4b57ef1c24ad4af9b29c504ce40f0dc6558"}, - {file = "SQLAlchemy-1.4.32-cp310-cp310-win_amd64.whl", hash = "sha256:199dc6d0068753b6a8c0bd3aceb86a3e782df118260ebc1fa981ea31ee054674"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8e1e5d96b744a4f91163290b01045430f3f32579e46d87282449e5b14d27d4ac"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edfcf93fd92e2f9eef640b3a7a40db20fe3c1d7c2c74faa41424c63dead61b76"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:04164e0063feb7aedd9d073db0fd496edb244be40d46ea1f0d8990815e4b8c34"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ba59761c19b800bc2e1c9324da04d35ef51e4ee9621ff37534bc2290d258f71"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-win32.whl", hash = "sha256:708973b5d9e1e441188124aaf13c121e5b03b6054c2df59b32219175a25aa13e"}, - {file = "SQLAlchemy-1.4.32-cp36-cp36m-win_amd64.whl", hash = "sha256:316270e5867566376e69a0ac738b863d41396e2b63274616817e1d34156dff0e"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:9a0195af6b9050c9322a97cf07514f66fe511968e623ca87b2df5e3cf6349615"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7e4a3c0c3c596296b37f8427c467c8e4336dc8d50f8ed38042e8ba79507b2c9"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bca714d831e5b8860c3ab134c93aec63d1a4f493bed20084f54e3ce9f0a3bf99"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9a680d9665f88346ed339888781f5236347933906c5a56348abb8261282ec48"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-win32.whl", hash = "sha256:9cb5698c896fa72f88e7ef04ef62572faf56809093180771d9be8d9f2e264a13"}, - {file = "SQLAlchemy-1.4.32-cp37-cp37m-win_amd64.whl", hash = "sha256:8b9a395122770a6f08ebfd0321546d7379f43505882c7419d7886856a07caa13"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:3f88a4ee192142eeed3fe173f673ea6ab1f5a863810a9d85dbf6c67a9bd08f97"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd93162615870c976dba43963a24bb418b28448fef584f30755990c134a06a55"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a2e73508f939175363d8a4be9dcdc84cf16a92578d7fa86e6e4ca0e6b3667b2"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfec934aac7f9fa95fc82147a4ba5db0a8bdc4ebf1e33b585ab8860beb10232f"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-win32.whl", hash = "sha256:bb42f9b259c33662c6a9b866012f6908a91731a419e69304e1261ba3ab87b8d1"}, - {file = "SQLAlchemy-1.4.32-cp38-cp38-win_amd64.whl", hash = "sha256:7ff72b3cc9242d1a1c9b84bd945907bf174d74fc2519efe6184d6390a8df478b"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:5dc9801ae9884e822ba942ca493642fb50f049c06b6dbe3178691fce48ceb089"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4607d2d16330757818c9d6fba322c2e80b4b112ff24295d1343a80b876eb0ed"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:20e9eba7fd86ef52e0df25bea83b8b518dfdf0bce09b336cfe51671f52aaaa3f"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:290cbdf19129ae520d4bdce392648c6fcdbee763bc8f750b53a5ab51880cb9c9"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-win32.whl", hash = "sha256:1bbac3e8293b34c4403d297e21e8f10d2a57756b75cff101dc62186adec725f5"}, - {file = "SQLAlchemy-1.4.32-cp39-cp39-win_amd64.whl", hash = "sha256:b3f1d9b3aa09ab9adc7f8c4b40fc3e081eb903054c9a6f9ae1633fe15ae503b4"}, - {file = "SQLAlchemy-1.4.32.tar.gz", hash = "sha256:6fdd2dc5931daab778c2b65b03df6ae68376e028a3098eb624d0909d999885bc"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:81e53bd383c2c33de9d578bfcc243f559bd3801a0e57f2bcc9a943c790662e0c"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e1fe00ee85c768807f2a139b83469c1e52a9ffd58a6eb51aa7aeb524325ab18"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win32.whl", hash = "sha256:d57ac32f8dc731fddeb6f5d1358b4ca5456e72594e664769f0a9163f13df2a31"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27m-win_amd64.whl", hash = "sha256:fca8322e04b2dde722fcb0558682740eebd3bd239bea7a0d0febbc190e99dc15"}, + {file = "SQLAlchemy-1.4.36-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53d2d9ee93970c969bc4e3c78b1277d7129554642f6ffea039c282c7dc4577bc"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:f0394a3acfb8925db178f7728adb38c027ed7e303665b225906bfa8099dc1ce8"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c606d8238feae2f360b8742ffbe67741937eb0a05b57f536948d198a3def96"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8d07fe2de0325d06e7e73281e9a9b5e259fbd7cbfbe398a0433cbb0082ad8fa7"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5041474dcab7973baa91ec1f3112049a9dd4652898d6a95a6a895ff5c58beb6b"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win32.whl", hash = "sha256:be094460930087e50fd08297db9d7aadaed8408ad896baf758e9190c335632da"}, + {file = "SQLAlchemy-1.4.36-cp310-cp310-win_amd64.whl", hash = "sha256:64d796e9af522162f7f2bf7a3c5531a0a550764c426782797bbeed809d0646c5"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:a0ae3aa2e86a4613f2d4c49eb7da23da536e6ce80b2bfd60bbb2f55fc02b0b32"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d50cb71c1dbed70646d521a0975fb0f92b7c3f84c61fa59e07be23a1aaeecfc"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:16abf35af37a3d5af92725fc9ec507dd9e9183d261c2069b6606d60981ed1c6e"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864a83bd345871ad9699ce466388f836db7572003d67d9392a71998092210e3"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win32.whl", hash = "sha256:fbf8c09fe9728168f8cc1b40c239eab10baf9c422c18be7f53213d70434dea43"}, + {file = "SQLAlchemy-1.4.36-cp36-cp36m-win_amd64.whl", hash = "sha256:6e859fa96605027bd50d8e966db1c4e1b03e7b3267abbc4b89ae658c99393c58"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:166a3887ec355f7d2f12738f7fa25dc8ac541867147a255f790f2f41f614cb44"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e885548da361aa3f8a9433db4cfb335b2107e533bf314359ae3952821d84b3e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5c90ef955d429966d84326d772eb34333178737ebb669845f1d529eb00c75e72"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a052bd9f53004f8993c624c452dfad8ec600f572dd0ed0445fbe64b22f5570e"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win32.whl", hash = "sha256:dce3468bf1fc12374a1a732c9efd146ce034f91bb0482b602a9311cb6166a920"}, + {file = "SQLAlchemy-1.4.36-cp37-cp37m-win_amd64.whl", hash = "sha256:6cb4c4f57a20710cea277edf720d249d514e587f796b75785ad2c25e1c0fed26"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e74ce103b81c375c3853b436297952ef8d7863d801dcffb6728d01544e5191b5"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b20c4178ead9bc398be479428568ff31b6c296eb22e75776273781a6551973f"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af2587ae11400157753115612d6c6ad255143efba791406ad8a0cbcccf2edcb3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83cf3077712be9f65c9aaa0b5bc47bc1a44789fd45053e2e3ecd59ff17c63fe9"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win32.whl", hash = "sha256:ce20f5da141f8af26c123ebaa1b7771835ca6c161225ce728962a79054f528c3"}, + {file = "SQLAlchemy-1.4.36-cp38-cp38-win_amd64.whl", hash = "sha256:316c7e5304dda3e3ad711569ac5d02698bbc71299b168ac56a7076b86259f7ea"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:f522214f6749bc073262529c056f7dfd660f3b5ec4180c5354d985eb7219801e"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ecac4db8c1aa4a269f5829df7e706639a24b780d2ac46b3e485cbbd27ec0028"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3db741beaa983d4cbf9087558620e7787106319f7e63a066990a70657dd6b35"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ec89bf98cc6a0f5d1e28e3ad28e9be6f3b4bdbd521a4053c7ae8d5e1289a8a1"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win32.whl", hash = "sha256:e12532c4d3f614678623da5d852f038ace1f01869b89f003ed6fe8c793f0c6a3"}, + {file = "SQLAlchemy-1.4.36-cp39-cp39-win_amd64.whl", hash = "sha256:cb441ca461bf97d00877b607f132772644b623518b39ced54da433215adce691"}, + {file = "SQLAlchemy-1.4.36.tar.gz", hash = "sha256:64678ac321d64a45901ef2e24725ec5e783f1f4a588305e196431447e7ace243"}, ] statsd = [ {file = "statsd-3.2.1-py2.py3-none-any.whl", hash = "sha256:7aff40c6cdda703193fac6231410c6c0ad5939ce053a168016501e982c755c84"}, @@ -5228,8 +5335,8 @@ xmlformatter = [ {file = "xmlformatter-0.2.4.tar.gz", hash = "sha256:6d93c4bc04cffb1d4cf6eb9d9034018e9b264e4554269e7da67539ba4bff03f5"}, ] xmltodict = [ - {file = "xmltodict-0.12.0-py2.py3-none-any.whl", hash = "sha256:8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051"}, - {file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"}, + {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, + {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] yarl = [ {file = "yarl-1.7.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f2a8508f7350512434e41065684076f640ecce176d262a7d54f0da41d99c5a95"}, diff --git a/pyproject.toml b/pyproject.toml index 28beea7..30e07fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ authors = [ "Mathieu Benoit ",] python = "^3.7.12" Babel = "2.9.1" Cerberus = "^1.3.4" -Cython = "^0.29.28" +Cython = "^0.29.30" GitPython = "3.1.12" Jinja2 = "2.11.3" Js2Py = "^0.71" @@ -30,10 +30,10 @@ MarkupSafe = "0.23" Pillow = "9.0.1" PyJWT = "1.7.1" PyMySQL = "^1.0.2" -PyPDF2 = "1.26.0" +PyPDF2 = "1.27.8" PyYAML = "6.0" SOAPpy = "^0.12.22" -SQLAlchemy = "^1.4.32" +SQLAlchemy = "^1.4.36" Shapely = "1.6.4.post2" Sphinx = "1.6.7" Unidecode = "1.0.22" @@ -46,29 +46,30 @@ altair = "^4.2.0" argcomplete = "^2.0.0" asterisk = "^0.0.8" astor = "^0.8.1" -beautifulsoup4 = "^4.10.0" +beautifulsoup4 = "^4.11.1" bokeh = "1.1.0" boto3 = ">=1.20.41" cachetools = ">=2.0.1" chardet = "3.0.4" -click = "^8.1.0" -cloudflare = "^2.8.15" +click = "^8.1.3" +cloudflare = "^2.9.10" code-writer = "^1.1.1" colorama = "^0.4.4" +coverage = "^6.3.3" cryptography = "36.0.1" css-html-prettify = "^2.5.5" ddt = "1.2.0" decorator = "4.0.10" docutils = "0.17.1" ebaysdk = "2.1.5" -email-validator = "^1.1.3" +email-validator = "^1.2.1" emoji = "^1.7.0" escpos = "^1.9" -extract-msg = "^0.30.8" +extract-msg = "^0.30.12" factur-x = "^2.3" feedparser = "5.2.1" flake8 = "^4.0.1" -formio-data = "^0.3.14" +formio-data = "^0.4.4" freezegun = "0.3.11" geojson = "2.4.1" gevent = "1.3.4" @@ -83,7 +84,7 @@ jira = "2.0.0" keystoneauth1 = "3.14.0" lasso = "^0.0.5" libsass = "0.12.3" -lxml = "4.7.1" +lxml = "4.8.0" matplotlib = ">=2.0.0" mock = "2.0.0" mpld3 = "0.3" @@ -94,15 +95,16 @@ oauthlib = "2.1.0" oca-decorators = "^0.0.1" ofxparse = "0.16" openpyxl = "^3.0.9" -openupgradelib = "^3.3.2" +openupgradelib = "^3.3.3" +orjson = "^3.6.8" paho-mqtt = "^1.6.1" pandas = "1.3.5" -paramiko = "^2.10.3" +paramiko = "^2.11.0" passlib = "1.6.5" pdf2image = "^1.16.0" pdfminer = "^20191125" pexpect = "^4.8.0" -phonenumbers = "^8.12.45" +phonenumbers = "^8.12.48" plotly = "4.1.0" premailer = "^3.10.0" psutil = "5.9.0" @@ -116,7 +118,7 @@ pydot = "1.2.3" pygount = "<1.2.0" pyjsparser = "^2.7.1" pyldap = "2.4.28" -pymssql = "^2.2.4" +pymssql = "^2.2.5" pyotp = "^2.6.0" pyparsing = "2.1.10" pyproj = "3.2.1" @@ -169,7 +171,7 @@ win_unicode_console = "^0.5" xlrd = "1.0.0" xlwt = "1.3" xmlformatter = "^0.2.4" -xmltodict = "^0.12.0" +xmltodict = "^0.13.0" zeep = "^4.1.0" zxcvbn = "^4.4.28" diff --git a/requirements.txt b/requirements.txt index 0fdd791..301559b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,6 +34,7 @@ python-git voicent-python python-swiftclient python-keystoneclient +coverage # For logical test docutils==0.17.1 @@ -78,7 +79,7 @@ Werkzeug==0.11.15 # Force version for security update pyyaml==6.0 -lxml==4.7.1 +lxml==4.8.0 cryptography==36.0.1 psutil==5.9.0 Pillow==9.0.1 @@ -88,3 +89,4 @@ pycrypto==2.6.1 urllib3==1.26.8 requests==2.27.1 boto3>=1.20.41 +PyPDF2==1.27.8 diff --git a/script/addons/coverage_install_addons.sh b/script/addons/coverage_install_addons.sh new file mode 100755 index 0000000..ca2190a --- /dev/null +++ b/script/addons/coverage_install_addons.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# Argument 3 is config +if [[ $# -eq 3 ]]; then + ./script/addons/check_addons_exist.py -m "$2" -c "$3" +else + ./script/addons/check_addons_exist.py -m "$2" +fi +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error check_addons_exist.py into coverage_install_addons.sh" + exit 1 +fi +if [[ $# -eq 3 ]]; then + ./coverage_run.sh --no-http --stop-after-init -d "$1" -i "$2" -u "$2" -c "$3" +else + ./coverage_run.sh --no-http --stop-after-init -d "$1" -i "$2" -u "$2" +fi + +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error coverage_run.sh into coverage_install_addons.sh" + exit 1 +fi diff --git a/script/addons/coverage_install_addons_dev.sh b/script/addons/coverage_install_addons_dev.sh new file mode 100755 index 0000000..89e813a --- /dev/null +++ b/script/addons/coverage_install_addons_dev.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# Argument 3 is config +if [[ $# -eq 3 ]]; then + ./script/addons/check_addons_exist.py -m "$2" -c "$3" +else + ./script/addons/check_addons_exist.py -m "$2" +fi +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error check_addons_exist.py into coverage_install_addons_dev.sh" + exit 1 +fi +if [[ $# -eq 3 ]]; then + ./coverage_run.sh --no-http --stop-after-init --dev qweb -d "$1" -i "$2" -u "$2" -c "$3" +else + ./coverage_run.sh --no-http --stop-after-init --dev qweb -d "$1" -i "$2" -u "$2" +fi + +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error coverage_run.sh into coverage_install_addons_dev.sh" + exit 1 +fi diff --git a/script/addons/install_addons_theme.sh b/script/addons/install_addons_theme.sh new file mode 100755 index 0000000..e05c7d3 --- /dev/null +++ b/script/addons/install_addons_theme.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# TODO addons website need to be install before to install the theme +# Argument 3 is config +if [[ $# -eq 3 ]]; then + ./script/addons/check_addons_exist.py -m "$2" -c "$3" +else + ./script/addons/check_addons_exist.py -m "$2" +fi +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error check_addons_exist.py into install_addons.sh" + exit 1 +fi +if [[ $# -eq 3 ]]; then + ./run.sh --no-http --stop-after-init -d "$1" --install-theme "$2" -c "$3" +else + ./run.sh --no-http --stop-after-init -d "$1" --install-theme "$2" +fi + +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error run.sh into install_addons_theme.sh" + exit 1 +fi diff --git a/script/code_generator/coverage_install_and_test_code_generator.sh b/script/code_generator/coverage_install_and_test_code_generator.sh new file mode 100755 index 0000000..c43f38e --- /dev/null +++ b/script/code_generator/coverage_install_and_test_code_generator.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# $1 is database name +# $2 is module name separate by , +# $3 is directory path to check +# $4 is generated module name separate by , +# $5 optional, the config path + +if [[ $# -lt 4 ]]; then + echo "ERROR, need 4 arguments: 1-database name, 2-list of module to install, 3-directory to check difference, 4-list of generated module" + exit 1 +fi + +INIT_DATETIME=$(date +%s) + +if [[ $# -eq 5 ]]; then + ./script/addons/coverage_install_addons_dev.sh "$1" "$2" "$5" + retVal=$? + if [[ $retVal -ne 0 ]]; then + echo "Error ./script/addons/coverage_install_addons_dev.sh ${1} ${2} ${5}" + exit 1 + fi +else + ./script/addons/coverage_install_addons_dev.sh "$1" "$2" + retVal=$? + if [[ $retVal -ne 0 ]]; then + echo "Error ./script/addons/coverage_install_addons_dev.sh ${1} ${2}" + exit 1 + fi +fi + +# Check if the code was updated +./script/code_generator/test_code_generator_update_module.py -m "$4" -d "$3" --datetime "${INIT_DATETIME}" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error ./script/code_generator/test_code_generator_update_module.py ${4} ${3}" + exit 1 +fi + +# TODO check output when got warning +./script/repo_revert_git_diff_date_from_code_generator.py --repo "$3" +# Remove pot and po diff +cd "$3" || exit 1 +# git 2.22 and more, else use next command +#BRANCH=$(git branch --show-current) +#BRANCH=$(git rev-parse --abbrev-ref HEAD) + +# Support old version git < 2.23.0 +# git restore --source="${BRANCH}" "*.po*" +git checkout -- "*.po*" + +cd - || exit 1 +./script/maintenance/black.sh "$3" +echo "TEST ${2}" +./script/code_generator/check_git_change_code_generator.sh "$3" +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error ./script/code_generator/check_git_change_code_generator.sh" + exit 1 +fi diff --git a/script/code_generator/new_project.py b/script/code_generator/new_project.py index 19757be..ba7a8dc 100755 --- a/script/code_generator/new_project.py +++ b/script/code_generator/new_project.py @@ -57,6 +57,11 @@ def get_config(): "--directory_code_generator", help="The directory of the code_generator to use.", ) + parser.add_argument( + "--coverage", + action="store_true", + help="Execute coverage file.", + ) parser.add_argument( "--code_generator_name", help="The name of the code_generator to use.", @@ -100,8 +105,10 @@ class ProjectManagement: template_directory="", force=False, keep_bd_alive=False, + coverage=False, ): self.force = force + self._coverage = coverage self.keep_bd_alive = keep_bd_alive self.msg_error = "" self.has_config_update = False @@ -317,10 +324,17 @@ class ProjectManagement: _logger.info(cmd) os.system(cmd) _logger.info("========= GENERATE code_generator_demo =========") - cmd = ( - f"./script/addons/install_addons_dev.sh {bd_name_demo}" - f" code_generator_demo {config_path}" - ) + + if self._coverage: + cmd = ( + "./script/addons/coverage_install_addons_dev.sh" + f" {bd_name_demo} code_generator_demo {config_path}" + ) + else: + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_demo}" + f" code_generator_demo {config_path}" + ) os.system(cmd) if not self.keep_bd_alive: @@ -370,17 +384,29 @@ class ProjectManagement: ) _logger.info(cmd) os.system(cmd) - cmd = ( - f"./script/addons/install_addons_dev.sh {bd_name_template}" - f" {self.module_name} {config_path}" - ) + if self._coverage: + cmd = ( + "./script/addons/coverage_install_addons_dev.sh" + f" {bd_name_template} {self.module_name} {config_path}" + ) + else: + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_template}" + f" {self.module_name} {config_path}" + ) _logger.info(cmd) os.system(cmd) - cmd = ( - f"./script/addons/install_addons_dev.sh {bd_name_template}" - f" {self.template_name} {config_path}" - ) + if self._coverage: + cmd = ( + "./script/addons/coverage_install_addons_dev.sh" + f" {bd_name_template} {self.template_name} {config_path}" + ) + else: + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_template}" + f" {self.template_name} {config_path}" + ) _logger.info(cmd) os.system(cmd) @@ -405,10 +431,16 @@ class ProjectManagement: os.system(cmd) _logger.info(f"========= GENERATE {self.cg_name} =========") - cmd = ( - f"./script/addons/install_addons_dev.sh {bd_name_generator}" - f" {self.cg_name} {config_path}" - ) + if self._coverage: + cmd = ( + "./script/addons/coverage_install_addons_dev.sh" + f" {bd_name_generator} {self.cg_name} {config_path}" + ) + else: + cmd = ( + f"./script/addons/install_addons_dev.sh {bd_name_generator}" + f" {self.cg_name} {config_path}" + ) _logger.info(cmd) os.system(cmd) @@ -476,6 +508,7 @@ def main(): template_name=config.template_name, force=config.force, keep_bd_alive=config.keep_bd_alive, + coverage=config.coverage, ) if project.msg_error: return -1 diff --git a/script/db_restore.py b/script/db_restore.py index 98a9608..a02733a 100755 --- a/script/db_restore.py +++ b/script/db_restore.py @@ -53,7 +53,7 @@ def get_config(): def get_master_password(): try: - # _logger.info("You have 5 secondes to add master password...") + # _logger.info("You have 5 seconds to add master password...") pa = getpass.getpass(prompt="\nEnter master password... ") return pa except getpass.GetPassWarning: @@ -73,9 +73,9 @@ def main(): arg_base = "./.venv/bin/python3 ./odoo/odoo-bin db" - # check if need master password from config file + # check if it needs master password from config file has_config_file = True - config_path = "./config.py" + config_path = "./config.conf" if not os.path.isfile(config_path): config_path = "/etc/odoo/odoo.conf" if not os.path.isfile(config_path): @@ -85,7 +85,7 @@ def main(): config_parser.read(config_path) has_admin_password = config_parser.get("options", "admin_passwd") - if has_admin_password: + if has_admin_password and has_admin_password != "admin": master_password = get_master_password() if not master_password: _logger.error("Missing master password, cancel transaction.") diff --git a/script/generate_config.sh b/script/generate_config.sh index 59967f4..60d24fa 100755 --- a/script/generate_config.sh +++ b/script/generate_config.sh @@ -29,6 +29,7 @@ printf "addons_path = ${EL_HOME_ODOO}/addons,${EL_HOME}/addons/addons," >> ${EL_ printf "${EL_HOME}/addons/OCA_web," >> ${EL_CONFIG_FILE} if [[ ${EL_MINIMAL_ADDONS} = "False" ]]; then printf "${EL_HOME}/addons/CybroOdoo_OpenHRMS," >> ${EL_CONFIG_FILE} + printf "${EL_HOME}/addons/ERPLibre_erplibre-3D-printing-addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/ERPLibre_erplibre_addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/ERPLibre_erplibre_theme_addons," >> ${EL_CONFIG_FILE} printf "${EL_HOME}/addons/MathBenTech_development," >> ${EL_CONFIG_FILE} diff --git a/script/test/run_parallel_test.py b/script/test/run_parallel_test.py index d47523f..4ba545c 100755 --- a/script/test/run_parallel_test.py +++ b/script/test/run_parallel_test.py @@ -40,6 +40,11 @@ def get_config(): action="store_true", help="Will run in serial.", ) + parser.add_argument( + "--coverage", + action="store_true", + help="Execute coverage file.", + ) parser.add_argument( "--keep_cache", action="store_true", @@ -271,6 +276,7 @@ async def test_exec( test_name=None, install_path=None, run_in_sandbox=False, + restore_db_image_name="erplibre_base", ) -> Tuple[str, int]: test_result = "" test_status = 0 @@ -567,6 +573,8 @@ async def test_exec( "./script/db_restore.py", "--database", unique_database_name, + "--image", + restore_db_image_name, test_name=test_name, ) test_result += res @@ -576,11 +584,18 @@ async def test_exec( if not test_status and lst_init_module_name: # Install required module str_test = ",".join(lst_init_module_name) - script_name = ( - "./script/addons/install_addons_dev.sh" - if tested_module - else "./script/addons/install_addons.sh" - ) + if config.coverage: + script_name = ( + "./script/addons/coverage_install_addons_dev.sh" + if tested_module + else "./script/addons/coverage_install_addons.sh" + ) + else: + script_name = ( + "./script/addons/install_addons_dev.sh" + if tested_module + else "./script/addons/install_addons.sh" + ) if new_config_path: res, status = await run_command( script_name, @@ -623,10 +638,15 @@ async def test_exec( # destination_path = install_path if not test_status and tested_module and generated_module: + cmd = ( + "./script/code_generator/coverage_install_and_test_code_generator.sh" + if config.coverage + else "./script/code_generator/install_and_test_code_generator.sh" + ) # Finally, the test if new_config_path: res, status = await run_command( - "./script/code_generator/install_and_test_code_generator.sh", + cmd, unique_database_name, tested_module, test_generated_path, @@ -636,7 +656,7 @@ async def test_exec( ) else: res, status = await run_command( - "./script/code_generator/install_and_test_code_generator.sh", + cmd, unique_database_name, tested_module, install_path, @@ -798,6 +818,33 @@ async def run_code_generator_data_test(config) -> Tuple[str, int]: return test_result, test_status +async def run_code_generator_export_website_attachments_test( + config, +) -> Tuple[str, int]: + test_result = "" + test_status = 0 + lst_generated_module = [ + "demo_website_attachments_data", + ] + lst_tested_module = [ + "code_generator_demo_export_website_attachments", + ] + # Multiple + res, status = await test_exec( + config, + "./addons/TechnoLibre_odoo-code-generator-template", + generated_module=",".join(lst_generated_module), + tested_module=",".join(lst_tested_module), + test_name="code_generator_export_website_attachments_test", + run_in_sandbox=True, + restore_db_image_name="test_website_attachments", + ) + test_result += res + test_status += status + + return test_result, test_status + + async def run_code_generator_theme_test(config) -> Tuple[str, int]: test_result = "" test_status = 0 @@ -864,10 +911,12 @@ async def run_code_generator_website_snippet_test(config) -> Tuple[str, int]: lst_generated_module = [ "demo_website_leaflet", "demo_website_snippet", + "demo_website_multiple_snippet", ] lst_tested_module = [ "code_generator_demo_website_leaflet", "code_generator_demo_website_snippet", + "code_generator_demo_website_multiple_snippet", ] # Multiple res, status = await test_exec( @@ -1147,6 +1196,7 @@ def run_all_test(config) -> None: # Begin run generic test # run_code_generator_generic_all_test(config), run_code_generator_data_test(config), + run_code_generator_export_website_attachments_test(config), run_code_generator_theme_test(config), run_code_generator_website_snippet_test(config), run_code_generator_demo_generic_test(config), diff --git a/source_repo_addons.csv b/source_repo_addons.csv index 0e6cf99..6baeeee 100644 --- a/source_repo_addons.csv +++ b/source_repo_addons.csv @@ -134,3 +134,4 @@ https://github.com/novacode-nl/odoo-formio.git,addons,, https://github.com/ajepe/odoo-addons.git,addons,, https://github.com/OmniaGit/odooplm.git,addons,, https://github.com/MathBenTech/erplibre-family-management.git,addons,, +https://github.com/ERPLibre/erplibre-3D-printing-addons.git,addons,, diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..85db1ad --- /dev/null +++ b/test.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Usage, ./test.sh -d test_addons_name -i module_name +source ./.venv/bin/activate + +CONFIG_PATH="./config.conf" +ORIGIN_CONFIG_PATH=CONFIG_PATH +if [ ! -f "${CONFIG_PATH}" ]; then + CONFIG_PATH="/etc/odoo/odoo.conf" + if [ ! -f "${CONFIG_PATH}" ]; then + echo "Cannot find ERPLibre configuration ${ORIGIN_CONFIG_PATH}, did you install ERPLibre? > make install" + exit 1 + fi +fi + +coverage run -p ./odoo/odoo-bin -c ${CONFIG_PATH} --limit-time-real 99999 --limit-time-cpu 99999 --log-level=test --test-enable --stop-after-init $@ +retVal=$? +if [[ $retVal -ne 0 ]]; then + echo "Error test.sh" + exit 1 +fi diff --git a/test/code_generator/coverage_hello_world.sh b/test/code_generator/coverage_hello_world.sh new file mode 100755 index 0000000..4b4bda2 --- /dev/null +++ b/test/code_generator/coverage_hello_world.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +Color_Off='\033[0m' # Text Reset +Red='\033[0;31m' # Red +Green='\033[0;32m' # Green + +tmp_dir=$(mktemp -d -t "erplibre_code_generator_helloworld-$(date +%Y-%m-%d-%H-%M-%S)-XXXXXXXXXX") + +./script/code_generator/new_project.py -m test -d "${tmp_dir}" + +MODULE_PATH="${tmp_dir}/test" +if [[ -d "${MODULE_PATH}" ]]; then + echo -e "${Green}SUCCESS${Color_Off} ${MODULE_PATH} exists." +else + echo -e "${Red}ERROR${Color_Off} ${MODULE_PATH} is missing." +fi + +rm -rf "${tmp_dir}"