Add default UUIDv7 generator with tests and docs#238
Conversation
…liance - Introduced a default UUIDv7 generator function returning lowercase hex strings - Ensures millisecond precision and uniqueness across calls - Includes comprehensive unit and BDD tests validating format, version, variant, and uniqueness - Updated design and user guide documentation to reflect new API - Added testing scaffolding and validation steps in ExecPlan - Addresses roadmap item 2.2.1 for correlation ID lifecycle improvements Co-authored-by: terragon-labs[bot] <terragon-labs[bot]@users.noreply.github.com>
Reviewer's GuideIntroduces a centralized default_uuid7_generator() for correlation IDs, with accompanying unit/BDD tests and documentation, anchored by a new ExecPlan document that describes the design, implementation strategy, and validation steps for UUIDv7 generation. Sequence diagram for correlation ID generation via default_uuid7_generatorsequenceDiagram
actor Developer
participant Application
participant CorrelationIdModule
participant StdlibUUID as StdlibUUID_or_ThirdParty
Developer ->> Application: Request new correlation ID
Application ->> CorrelationIdModule: default_uuid7_generator()
CorrelationIdModule ->> StdlibUUID: generate_uuid7()
StdlibUUID -->> CorrelationIdModule: UUIDv7 instance
CorrelationIdModule ->> CorrelationIdModule: normalize to lowercase 32-char hex
CorrelationIdModule -->> Application: correlation_id_string
Application -->> Developer: correlation_id_string
Class diagram for correlation ID generator module and testsclassDiagram
class CorrelationIdModule {
+default_uuid7_generator() str
}
class StdlibUUIDModule {
+uuid7() UUID
}
class UUIDUtilsLibrary {
+uuid7() UUID
}
class TestCorrelationId {
+test_output_length_32()
+test_output_lowercase_hex()
+test_version_nibble_is_7()
+test_variant_bits_rfc4122()
+test_many_calls_unique()
}
class BDDFEatureGenerateUUIDv7 {
+Scenario_generate_default_UUIDv7_correlation_id
+Scenario_multiple_ids_are_unique
}
CorrelationIdModule ..> StdlibUUIDModule : optional_dependency
CorrelationIdModule ..> UUIDUtilsLibrary : fallback_dependency
TestCorrelationId ..> CorrelationIdModule : uses
BDDFEatureGenerateUUIDv7 ..> CorrelationIdModule : uses
Flow diagram for UUIDv7 source selection in default_uuid7_generatorflowchart TD
A[Call default_uuid7_generator] --> B{Stdlib UUIDv7 available on Python runtime}
B -->|Yes| C[Use stdlib uuid_module to generate UUIDv7]
C --> D[Convert UUID to lowercase 32-character hex string without dashes]
D --> E[Return correlation ID string]
B -->|No| F[Use third-party uuid_utils_library to generate UUIDv7]
F --> D
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
- Added `default_uuid7_generator()` returning RFC 4122-compliant UUIDv7 hex strings using `uuid-utils`. - Added unit tests and pytest-bdd scenarios validating format, version, variant, timestamp and uniqueness. - Added new documentation files covering design, roadmap, usage guide, and complexity antipatterns. - Updated pyproject.toml to include `uuid-utils` and `pytest-bdd` dependencies. - Placed new tests under `.github/actions/tests` to align with pytest discovery constraints. This introduces a stable and compliant correlation ID generation utility suitable for middleware and logging purposes. Co-authored-by: terragon-labs[bot] <terragon-labs[bot]@users.noreply.github.com>
Removed extraneous type ignore comment marker to clean up code style. Co-authored-by: terragon-labs[bot] <terragon-labs[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Gates Failed
Prevent hotspot decline
(1 hotspot with Overall Code Complexity)
Enforce advisory code health rules
(2 files with Overall Code Complexity, Excess Number of Function Arguments)
Gates Passed
4 Quality Gates Passed
See analysis details in CodeScene
Reason for failure
| Prevent hotspot decline | Violations | Code Health Impact | |
|---|---|---|---|
| main.py | 1 rule in this hotspot | 8.72 → 8.19 | Suppress |
| Enforce advisory code health rules | Violations | Code Health Impact | |
|---|---|---|---|
| main.py | 1 advisory rule | 8.72 → 8.19 | Suppress |
| test_cross_install.py | 1 advisory rule | 9.39 → 9.10 | Suppress |
Quality Gate Profile: Pay Down Tech Debt
Want more control? Customize Code Health rules or catch issues early with our IDE extension and CLI tool.
Summary
Changes
def default_uuid7_generator() -> str:returning a lowercase 32-character hex UUIDv7 string (no dashes).tests/test_correlation_id.pyvalidating:tests/bdd/(feature files and step definitions) to cover generation scenarios.docs/execplans/2-2-1-default-uui-dv7-generator.mddetailing discovery, tests, implementation, and validation steps.docs/falcon-correlation-id-middleware-design.md,docs/users-guide.md).How it works
Quick usage
Testing plan
Documentation updates
Validation and acceptance
Notes
📎 Task: https://www.terragonlabs.com/task/1e05c78b-7390-47a5-be95-b2db55ce697f