howler-api 2.10.0.dev155__tar.gz → 2.10.0.dev160__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.
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/PKG-INFO +1 -1
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/base.py +3 -9
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/hit_service.py +2 -2
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/dict_utils.py +18 -23
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/pyproject.toml +1 -1
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/README.md +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/add_label.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/add_to_bundle.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/change_field.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/demote.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/example_plugin.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/prioritization.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/promote.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/remove_from_bundle.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/remove_label.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/actions/transition.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/base.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/socket.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/action.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/analytic.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/auth.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/borealis.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/configs.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/dossier.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/help.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/hit.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/notebook.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/overview.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/search.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/template.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/tool.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/user.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/api/v1/view.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/app.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/README.md +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/classification.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/classification.yml +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/exceptions.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/hexdump.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/iprange.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/loader.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/logging/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/logging/audit.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/logging/format.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/net.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/net_static.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/random_user.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/common/swagger.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/config.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/cronjobs/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/cronjobs/retention.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/cronjobs/rules.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/README.md +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/bulk.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/collection.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/constants.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/exceptions.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/howler_store.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/operations.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/schemas.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/store.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/support/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/support/build.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/support/schemas.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/types.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/error.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/generate_mitre.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/generate_tlds.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/reindex_data.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/wipe_databases.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/gunicorn_config.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/healthz.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/azure.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/discover.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/hit.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/oauth.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/search.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/workflow.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/helper/ws.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/README.md +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/charter.txt +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/helper.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/howler_enum.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/action.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/analytic.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/aws.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/azure.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/cbs.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/config.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/dossier.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/gcp.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/hit.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/howler_data.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/lead.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/localized_label.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/overview.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/pivot.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/template.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/user.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/view.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/random_data.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/randomizer.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/patched.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/plugins/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/plugins/config.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/README.md +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/events.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/set.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/security/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/security/socket.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/security/utils.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/action_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/analytic_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/auth_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/config_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/dossier_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/event_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/jwt_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/lucene_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/notebook_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/services/user_service.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/__init__.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/annotations.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/chunk.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/isotime.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/list_utils.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/lucene.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/path.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/socket_utils.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/str_utils.py +0 -0
- {howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/utils/uid.py +0 -0
|
@@ -20,7 +20,6 @@ from enum import Enum as PyEnum
|
|
|
20
20
|
from enum import EnumMeta
|
|
21
21
|
from typing import Any as _Any
|
|
22
22
|
from typing import Dict, Tuple, Union
|
|
23
|
-
from typing import Mapping as _Mapping
|
|
24
23
|
from venv import logger
|
|
25
24
|
|
|
26
25
|
import arrow
|
|
@@ -28,12 +27,7 @@ import validators
|
|
|
28
27
|
from dateutil.tz import tzutc
|
|
29
28
|
|
|
30
29
|
from howler.common import loader
|
|
31
|
-
from howler.common.exceptions import
|
|
32
|
-
HowlerKeyError,
|
|
33
|
-
HowlerNotImplementedError,
|
|
34
|
-
HowlerTypeError,
|
|
35
|
-
HowlerValueError,
|
|
36
|
-
)
|
|
30
|
+
from howler.common.exceptions import HowlerKeyError, HowlerNotImplementedError, HowlerTypeError, HowlerValueError
|
|
37
31
|
from howler.common.net import is_valid_domain, is_valid_ip
|
|
38
32
|
from howler.utils.dict_utils import flatten, recursive_update
|
|
39
33
|
from howler.utils.isotime import now_as_iso
|
|
@@ -1050,7 +1044,7 @@ class Optional(_Field):
|
|
|
1050
1044
|
|
|
1051
1045
|
class Model:
|
|
1052
1046
|
@classmethod
|
|
1053
|
-
def fields(cls, skip_mappings=False) ->
|
|
1047
|
+
def fields(cls, skip_mappings=False) -> dict[str, _Field]:
|
|
1054
1048
|
"""Describe the elements of the model.
|
|
1055
1049
|
|
|
1056
1050
|
For compound fields return the field object.
|
|
@@ -1122,7 +1116,7 @@ class Model:
|
|
|
1122
1116
|
return out
|
|
1123
1117
|
|
|
1124
1118
|
@classmethod
|
|
1125
|
-
def flat_fields(cls, show_compound=False, skip_mappings=False) ->
|
|
1119
|
+
def flat_fields(cls, show_compound=False, skip_mappings=False) -> dict[str, _Field]:
|
|
1126
1120
|
"""Describe the elements of the model.
|
|
1127
1121
|
|
|
1128
1122
|
Recurse into compound fields, concatenating the names with '.' separators.
|
|
@@ -25,7 +25,6 @@ from howler.helper.hit import (
|
|
|
25
25
|
vote_hit,
|
|
26
26
|
)
|
|
27
27
|
from howler.helper.workflow import Transition, Workflow
|
|
28
|
-
from howler.odm.base import BANNED_FIELDS
|
|
29
28
|
from howler.odm.models.ecs.event import Event
|
|
30
29
|
from howler.odm.models.hit import Hit
|
|
31
30
|
from howler.odm.models.howler_data import HitOperationType, HitStatus, HitStatusTransition, Log
|
|
@@ -296,6 +295,7 @@ def convert_hit(data: dict[str, Any], unique: bool, ignore_extra_values: bool =
|
|
|
296
295
|
if "bundle_size" not in data and "howler.hits" in data:
|
|
297
296
|
data["howler.bundle_size"] = len(data["howler.hits"])
|
|
298
297
|
|
|
298
|
+
# TODO: This is a really strange double-validation check we should look to refactor
|
|
299
299
|
try:
|
|
300
300
|
odm = Hit(data, ignore_extra_values=ignore_extra_values)
|
|
301
301
|
except TypeError as e:
|
|
@@ -303,7 +303,7 @@ def convert_hit(data: dict[str, Any], unique: bool, ignore_extra_values: bool =
|
|
|
303
303
|
|
|
304
304
|
# Check for deprecated field and unused fields
|
|
305
305
|
odm_flatten = odm.flat_fields(show_compound=True)
|
|
306
|
-
unused_keys = extra_keys(
|
|
306
|
+
unused_keys = extra_keys(Hit, data)
|
|
307
307
|
|
|
308
308
|
if unused_keys and not ignore_extra_values:
|
|
309
309
|
raise HowlerValueError(f"Hit was created with invalid parameters: {', '.join(unused_keys)}")
|
|
@@ -134,32 +134,27 @@ def unflatten(data: _Mapping) -> _Mapping:
|
|
|
134
134
|
return out
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
def extra_keys(
|
|
137
|
+
def extra_keys(odm: type["Model"], data: _Mapping) -> set[str]:
|
|
138
138
|
"Geta list of extra keys when compared to a list of permitted keys"
|
|
139
|
+
from howler.odm.base import Mapping
|
|
140
|
+
|
|
141
|
+
data = flatten_deep(data)
|
|
142
|
+
|
|
139
143
|
result: set[str] = set()
|
|
140
144
|
for key in data.keys():
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
break
|
|
155
|
-
else:
|
|
156
|
-
result = result | extra_keys(
|
|
157
|
-
entry,
|
|
158
|
-
{sub_key[(len(key) + 1) :] for sub_key in keys if sub_key.startswith(f"{key}.")},
|
|
159
|
-
parent_key=key if not parent_key else f"{parent_key}.{key}",
|
|
160
|
-
)
|
|
161
|
-
elif key not in keys:
|
|
162
|
-
result.add(key if not parent_key else f"{parent_key}.{key}")
|
|
145
|
+
parts = key.split(".")
|
|
146
|
+
|
|
147
|
+
current_odm = odm
|
|
148
|
+
for part in parts:
|
|
149
|
+
sub_fields: dict[str, Any] = current_odm.fields()
|
|
150
|
+
|
|
151
|
+
if part in sub_fields:
|
|
152
|
+
current_odm = sub_fields[part]
|
|
153
|
+
elif isinstance(current_odm, Mapping):
|
|
154
|
+
current_odm = current_odm.child_type
|
|
155
|
+
else:
|
|
156
|
+
result.add(key)
|
|
157
|
+
break
|
|
163
158
|
|
|
164
159
|
return result
|
|
165
160
|
|
|
@@ -148,7 +148,7 @@ suppress-none-returning = true
|
|
|
148
148
|
[tool.poetry]
|
|
149
149
|
package-mode = true
|
|
150
150
|
name = "howler-api"
|
|
151
|
-
version = "2.10.0.
|
|
151
|
+
version = "2.10.0.dev160"
|
|
152
152
|
description = "Howler - API server"
|
|
153
153
|
authors = [
|
|
154
154
|
"Canadian Centre for Cyber Security <howler@cyber.gc.ca>",
|
|
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
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/datastore/migrations/fix_process.py
RENAMED
|
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
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/external/generate_sigma_rules.py
RENAMED
|
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
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/code_signature.py
RENAMED
|
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
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/odm/models/ecs/vulnerability.py
RENAMED
|
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
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/__init__.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/comms.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/multi.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/named.py
RENAMED
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/queues/priority.py
RENAMED
|
File without changes
|
|
File without changes
|
{howler_api-2.10.0.dev155 → howler_api-2.10.0.dev160}/howler/remote/datatypes/user_quota_tracker.py
RENAMED
|
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
|