Skip to content

[SPIKE option B] Event oneOf + hydrate missing source to device (INTER-2457) - #224

Closed
JuroUhlar wants to merge 3 commits into
mainfrom
spike/INTER-2457-event-oneof
Closed

JuroUhlar wants to merge 3 commits into
mainfrom
spike/INTER-2457-event-oneof

Conversation

@JuroUhlar

@JuroUhlar JuroUhlar commented Aug 31, 2026

Copy link
Copy Markdown
Contributor
  • Option B spike. Do not merge. Compare with option C: #225.
  • Event stays a oneOf (EventDevice | EventEdge) on actual_instance.
  • Event.from_json hydrates a missing source key to device and deserializes EventDevice. source: edge stays EventEdge. Edge is never rewritten.

Discussion point: hydrate vs flatten

Option B keeps the generated union and patches the discriminator. Callers still use event.actual_instance. Option C (#225) keeps a single Event model (source optional) and adds /edge as EventEdge separately.

Known issue: CI will fail

Existing tests and examples that read event.identification still raise AttributeError. That is the spike.

INTER-2457. Regenerated Event as a oneOf wrapper to show the runtime break. Do not merge.
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

⚠️ Template files and generated files are not in-sync.

Following files do not match corresponding templates:
fingerprint_server_sdk/__init__.py fingerprint_server_sdk/api/fingerprint_api.py fingerprint_server_sdk/api_client.py fingerprint_server_sdk/api_response.py fingerprint_server_sdk/configuration.py fingerprint_server_sdk/event_source.py fingerprint_server_sdk/exceptions.py fingerprint_server_sdk/models/__init__.py fingerprint_server_sdk/models/bot_info.py fingerprint_server_sdk/models/bot_info_category.py fingerprint_server_sdk/models/bot_info_confidence.py fingerprint_server_sdk/models/bot_info_identity.py fingerprint_server_sdk/models/bot_result.py fingerprint_server_sdk/models/browser_details.py fingerprint_server_sdk/models/canvas.py fingerprint_server_sdk/models/edge_request.py fingerprint_server_sdk/models/edge_request_headers_inner.py fingerprint_server_sdk/models/emoji.py fingerprint_server_sdk/models/error.py fingerprint_server_sdk/models/error_code.py fingerprint_server_sdk/models/error_response.py fingerprint_server_sdk/models/event.py fingerprint_server_sdk/models/event_device.py fingerprint_server_sdk/models/event_edge.py fingerprint_server_sdk/models/event_rule_action.py fingerprint_server_sdk/models/event_rule_action_allow.py fingerprint_server_sdk/models/event_rule_action_block.py fingerprint_server_sdk/models/event_search.py fingerprint_server_sdk/models/event_source.py fingerprint_server_sdk/models/event_update.py fingerprint_server_sdk/models/font_preferences.py fingerprint_server_sdk/models/geolocation.py fingerprint_server_sdk/models/geolocation_subdivisions_inner.py fingerprint_server_sdk/models/identification.py fingerprint_server_sdk/models/identification_confidence.py fingerprint_server_sdk/models/incremental_identification_status.py fingerprint_server_sdk/models/integration.py fingerprint_server_sdk/models/integration_subintegration.py fingerprint_server_sdk/models/ip_block_list.py fingerprint_server_sdk/models/ip_info.py fingerprint_server_sdk/models/ip_info_v4.py fingerprint_server_sdk/models/ip_info_v6.py fingerprint_server_sdk/models/labels_inner.py fingerprint_server_sdk/models/plugins_inner.py fingerprint_server_sdk/models/plugins_inner_mime_types_inner.py fingerprint_server_sdk/models/proximity.py fingerprint_server_sdk/models/proxy_confidence.py fingerprint_server_sdk/models/proxy_details.py fingerprint_server_sdk/models/rare_device_percentile_bucket.py fingerprint_server_sdk/models/raw_device_attributes.py fingerprint_server_sdk/models/request_header_modifications.py fingerprint_server_sdk/models/rule_action_header_field.py fingerprint_server_sdk/models/rule_action_type.py fingerprint_server_sdk/models/sdk.py fingerprint_server_sdk/models/search_events_bot.py fingerprint_server_sdk/models/search_events_bot_info.py fingerprint_server_sdk/models/search_events_end_parameter.py fingerprint_server_sdk/models/search_events_incremental_identification_status.py fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py fingerprint_server_sdk/models/search_events_sdk_platform.py fingerprint_server_sdk/models/search_events_source.py fingerprint_server_sdk/models/search_events_start_parameter.py fingerprint_server_sdk/models/search_events_vpn_confidence.py fingerprint_server_sdk/models/supplementary_id_high_recall.py fingerprint_server_sdk/models/tampering_confidence.py fingerprint_server_sdk/models/tampering_details.py fingerprint_server_sdk/models/touch_support.py fingerprint_server_sdk/models/velocity.py fingerprint_server_sdk/models/velocity_data.py fingerprint_server_sdk/models/vpn_confidence.py fingerprint_server_sdk/models/vpn_methods.py fingerprint_server_sdk/models/web_gl_basics.py fingerprint_server_sdk/models/web_gl_extensions.py fingerprint_server_sdk/rest.py fingerprint_server_sdk/sealed.py scripts/event_source.py test/test_unknown_enum_values.py

To fix this warning, make sure template files are up-to-date, and generate files by running the following command:

pip install uv && uv sync --only-group dev && bash ./generate.sh

@JuroUhlar JuroUhlar changed the title [SPIKE] Event oneOf discriminated union (INTER-2457) [SPIKE option B] Event oneOf + hydrate missing source to device (INTER-2457) Sep 6, 2026
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

⚠️ This PR doesn't contain any changesets. If there are user-facing changes, don't forget to run:

pnpm exec changeset

to create a changeset.

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Wrong commit message format detected

We use Semantic Commit Messages in our project.

Warning
Probably you forgot to activate local git hooks.

Run the next command in the project root to activate local hooks:

sh ./install_hooks.sh

More info you can find in job logs

Commitlint Errors

Commit: 0a83a8d `chore: SPIKE Event oneOf discriminated union

INTER-2457. Regenerated Event as a oneOf wrapper to show the runtime break. Do not merge.`
Errors:

  • subject must not be sentence-case, start-case, pascal-case, upper-case

@JuroUhlar
JuroUhlar marked this pull request as draft September 7, 2026 09:05
@JuroUhlar

Copy link
Copy Markdown
Contributor Author

This was a prototype done as part of a spike. Closing now, still usable as a reference during the production implementation.

@JuroUhlar JuroUhlar closed this Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant