hap-cli 0.9.7__tar.gz → 0.9.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hap_cli-0.9.7 → hap_cli-0.9.8}/PKG-INFO +1 -1
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/__init__.py +1 -1
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/post_cmd.py +9 -4
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/post.py +36 -14
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/post.md +5 -4
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/index.json +2 -2
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/post.md +4 -3
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/locale/messages.json +4 -4
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_post_group_friction.py +51 -3
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/PKG-INFO +1 -1
- {hap_cli-0.9.7 → hap_cli-0.9.8}/MANIFEST.in +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/README.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/__main__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/config.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/fixtures/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/fixtures/feedback_scenario.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/harness.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/smoke.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/app_live_tests/state.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/README.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/README_CN.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/__main__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/_entry.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/app_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/app_creator_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/app_editor_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/attachment_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/auth_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/calendar_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/chart_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/chat_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/chatbot_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/config_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/contact_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/department_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/group_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/guide_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/icon_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/instance_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/node_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/optionset_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/page_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/record_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/region_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/role_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/update_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/upload_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/v3_registry.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/workflow_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/commands/worksheet_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/context.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/action_spec_adapter.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/_hapmeta/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/_hapmeta/control_type_codes.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/_hapmeta/worksheet_templates.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/charts.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/cleanup.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/compiler.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/config.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/design/design.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/errors.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/examples/minimal.design.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/executor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/fields.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/hap.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/merge.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/recording/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/recording/console.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/recording/jsonl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/recording/mirror.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/recording/report.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/schema.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/INSTRUCTIONS.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/executor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/resources/attachments.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/resources/sample.docx +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/resources/sample.pdf +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/resources/sample_images.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/seed/template.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/selftest.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/smoke.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/steps.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/store.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/validate.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/app_creator/workflow_dsl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/attachment.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/auth.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/calendar_mod.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/chart.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/chat.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/chatbot.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/cli_access.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/condition_dsl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/contact.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/control_type_codes.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/department.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/_hapmeta/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/_hapmeta/control_type_codes.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/apply.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/componentlower.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/editspec/component.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/editspec/custom-action.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/editspec/envelope.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/editspec/field.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/editspec.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/errors.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/fieldlower.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/jsonschema_mini.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/models.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/ops.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/planner.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/editor/reader.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/field_normalizer.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/field_spec_adapter.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/filter_translator.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/filter_v3.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/flow_node.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/global_meta.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/group.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/guide.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/icon_index.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/instance.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/layout_check.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/logger.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/optionset.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/page.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/record.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/record_defaults.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/record_form_checks.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/record_lookups.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/record_rules.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/relation_scope.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/relogin.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/response_crypto.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/role.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/role_perm_builder.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/rule_spec_adapter.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/session.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/token_crypto.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/update.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/upload.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/v3/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/v3/dispatcher.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/v3/render.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/v3/schema.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/view_spec_adapter.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/workflow.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/workflow_node_dsl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/worksheet.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/worksheet_form.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/worksheet_reference.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/core/worksheet_templates.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/approval.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/chart.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/messages.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/overview.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/record.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/setup.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/skills.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/workflow.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/en/worksheet.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/approval.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/chart.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/messages.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/overview.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/record.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/setup.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/skills.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/workflow.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/guide/zh-Hans/worksheet.md +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/i18n.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/locale/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/locale/messages.schema.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/conftest.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_action_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_advanced_setting_guard.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_app_creator.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_app_editor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_app_export_usage.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_app_light_color.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_app_section_name.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_approval_submit_fill_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_approval_wire.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_atomic_write.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_attachment_share.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_auth_prerelease.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_batch_add_atomic.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_bug_036430.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_bug_036750.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_calendar_date_range.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_calendar_discussion_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chart.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chart_filter_merge.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chat_attachment_send.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chat_messages_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chat_recall_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_chat_send_socket.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_cli_access.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_coded_responses.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_condition_dsl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_condition_dsl_entries.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_condition_dsl_readback.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_config_cmd.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_content_language.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_control_lookup_guard.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_core.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_create_worksheet_partial.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_destructive_confirm_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_dsl_existing_node_refs.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_dsl_multi_record_guard.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_editor_inline_subtable.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_engine_core_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_arg_consistency.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_bidirectional.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_discussion_mentions.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_entry_module.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_field_record_ref.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_http_error_body.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_json_anywhere.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_json_file_arg.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_layout_check.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_node_get_detail.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_node_summary.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_post_cursor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_publish_reasons.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_replicate_workflow.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_save_fields_shape.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_subgroups.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_subtable_read.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_worksheet_references.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_worksheet_visibility.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fb_worksheet_workflows.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_fields_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_full_e2e.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g1_chart_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g1_record_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g1_upload_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g1_worksheet_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g2_coverage_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g3_workflow_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g4_approval_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g5_low_frequency_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g6_advanced_fields.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g6_fields_roundtrip.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g7_misc_gaps.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g7b_permanent_delete.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g8_filter_operator.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g8b_pivot_operators.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g8c_empty_filter_and_help_truth.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_g9_appid_resolve.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_global_meta.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_guide.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_guide_sections.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_i18n.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_inner_flow_batch_add.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_instance_envelope.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_instance_history_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_approval.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_approval_actions.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_calendar.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_destructive.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_misc.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_post.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_social.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_v3.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_workflow.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_integration_worksheet_extra.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_jsonschema_mini_copy.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_member_relation_array_wrap.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_multi_profile.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_no_workflow_unsupported.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_noninteractive_confirm.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_org_approval_v3_semantic_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_org_id_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_org_id_docs.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_page_filters_group_read.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_page_filters_group_update.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_page_save_page_id.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_parameter_conventions.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_parameter_mapping_registry.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_post_attachments.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_post_scope_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_batch_v3_semantic_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_business_rules.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_defaults.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_doc_id_hidden.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_field_alias.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_form_checks.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_run_action.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_v3_semantic_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_record_write_fixes.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_relation_scope.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_relogin.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_rmw_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_role_app_scope.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_rule_filters_and_field_warning.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_save_action_silent_drop.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_save_rule_spec.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_select_add_option.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_select_rejects_relation_value.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_semantic_types_registry.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_subtable_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_update.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_update_mode.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_upload_allow_down.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_upload_host_resolution.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_upload_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_api_schema_loader.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_bool_flags.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_dispatcher.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_registry_coverage.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_response_format_json.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_session.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_v3_yaml_translation.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_view_mdpublic_parity.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_config_keys.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_inner_scope.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_json_file_arg.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_node_delete_missing.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_save_action_dsl_fields.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_structure_listing.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_trigger_outcome.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wf_trigger_preserve.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_wo4_result_handling.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_code_node.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_condition_field_types.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_condition_slots.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_delete_cascade.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_envelope_errors.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_lifecycle_wire.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_list_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_node_wire.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_publish_inner.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_read_write_keys.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_workflow_v3_semantic_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_worksheet_create_section.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_worksheet_crud_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_worksheet_filter_read.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_worksheet_switch.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/tests/test_worksheet_v3_semantic_cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/atomic_write.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/confirm.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/formatting.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/options.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli/utils/parameter_mapping.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/SOURCES.txt +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/dependency_links.txt +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/entry_points.txt +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/requires.txt +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/hap_cli.egg-info/top_level.txt +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/__main__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/_wftest.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/charts.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/cleanup.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/compiler.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/config.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/errors.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/executor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/fields.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/hap.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/recording/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/recording/console.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/recording/jsonl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/recording/mirror.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/recording/report.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/schema.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/seed/__init__.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/seed/cli.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/seed/executor.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/seed/template.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/selftest.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/smoke.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/step.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/steps.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/store.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/live_tests/workflow_dsl.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/setup.cfg +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/setup.py +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/INDEX.json +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/add_member_to_role.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/batch_delete_records.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/create_optionset.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/create_role.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/delete_optionset.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/delete_record.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/delete_role.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/delete_worksheet.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_app_info.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_app_knowledge_list.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_app_worksheets_list.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_optionset_list.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_details.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_discussions.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_list.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_logs.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_pivot_data.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_relations.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_record_share_link.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_regions.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_role_details.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/get_role_list.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/knowledge_search.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/leave_all_roles.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/remove_member_from_role.yaml +0 -0
- {hap_cli-0.9.7 → hap_cli-0.9.8}/sources/v3-api-schema/update_optionset.yaml +0 -0
|
@@ -778,8 +778,8 @@ def post_create(ctx, org_id, message, post_type, files, share_group_ids,
|
|
|
778
778
|
Files given with --file are uploaded and attached to the post.
|
|
779
779
|
|
|
780
780
|
In the message, #name# files the post under the category (topic) of
|
|
781
|
-
that name, and
|
|
782
|
-
with `hap contact resolve <name>`. --dry-run lists both, with the
|
|
781
|
+
that name, and user:<accountId> followed by a space mentions and
|
|
782
|
+
notifies a person — get the id with `hap contact resolve <name>`. --dry-run lists both, with the
|
|
783
783
|
mentioned names, before anything is published. Details in
|
|
784
784
|
`hap guide post tags`.
|
|
785
785
|
"""
|
|
@@ -796,7 +796,8 @@ def post_create(ctx, org_id, message, post_type, files, share_group_ids,
|
|
|
796
796
|
) or [f"org:{org_id or '<current>'} (everyone, default)"]
|
|
797
797
|
preview = {"audience": audience,
|
|
798
798
|
"cardToGroups": list(card_group_ids),
|
|
799
|
-
"message": message
|
|
799
|
+
"message": post_mod.mention_syntax(message),
|
|
800
|
+
"files": list(files),
|
|
800
801
|
"categories": post_mod.extract_topics(message),
|
|
801
802
|
"mentions": _preview_mentions(ctx, org_id, message),
|
|
802
803
|
"published": False}
|
|
@@ -915,7 +916,11 @@ def post_delete(ctx, post_id, yes):
|
|
|
915
916
|
)
|
|
916
917
|
@pass_context
|
|
917
918
|
def post_comment(ctx, post_id, message, reply_id, reply_account_id, files):
|
|
918
|
-
"""Add a comment to a post, optionally with files attached.
|
|
919
|
+
"""Add a comment to a post, optionally with files attached.
|
|
920
|
+
|
|
921
|
+
Mention someone with user:<accountId> followed by a space; they are
|
|
922
|
+
notified. Get the id with `hap contact resolve <name>`.
|
|
923
|
+
"""
|
|
919
924
|
try:
|
|
920
925
|
session = ctx.get_session()
|
|
921
926
|
attachments = (post_mod.upload_post_files(
|
|
@@ -262,14 +262,36 @@ def upload_post_files(
|
|
|
262
262
|
|
|
263
263
|
|
|
264
264
|
# What the feed composer writes into a post body (MDPublic
|
|
265
|
-
# src/components/MentionsInput/index.jsx).
|
|
266
|
-
#
|
|
267
|
-
#
|
|
268
|
-
#
|
|
269
|
-
#
|
|
270
|
-
#
|
|
265
|
+
# src/components/MentionsInput/index.jsx). A topic is `#name#`, half- or
|
|
266
|
+
# full-width `#` (categoryLetterArr, :19; :308). The server files the post
|
|
267
|
+
# under the category of that name, creating it when new, and reads it back
|
|
268
|
+
# as `categories` — there is no category field on AddPost itself.
|
|
269
|
+
#
|
|
270
|
+
# A person is `user:<accountId>`: posts and post comments open the
|
|
271
|
+
# composer with sourceType POST, whose mentionItemSyntax is
|
|
272
|
+
# `<type>:<id>` (:75-78), and a captured AddPost / AddPostComment from the
|
|
273
|
+
# web feed (2026-10-12) carries exactly `user:<id> `. The server turns that
|
|
274
|
+
# into the stored `[aid]<id>[/aid]` marker *and* notifies the person.
|
|
275
|
+
# Sending `[aid]…[/aid]` directly renders as a mention but notifies nobody,
|
|
276
|
+
# so callers that learned the stored form are rewritten — the post editor
|
|
277
|
+
# does the same when it loads a post back (EditPostDialog.jsx:94).
|
|
271
278
|
_TOPIC_RE = re.compile(r"[##]([^##\n]+?)[##]")
|
|
272
|
-
_MENTION_RE = re.compile(r"
|
|
279
|
+
_MENTION_RE = re.compile(r"(?<![0-9A-Za-z_])user:([0-9A-Za-z-]+)")
|
|
280
|
+
_STORED_MENTION_RE = re.compile(r"\[aid\]\s*([0-9A-Za-z-]+)\s*\[/aid\]")
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
def mention_syntax(message: str) -> str:
|
|
284
|
+
"""Rewrite stored-form ``[aid]<id>[/aid]`` mentions to ``user:<id>``.
|
|
285
|
+
|
|
286
|
+
A space follows each rewritten mention unless whitespace already does,
|
|
287
|
+
matching the composer, which leaves one after the picked name."""
|
|
288
|
+
text = message or ""
|
|
289
|
+
|
|
290
|
+
def _sub(m: "re.Match[str]") -> str:
|
|
291
|
+
follow = text[m.end():m.end() + 1]
|
|
292
|
+
return f"user:{m.group(1)}" + ("" if not follow or follow.isspace() else " ")
|
|
293
|
+
|
|
294
|
+
return _STORED_MENTION_RE.sub(_sub, text)
|
|
273
295
|
|
|
274
296
|
|
|
275
297
|
def extract_topics(message: str) -> list[str]:
|
|
@@ -283,11 +305,11 @@ def extract_topics(message: str) -> list[str]:
|
|
|
283
305
|
|
|
284
306
|
|
|
285
307
|
def extract_mentions(message: str) -> list[str]:
|
|
286
|
-
"""Account ids
|
|
308
|
+
"""Account ids mentioned in a post body (``user:<id>``, or the stored
|
|
309
|
+
``[aid]<id>[/aid]`` form), in order, unique."""
|
|
287
310
|
seen: list[str] = []
|
|
288
|
-
for account_id in _MENTION_RE.findall(message
|
|
289
|
-
account_id
|
|
290
|
-
if account_id and account_id not in seen:
|
|
311
|
+
for account_id in _MENTION_RE.findall(mention_syntax(message)):
|
|
312
|
+
if account_id not in seen:
|
|
291
313
|
seen.append(account_id)
|
|
292
314
|
return seen
|
|
293
315
|
|
|
@@ -363,7 +385,7 @@ def add_post(
|
|
|
363
385
|
data: dict[str, Any] = {
|
|
364
386
|
"projectId": project_id,
|
|
365
387
|
"postType": post_type,
|
|
366
|
-
"postMsg": message,
|
|
388
|
+
"postMsg": mention_syntax(message),
|
|
367
389
|
"scope": scope,
|
|
368
390
|
}
|
|
369
391
|
if attachments:
|
|
@@ -384,7 +406,7 @@ def edit_post(
|
|
|
384
406
|
doesn't have the previous text we omit it (the server accepts
|
|
385
407
|
either shape, but the frontend always sends the old text).
|
|
386
408
|
"""
|
|
387
|
-
data: dict[str, Any] = {"postId": post_id, "postMsg": message}
|
|
409
|
+
data: dict[str, Any] = {"postId": post_id, "postMsg": mention_syntax(message)}
|
|
388
410
|
if old_message:
|
|
389
411
|
data["oldPostMsg"] = old_message
|
|
390
412
|
return _require_post_success(
|
|
@@ -413,7 +435,7 @@ def add_comment(
|
|
|
413
435
|
string form as on a post (MDPublic src/pages/feed/components/post/
|
|
414
436
|
comment/postCommentInput.jsx:181-192; pd-openweb identical).
|
|
415
437
|
"""
|
|
416
|
-
data: dict[str, Any] = {"postID": post_id, "message": message}
|
|
438
|
+
data: dict[str, Any] = {"postID": post_id, "message": mention_syntax(message)}
|
|
417
439
|
if reply_id:
|
|
418
440
|
data["replyID"] = reply_id
|
|
419
441
|
if reply_account_id:
|
|
@@ -92,19 +92,20 @@ remove it too, recall that message with
|
|
|
92
92
|
minutes of sending; a group admin can recall a member's message with no limit).
|
|
93
93
|
|
|
94
94
|
## 3. Categories and mentions in the body
|
|
95
|
-
<!-- hook: #name# in the body sets the post's category;
|
|
95
|
+
<!-- hook: #name# in the body sets the post's category; user:<accountId> mentions and notifies a person; --dry-run previews both. -->
|
|
96
96
|
<!-- alias: tags -->
|
|
97
97
|
|
|
98
98
|
There is no category option: **the category comes from the body.** Writing
|
|
99
99
|
`#name#` (for example `#今日工作#`) files the post under the category of that
|
|
100
100
|
name, creating it if it is new. List existing ones with `hap post topics`.
|
|
101
101
|
|
|
102
|
-
To mention someone, write `
|
|
103
|
-
go
|
|
102
|
+
To mention someone, write `user:<accountId>` followed by a space where the
|
|
103
|
+
`@name` should go — the person is notified. The same works in
|
|
104
|
+
`hap post comment`. Get the id from the person's name first:
|
|
104
105
|
|
|
105
106
|
```bash
|
|
106
107
|
hap contact resolve 刘禹 # candidates[].id is the accountId
|
|
107
|
-
hap post create -m "#今日工作# 今天和
|
|
108
|
+
hap post create -m "#今日工作# 今天和 user:<accountId> 对齐了方案" --dry-run
|
|
108
109
|
```
|
|
109
110
|
|
|
110
111
|
A published post's audience cannot be changed, so check with `--dry-run`
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
"zh-Hans": "发动态与发布范围"
|
|
52
52
|
},
|
|
53
53
|
"summary": {
|
|
54
|
-
"en": "Audience decides who can see a post, and you cannot read it back off an existing one; #name# in the body sets the category,
|
|
55
|
-
"zh-Hans": "发布范围决定谁能看到,且无法从旧动态读出来;正文 #名称# 决定分类,
|
|
54
|
+
"en": "Audience decides who can see a post, and you cannot read it back off an existing one; #name# in the body sets the category, user:<accountId> notifies a person.",
|
|
55
|
+
"zh-Hans": "发布范围决定谁能看到,且无法从旧动态读出来;正文 #名称# 决定分类,user:<accountId> 提及并通知某人。"
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -80,17 +80,18 @@ hap post create -m "内容" --to-group 9ccde712-xxxx --card-to-group 7f694ec7-xx
|
|
|
80
80
|
撤回那条卡片消息(自己的消息限发送后 5 分钟内,群管理员撤回他人消息不限时)。
|
|
81
81
|
|
|
82
82
|
## 3. 正文里的分类与 @提及
|
|
83
|
-
<!-- hook: 正文 #名称# 定分类,
|
|
83
|
+
<!-- hook: 正文 #名称# 定分类,user:id 提及并通知某人,--dry-run 可预览 -->
|
|
84
84
|
<!-- alias: tags -->
|
|
85
85
|
|
|
86
86
|
没有设置分类的选项:**分类由正文决定。** 正文里写 `#名称#`(例如 `#今日工作#`),
|
|
87
87
|
动态就会归到同名分类下,分类不存在时会自动新建。已有分类用 `hap post topics` 查。
|
|
88
88
|
|
|
89
|
-
要 @ 某人,在想出现「@姓名」的位置写 `
|
|
89
|
+
要 @ 某人,在想出现「@姓名」的位置写 `user:<accountId>`,后面跟一个空格,对方会收到提醒。
|
|
90
|
+
`hap post comment` 里写法相同。先用姓名查出 id:
|
|
90
91
|
|
|
91
92
|
```bash
|
|
92
93
|
hap contact resolve 刘禹 # candidates[].id 就是 accountId
|
|
93
|
-
hap post create -m "#今日工作# 今天和
|
|
94
|
+
hap post create -m "#今日工作# 今天和 user:<accountId> 对齐了方案" --dry-run
|
|
94
95
|
```
|
|
95
96
|
|
|
96
97
|
动态发出后范围无法再改,所以先用 `--dry-run` 检查:它会列出分类,以及每个
|
|
@@ -4468,8 +4468,8 @@
|
|
|
4468
4468
|
"zh-Hans": "以 JSON 格式输出"
|
|
4469
4469
|
},
|
|
4470
4470
|
"post comment": {
|
|
4471
|
-
"en": "Add a comment to a post, optionally with files attached.",
|
|
4472
|
-
"zh-Hans": "
|
|
4471
|
+
"en": "Add a comment to a post, optionally with files attached.\n\nMention someone with user:<accountId> followed by a space; they are\nnotified. Get the id with `hap contact resolve <name>`.",
|
|
4472
|
+
"zh-Hans": "为动态添加评论,可同时附带文件。\n\n要 @ 某人,写 user:<accountId> 并在后面跟一个空格,对方会收到提醒。用 `hap contact resolve <姓名>` 查 id。"
|
|
4473
4473
|
},
|
|
4474
4474
|
"post comment --file": {
|
|
4475
4475
|
"en": "Attach a file: a local path or an http(s) address. Repeat for several. Videos, pictures and documents all work.",
|
|
@@ -4512,8 +4512,8 @@
|
|
|
4512
4512
|
"zh-Hans": "以 JSON 格式输出"
|
|
4513
4513
|
},
|
|
4514
4514
|
"post create": {
|
|
4515
|
-
"en": "Create a new post in the given organization.\n\nAudience is set with --to-group / --to-org and defaults to everyone in\n--org-id when neither is given. Who can see a post is covered in\n`hap guide post audience`; the group-chat card is `hap guide post card`.\nFiles given with --file are uploaded and attached to the post.\n\nIn the message, #name# files the post under the category (topic) of\nthat name, and
|
|
4516
|
-
"zh-Hans": "在指定组织中发布一条新动态。\n\n发布范围用 --to-group / --to-org 指定,都不给时默认发给 --org-id 组织的全体同事。谁能看到动态见 `hap guide post audience`;群聊卡片见 `hap guide post card`。用 --file 指定的文件会上传并附加到动态上。\n\n正文里写 #名称# 会把动态归到同名分类(话题)下,写
|
|
4515
|
+
"en": "Create a new post in the given organization.\n\nAudience is set with --to-group / --to-org and defaults to everyone in\n--org-id when neither is given. Who can see a post is covered in\n`hap guide post audience`; the group-chat card is `hap guide post card`.\nFiles given with --file are uploaded and attached to the post.\n\nIn the message, #name# files the post under the category (topic) of\nthat name, and user:<accountId> followed by a space mentions and\nnotifies a person — get the id with `hap contact resolve <name>`. --dry-run lists both, with the\nmentioned names, before anything is published. Details in\n`hap guide post tags`.",
|
|
4516
|
+
"zh-Hans": "在指定组织中发布一条新动态。\n\n发布范围用 --to-group / --to-org 指定,都不给时默认发给 --org-id 组织的全体同事。谁能看到动态见 `hap guide post audience`;群聊卡片见 `hap guide post card`。用 --file 指定的文件会上传并附加到动态上。\n\n正文里写 #名称# 会把动态归到同名分类(话题)下,写 user:<accountId> 并在后面跟一个空格会提及并提醒某人——用 `hap contact resolve <姓名>` 查 id。--dry-run 会在发布前列出这两项以及被提及人的姓名。详见 `hap guide post tags`。"
|
|
4517
4517
|
},
|
|
4518
4518
|
"post create --card-to-group": {
|
|
4519
4519
|
"en": "After publishing, also send a card linking to the post into this group chat (repeatable). This is a chat message and does not change who can see the post.",
|
|
@@ -21,9 +21,52 @@ class TestBodyMarkers:
|
|
|
21
21
|
assert post_mod.extract_topics("plain text") == []
|
|
22
22
|
|
|
23
23
|
def test_mentions(self):
|
|
24
|
-
msg = "hi
|
|
24
|
+
msg = "hi user:a1 and [aid]b2[/aid] and user:a1 "
|
|
25
25
|
assert post_mod.extract_mentions(msg) == ["a1", "b2"]
|
|
26
26
|
|
|
27
|
+
def test_mention_needs_a_word_boundary(self):
|
|
28
|
+
assert post_mod.extract_mentions("superuser:x1") == []
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class TestMentionNotifies:
|
|
32
|
+
"""The web feed sends ``user:<id>`` for a mention; the server turns it
|
|
33
|
+
into the stored ``[aid]`` marker and notifies the person. A raw
|
|
34
|
+
``[aid]…[/aid]`` is stored as-is and notifies nobody."""
|
|
35
|
+
|
|
36
|
+
AID = "a62d4f33-5ea5-4b35-91b3-0e2dd395f7d1"
|
|
37
|
+
|
|
38
|
+
def test_stored_form_is_rewritten(self):
|
|
39
|
+
assert post_mod.mention_syntax(f"hi [aid]{self.AID}[/aid]你好") == \
|
|
40
|
+
f"hi user:{self.AID} 你好"
|
|
41
|
+
assert post_mod.mention_syntax(f"[aid]{self.AID}[/aid] ok") == \
|
|
42
|
+
f"user:{self.AID} ok"
|
|
43
|
+
assert post_mod.mention_syntax(f"end [aid]{self.AID}[/aid]") == \
|
|
44
|
+
f"end user:{self.AID}"
|
|
45
|
+
|
|
46
|
+
def test_user_form_left_alone(self):
|
|
47
|
+
msg = f"这是示例\nuser:{self.AID} 我at了小文"
|
|
48
|
+
assert post_mod.mention_syntax(msg) == msg
|
|
49
|
+
|
|
50
|
+
def test_add_post_sends_user_form(self):
|
|
51
|
+
session = MagicMock()
|
|
52
|
+
post_mod.add_post(session, "org1", f"[aid]{self.AID}[/aid] 你好")
|
|
53
|
+
body = session.api_call.call_args[0][2]
|
|
54
|
+
assert body["postMsg"] == f"user:{self.AID} 你好"
|
|
55
|
+
|
|
56
|
+
def test_add_comment_sends_user_form(self):
|
|
57
|
+
session = MagicMock()
|
|
58
|
+
session.api_call.return_value = {"code": 1}
|
|
59
|
+
with patch.object(post_mod, "_require_post_success", side_effect=lambda r, **k: r):
|
|
60
|
+
post_mod.add_comment(session, "p1", f"[aid]{self.AID}[/aid] 收到了吗")
|
|
61
|
+
body = session.api_call.call_args[0][2]
|
|
62
|
+
assert body["message"] == f"user:{self.AID} 收到了吗"
|
|
63
|
+
|
|
64
|
+
def test_edit_post_sends_user_form(self):
|
|
65
|
+
session = MagicMock()
|
|
66
|
+
with patch.object(post_mod, "_require_post_success", side_effect=lambda r, **k: r):
|
|
67
|
+
post_mod.edit_post(session, "p1", f"[aid]{self.AID}[/aid] x")
|
|
68
|
+
assert session.api_call.call_args[0][2]["postMsg"] == f"user:{self.AID} x"
|
|
69
|
+
|
|
27
70
|
def test_resolve_accounts_sends_org_and_maps_names(self):
|
|
28
71
|
session = MagicMock()
|
|
29
72
|
session.api_call.return_value = {"list": [{"accountId": "a1", "fullname": "刘禹"}]}
|
|
@@ -50,7 +93,7 @@ class TestDryRunPreview:
|
|
|
50
93
|
patch("hap_cli.core.post.resolve_accounts",
|
|
51
94
|
return_value={"a1": "刘禹"}):
|
|
52
95
|
result = CliRunner().invoke(cli, [
|
|
53
|
-
"post", "create", "-m", "
|
|
96
|
+
"post", "create", "-m", "user:a1 [aid]zz[/aid]", "--dry-run"])
|
|
54
97
|
assert result.exit_code == 0, result.output
|
|
55
98
|
assert "Mentions: 刘禹 (a1)" in result.output
|
|
56
99
|
assert "Warning" in result.output and "zz" in result.output
|
|
@@ -58,9 +101,14 @@ class TestDryRunPreview:
|
|
|
58
101
|
def test_help_explains_category_and_mention_syntax(self):
|
|
59
102
|
result = CliRunner().invoke(cli, ["post", "create", "--help"])
|
|
60
103
|
text = " ".join(result.output.split())
|
|
61
|
-
assert "#name#" in text and "
|
|
104
|
+
assert "#name#" in text and "user:<accountId>" in text
|
|
105
|
+
assert "[aid]" not in text
|
|
62
106
|
assert "hap contact resolve" in text
|
|
63
107
|
|
|
108
|
+
def test_comment_help_explains_mentions(self):
|
|
109
|
+
result = CliRunner().invoke(cli, ["post", "comment", "--help"])
|
|
110
|
+
assert "user:<accountId>" in " ".join(result.output.split())
|
|
111
|
+
|
|
64
112
|
|
|
65
113
|
class TestUploadProgress:
|
|
66
114
|
def test_start_and_done_per_file(self, tmp_path):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|