howler-api 4.0.0.dev1185__tar.gz → 4.0.0.dev1190__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-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/PKG-INFO +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/add_to_bundle.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/add_to_case.py +2 -2
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/remove_from_bundle.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/socket.py +5 -5
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/analytic.py +2 -2
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v2/case.py +2 -2
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v2/ingest.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v2/search.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/correlation.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/mixins.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/bundle_compat_service.py +6 -6
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/case_service.py +8 -8
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/comms_service.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/correlation_service.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/docs_service.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/search_service.py +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/pyproject.toml +1 -1
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/add_label.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/change_field.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/demote.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/example_plugin.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/prioritization.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/promote.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/remove_label.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/actions/transition.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/base.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/action.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/auth.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/clue.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/configs.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/dossier.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/help.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/hit.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/notebook.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/overview.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/search.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/template.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/tool.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/user.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/utils/etag.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/utils/params.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v1/view.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v2/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/api/v2/fuzzy.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/app.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/classification.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/classification.yml +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/exceptions.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/loader.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/logging/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/logging/audit.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/logging/format.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/net.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/net_static.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/random_user.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/common/swagger.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/config.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/action_queue_worker.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/retention.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/view_cleanup.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/bulk.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/collection.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/constants.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/exceptions.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/howler_store.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/migrations/fix_process.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/operations.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/schemas.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/store.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/support/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/support/build.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/support/schemas.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/datastore/types.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/error.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/generate_mitre.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/generate_sigma_rules.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/generate_tlds.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/reindex_data.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/external/wipe_databases.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/gunicorn_config.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/healthz.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/azure.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/discover.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/hit.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/oauth.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/search.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/workflow.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/helper/ws.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/base.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/charter.txt +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/constants.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/helper.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/howler_enum.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/action.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/analytic.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/assemblyline.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/aws.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/azure.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/case.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/cbs.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/clue.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/config.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/dossier.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/agent.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/autonomous_system.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/client.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/cloud.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/code_signature.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/container.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/dns.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/egress.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/elf.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/email.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/error.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/event.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/faas.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/file.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/geo.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/group.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/hash.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/host.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/http.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/ingress.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/interface.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/network.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/observer.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/organization.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/os.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/pe.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/process.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/registry.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/related.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/rule.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/server.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/threat.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/tls.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/url.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/user.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/user_agent.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/vulnerability.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/event.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/gcp.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/hit.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/howler_data.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/lead.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/localized_label.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/overview.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/pivot.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/record.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/template.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/user.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/view.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/random_data.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/randomizer.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/patched.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/plugins/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/plugins/config.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/README.md +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/counters.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/events.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/hash.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/lock.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/queues/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/queues/comms.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/queues/multi.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/queues/named.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/queues/priority.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/set.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/remote/datatypes/user_quota_tracker.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/security/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/security/socket.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/security/utils.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/action_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/analytic_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/auth_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/config_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/dossier_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/event_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/fuzzy_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/hit_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/jwt_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/lucene_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/notebook_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/overview_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/template_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/user_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/viewer_service.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/telemetry.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/__init__.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/annotations.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/chunk.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/compat.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/constants.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/dict_utils.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/isotime.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/list_utils.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/lucene.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/path.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/socket_utils.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/str_utils.py +0 -0
- {howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/utils/uid.py +0 -0
|
@@ -85,7 +85,7 @@ def execute(query: str, bundle_id: Optional[str] = None, user: Optional[User] =
|
|
|
85
85
|
item_parent=folder.id if folder else None,
|
|
86
86
|
)
|
|
87
87
|
added.append(hit.howler.id)
|
|
88
|
-
except Exception:
|
|
88
|
+
except Exception: # pragma: no cover
|
|
89
89
|
skipped.append(hit.howler.id)
|
|
90
90
|
|
|
91
91
|
if skipped:
|
|
@@ -87,9 +87,9 @@ def execute( # noqa: C901
|
|
|
87
87
|
added.append(hit.howler.id)
|
|
88
88
|
except InvalidDataException as e:
|
|
89
89
|
skipped.append(f"{hit.howler.id}: {e}")
|
|
90
|
-
except NotFoundException as e:
|
|
90
|
+
except NotFoundException as e: # pragma: no cover
|
|
91
91
|
skipped.append(f"{hit.howler.id}: {e}")
|
|
92
|
-
except Exception as e:
|
|
92
|
+
except Exception as e: # pragma: no cover
|
|
93
93
|
skipped.append(f"{hit.howler.id}: {e}")
|
|
94
94
|
|
|
95
95
|
if added:
|
|
@@ -55,7 +55,7 @@ def emit(event: str):
|
|
|
55
55
|
@tracer.start_as_current_span(f"{__name__}.get_viewers")
|
|
56
56
|
@socket_api.route("/viewers/<entity_id>", methods=["GET"])
|
|
57
57
|
@api_login(audit=False, required_priv=["R"])
|
|
58
|
-
def get_viewers(entity_id: str, **kwargs):
|
|
58
|
+
def get_viewers(entity_id: str, **kwargs): # pragma: no cover
|
|
59
59
|
"""Get the list of users currently viewing the specified entity
|
|
60
60
|
|
|
61
61
|
Variables:
|
|
@@ -97,11 +97,11 @@ def connect(ws: Server, *args: Any, ws_id: str, **kwargs): # noqa: C901
|
|
|
97
97
|
logger.debug("Sending action: %s", data)
|
|
98
98
|
ws.send(ws_response("action", data))
|
|
99
99
|
|
|
100
|
-
def send_case(data: dict[str, Any]):
|
|
100
|
+
def send_case(data: dict[str, Any]): # pragma: no cover
|
|
101
101
|
logger.debug("Sending case update: %s", data.get("case", {}).get("case_id", "unknown"))
|
|
102
102
|
ws.send(ws_response("cases", data))
|
|
103
103
|
|
|
104
|
-
def send_viewers_update(data: dict[str, Any]):
|
|
104
|
+
def send_viewers_update(data: dict[str, Any]): # pragma: no cover
|
|
105
105
|
logger.debug("Sending viewers update: %s", data.get("id", "unknown"))
|
|
106
106
|
ws.send(ws_response("viewers_update", data))
|
|
107
107
|
|
|
@@ -139,12 +139,12 @@ def connect(ws: Server, *args: Any, ws_id: str, **kwargs): # noqa: C901
|
|
|
139
139
|
)
|
|
140
140
|
logger.debug("%s: Outstanding actions count=%s", ws_id, len(outstanding_actions))
|
|
141
141
|
else:
|
|
142
|
-
logger.debug("%s listening", ws_id)
|
|
142
|
+
logger.debug("%s listening", ws_id) # pragma: no cover
|
|
143
143
|
except Exception as e:
|
|
144
144
|
if isinstance(e, ConnectionClosed):
|
|
145
145
|
raise
|
|
146
146
|
else:
|
|
147
|
-
logger.exception("%s: Exception in connect loop", ws_id)
|
|
147
|
+
logger.exception("%s: Exception in connect loop", ws_id) # pragma: no cover
|
|
148
148
|
finally:
|
|
149
149
|
logger.debug("%s: Deregistering comms listeners", ws_id)
|
|
150
150
|
comms_service.off("hits", send_hit)
|
|
@@ -508,7 +508,7 @@ def set_as_favourite(id: str, user: User | None, **kwargs):
|
|
|
508
508
|
if not existing_analytic:
|
|
509
509
|
return not_found(err="This analytic does not exist")
|
|
510
510
|
|
|
511
|
-
if not user:
|
|
511
|
+
if not user: # pragma: no cover
|
|
512
512
|
return forbidden(err="User was not found.")
|
|
513
513
|
|
|
514
514
|
try:
|
|
@@ -543,7 +543,7 @@ def remove_as_favourite(id: str, user: User | None, **kwargs):
|
|
|
543
543
|
if not storage.analytic.exists(id):
|
|
544
544
|
return not_found(err="This analytic does not exist")
|
|
545
545
|
|
|
546
|
-
if not user:
|
|
546
|
+
if not user: # pragma: no cover
|
|
547
547
|
return forbidden(err="User was not found.")
|
|
548
548
|
|
|
549
549
|
try:
|
|
@@ -56,7 +56,7 @@ def create_case(user: User, **kwargs):
|
|
|
56
56
|
return bad_request(err=str(e))
|
|
57
57
|
except ResourceExists as e:
|
|
58
58
|
return bad_request(err=str(e))
|
|
59
|
-
except HowlerException as e:
|
|
59
|
+
except HowlerException as e: # pragma: no cover
|
|
60
60
|
return bad_request(err=str(e))
|
|
61
61
|
|
|
62
62
|
|
|
@@ -254,7 +254,7 @@ def append_item(id: str, user: User, **kwargs): # noqa: C901
|
|
|
254
254
|
except DataStoreException as e:
|
|
255
255
|
logger.exception("Save Error")
|
|
256
256
|
return internal_error(err=str(e))
|
|
257
|
-
except NotFoundException as e:
|
|
257
|
+
except NotFoundException as e: # pragma: no cover
|
|
258
258
|
return not_found(err=str(e))
|
|
259
259
|
except InvalidDataException as e:
|
|
260
260
|
return bad_request(err=str(e))
|
|
@@ -365,5 +365,5 @@ def update_by_query(indexes: str, **kwargs):
|
|
|
365
365
|
return ok({"success": all(ds[index].update_by_query(query, operations) for index in indexes.split(","))})
|
|
366
366
|
except (HowlerValueError, KeyError, DataStoreException) as e:
|
|
367
367
|
return bad_request(err=str(e))
|
|
368
|
-
except Exception as e:
|
|
368
|
+
except Exception as e: # pragma: no cover
|
|
369
369
|
return internal_error(err=str(e))
|
|
@@ -196,7 +196,7 @@ def explain_query(index, **kwargs):
|
|
|
196
196
|
del explanation["index"]
|
|
197
197
|
|
|
198
198
|
return ok(result)
|
|
199
|
-
except Exception as e:
|
|
199
|
+
except Exception as e: # pragma: no cover
|
|
200
200
|
logger.exception("Exception on query explanation")
|
|
201
201
|
return bad_request(err=f"Exception: {e}")
|
|
202
202
|
|
|
@@ -21,7 +21,7 @@ def setup_job(sched: BaseScheduler):
|
|
|
21
21
|
"""Start the correlation worker thread if correlation is enabled."""
|
|
22
22
|
global _thread
|
|
23
23
|
|
|
24
|
-
if not config.system.correlation.enabled:
|
|
24
|
+
if not config.system.correlation.enabled: # pragma: no cover
|
|
25
25
|
logger.info("Correlation worker disabled by configuration")
|
|
26
26
|
return
|
|
27
27
|
|
|
@@ -52,7 +52,7 @@ class _ObjectsDescriptor(Generic[ModelType]):
|
|
|
52
52
|
f"Use '{type(obj).__name__}.store' instead."
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
-
if objtype is None:
|
|
55
|
+
if objtype is None: # pragma: no cover
|
|
56
56
|
raise HowlerRuntimeError("Cannot resolve owner class for 'store' descriptor.")
|
|
57
57
|
|
|
58
58
|
index_name = objtype.__name__.lower()
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/bundle_compat_service.py
RENAMED
|
@@ -126,14 +126,14 @@ def create_bundle(
|
|
|
126
126
|
item_name=f"{child_hit.howler.analytic} ({child_hit.howler.id})",
|
|
127
127
|
item_parent=folder.id if folder else None,
|
|
128
128
|
)
|
|
129
|
-
except (InvalidDataException, NotFoundException, DataStoreException) as exc:
|
|
129
|
+
except (InvalidDataException, NotFoundException, DataStoreException) as exc: # pragma: no cover
|
|
130
130
|
logger.warning("Could not add child hit %s to case: %s", child_id, exc)
|
|
131
131
|
|
|
132
132
|
datastore().hit.commit()
|
|
133
133
|
datastore().case.commit()
|
|
134
134
|
|
|
135
135
|
updated_case: Case | None = datastore().case.get(case.case_id)
|
|
136
|
-
if updated_case is None:
|
|
136
|
+
if updated_case is None: # pragma: no cover
|
|
137
137
|
raise NotFoundException(f"Case {case.case_id} disappeared after creation")
|
|
138
138
|
|
|
139
139
|
return synthesize_bundle_response(updated_case, odm, warnings=warnings)
|
|
@@ -176,7 +176,7 @@ def add_to_bundle(
|
|
|
176
176
|
|
|
177
177
|
# Check for duplicates and nested bundles before modifying
|
|
178
178
|
current_case: Case | None = datastore().case.get(case_id)
|
|
179
|
-
if current_case is None:
|
|
179
|
+
if current_case is None: # pragma: no cover
|
|
180
180
|
raise NotFoundException(f"Case {case_id} not found")
|
|
181
181
|
|
|
182
182
|
existing_values = {item.value for item in current_case.items}
|
|
@@ -191,7 +191,7 @@ def add_to_bundle(
|
|
|
191
191
|
|
|
192
192
|
for hit_id in hit_ids:
|
|
193
193
|
child_hit = hit_service.get_hit(hit_id, as_odm=True)
|
|
194
|
-
if child_hit is None:
|
|
194
|
+
if child_hit is None: # pragma: no cover
|
|
195
195
|
logger.warning("Hit %s does not exist, skipping", hit_id)
|
|
196
196
|
continue
|
|
197
197
|
|
|
@@ -202,7 +202,7 @@ def add_to_bundle(
|
|
|
202
202
|
)
|
|
203
203
|
|
|
204
204
|
updated_case: Case | None = datastore().case.get(case_id)
|
|
205
|
-
if updated_case is None:
|
|
205
|
+
if updated_case is None: # pragma: no cover
|
|
206
206
|
raise NotFoundException(f"Case {case_id} not found")
|
|
207
207
|
|
|
208
208
|
return synthesize_bundle_response(updated_case, root_hit)
|
|
@@ -248,7 +248,7 @@ def remove_from_bundle(
|
|
|
248
248
|
case_service.remove_case_items(_case, item_ids_to_remove, force=use_force)
|
|
249
249
|
|
|
250
250
|
updated_case: Case | None = datastore().case.get(_case.case_id)
|
|
251
|
-
if updated_case is None:
|
|
251
|
+
if updated_case is None: # pragma: no cover
|
|
252
252
|
raise NotFoundException(f"Case {_case.case_id} not found")
|
|
253
253
|
|
|
254
254
|
return synthesize_bundle_response(updated_case, root_hit)
|
|
@@ -443,7 +443,7 @@ def append_case_item( # noqa: C901
|
|
|
443
443
|
case CaseItemTypes.REFERENCE | CaseItemTypes.MARKDOWN | CaseItemTypes.FOLDER:
|
|
444
444
|
case.items.append(item)
|
|
445
445
|
|
|
446
|
-
if not case.save():
|
|
446
|
+
if not case.save(): # pragma: no cover
|
|
447
447
|
raise DataStoreException(f"Failed to save {case.case_id} with new {item.type} {item.name}")
|
|
448
448
|
|
|
449
449
|
comms_service.emit("cases", {"case": case.as_primitives()})
|
|
@@ -540,7 +540,7 @@ def move_case_item(case: str | Case | None, item_id: str, new_parent: str | None
|
|
|
540
540
|
|
|
541
541
|
item.parent = new_parent
|
|
542
542
|
|
|
543
|
-
if not ds.case.save(case.case_id, case):
|
|
543
|
+
if not ds.case.save(case.case_id, case): # pragma: no cover
|
|
544
544
|
raise DataStoreException("Failed to save case after item move")
|
|
545
545
|
|
|
546
546
|
comms_service.emit("cases", {"case": case.as_primitives()})
|
|
@@ -627,7 +627,7 @@ def remove_case_items(case: str | Case | None, item_ids: list[str], force: bool
|
|
|
627
627
|
|
|
628
628
|
case.items = [item for item in case.items if item.id not in ids_to_remove]
|
|
629
629
|
|
|
630
|
-
if not ds.case.save(case.case_id, case):
|
|
630
|
+
if not ds.case.save(case.case_id, case): # pragma: no cover
|
|
631
631
|
raise DataStoreException("Failed to save case after item removal")
|
|
632
632
|
|
|
633
633
|
for backing_obj in backing_objs:
|
|
@@ -677,7 +677,7 @@ def append_hit(case: Case, item: CaseItem) -> Case:
|
|
|
677
677
|
|
|
678
678
|
case.items.append(item)
|
|
679
679
|
|
|
680
|
-
if not ds.case.save(case.case_id, case):
|
|
680
|
+
if not ds.case.save(case.case_id, case): # pragma: no cover
|
|
681
681
|
raise DataStoreException(f"Failed to save {case.case_id} with new item {item.value}")
|
|
682
682
|
|
|
683
683
|
_add_backreference(hit, case.case_id)
|
|
@@ -718,7 +718,7 @@ def append_event(case: Case, item: CaseItem) -> Case:
|
|
|
718
718
|
|
|
719
719
|
case.items.append(item)
|
|
720
720
|
|
|
721
|
-
if not case.save():
|
|
721
|
+
if not case.save(): # pragma: no cover
|
|
722
722
|
raise DataStoreException(f"Failed to save {case.case_id} with new item {item.value}")
|
|
723
723
|
|
|
724
724
|
_add_backreference(event, case.case_id)
|
|
@@ -760,7 +760,7 @@ def append_case(case: Case, item: CaseItem) -> Case:
|
|
|
760
760
|
|
|
761
761
|
case.items.append(item)
|
|
762
762
|
|
|
763
|
-
if not case.save():
|
|
763
|
+
if not case.save(): # pragma: no cover
|
|
764
764
|
raise DataStoreException(f"Failed to save {case.case_id} with new item {item.name}")
|
|
765
765
|
|
|
766
766
|
comms_service.emit("cases", {"case": case.as_primitives()})
|
|
@@ -873,7 +873,7 @@ def remove_backreference(backing_obj: Hit | Event | None, case_id: str):
|
|
|
873
873
|
if backing_obj is None:
|
|
874
874
|
raise InvalidDataException("Cannot remove back reference on a nonexisting object")
|
|
875
875
|
|
|
876
|
-
if not case_id:
|
|
876
|
+
if not case_id: # pragma: no cover
|
|
877
877
|
raise InvalidDataException("Missing back reference case_id")
|
|
878
878
|
|
|
879
879
|
if case_id in backing_obj.howler.related:
|
|
@@ -919,7 +919,7 @@ def rename_case_item(case_id: str, item_id: str, new_name: str) -> Case:
|
|
|
919
919
|
if item.type == CaseItemTypes.FOLDER:
|
|
920
920
|
item.value = item.name
|
|
921
921
|
|
|
922
|
-
if not case.save():
|
|
922
|
+
if not case.save(): # pragma: no cover
|
|
923
923
|
raise DataStoreException("Failed to save case after item rename")
|
|
924
924
|
|
|
925
925
|
comms_service.emit("cases", {"case": case.as_primitives()})
|
|
@@ -97,7 +97,7 @@ def emit(event: str, data: Any):
|
|
|
97
97
|
# Always publish to Redis so other pods receive the event.
|
|
98
98
|
try:
|
|
99
99
|
_get_sender().send(event, {"__event__": event, "__payload__": data})
|
|
100
|
-
except Exception:
|
|
100
|
+
except Exception: # pragma: no cover
|
|
101
101
|
logger.exception("Failed to publish event %s to Redis", event)
|
|
102
102
|
|
|
103
103
|
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/services/correlation_service.py
RENAMED
|
@@ -172,7 +172,7 @@ def process_batch(record_ids: list[str]) -> int: # noqa: C901
|
|
|
172
172
|
logger.debug("Record %s already exists in case %s, skipping", record_id, case_id)
|
|
173
173
|
except NotFoundException:
|
|
174
174
|
logger.warning("Case %s or record %s not found during correlation", case_id, record_id)
|
|
175
|
-
except Exception:
|
|
175
|
+
except Exception: # pragma: no cover
|
|
176
176
|
logger.exception("Failed to add record %s to case %s", record_id, case_id)
|
|
177
177
|
|
|
178
178
|
return added
|
|
@@ -56,7 +56,7 @@ def build_route_docs(version: str, user_types: list[str]):
|
|
|
56
56
|
if blueprint not in api_blueprints:
|
|
57
57
|
try:
|
|
58
58
|
doc = current_app.blueprints[rule.endpoint[: rule.endpoint.rindex(".")]]._doc # type: ignore[attr-defined]
|
|
59
|
-
except Exception:
|
|
59
|
+
except Exception: # pragma: no cover
|
|
60
60
|
doc = ""
|
|
61
61
|
|
|
62
62
|
api_blueprints[blueprint] = doc
|
|
@@ -220,7 +220,7 @@ def search( # noqa: C901
|
|
|
220
220
|
if next_deep_paging_id is not None and len(response["items"]) < rows:
|
|
221
221
|
try:
|
|
222
222
|
client.clear_scroll(scroll_id=next_deep_paging_id)
|
|
223
|
-
except elasticsearch.exceptions.NotFoundError:
|
|
223
|
+
except elasticsearch.exceptions.NotFoundError: # pragma: no cover
|
|
224
224
|
pass
|
|
225
225
|
next_deep_paging_id = None
|
|
226
226
|
|
|
@@ -152,7 +152,7 @@ suppress-none-returning = true
|
|
|
152
152
|
[tool.poetry]
|
|
153
153
|
package-mode = true
|
|
154
154
|
name = "howler-api"
|
|
155
|
-
version = "4.0.0.
|
|
155
|
+
version = "4.0.0.dev1190"
|
|
156
156
|
description = "Howler - API server"
|
|
157
157
|
authors = [
|
|
158
158
|
"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
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/cronjobs/action_queue_worker.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
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/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
|
|
File without changes
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{howler_api-4.0.0.dev1185 → howler_api-4.0.0.dev1190}/howler/odm/models/ecs/autonomous_system.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|