planar 0.10.0__py3-none-any.whl → 0.11.0__py3-none-any.whl

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.
Files changed (60) hide show
  1. planar/app.py +18 -6
  2. planar/routers/info.py +79 -36
  3. planar/scaffold_templates/pyproject.toml.j2 +1 -1
  4. planar/testing/fixtures.py +7 -4
  5. {planar-0.10.0.dist-info → planar-0.11.0.dist-info}/METADATA +9 -1
  6. {planar-0.10.0.dist-info → planar-0.11.0.dist-info}/RECORD +8 -60
  7. planar/ai/test_agent_serialization.py +0 -229
  8. planar/ai/test_agent_tool_step_display.py +0 -78
  9. planar/data/test_dataset.py +0 -358
  10. planar/files/storage/test_azure_blob.py +0 -435
  11. planar/files/storage/test_local_directory.py +0 -162
  12. planar/files/storage/test_s3.py +0 -299
  13. planar/files/test_files.py +0 -282
  14. planar/human/test_human.py +0 -385
  15. planar/logging/test_formatter.py +0 -327
  16. planar/modeling/mixins/test_auditable.py +0 -97
  17. planar/modeling/mixins/test_timestamp.py +0 -134
  18. planar/modeling/mixins/test_uuid_primary_key.py +0 -52
  19. planar/routers/test_agents_router.py +0 -174
  20. planar/routers/test_dataset_router.py +0 -429
  21. planar/routers/test_files_router.py +0 -49
  22. planar/routers/test_object_config_router.py +0 -367
  23. planar/routers/test_routes_security.py +0 -168
  24. planar/routers/test_rule_router.py +0 -470
  25. planar/routers/test_workflow_router.py +0 -564
  26. planar/rules/test_data/account_dormancy_management.json +0 -223
  27. planar/rules/test_data/airline_loyalty_points_calculator.json +0 -262
  28. planar/rules/test_data/applicant_risk_assessment.json +0 -435
  29. planar/rules/test_data/booking_fraud_detection.json +0 -407
  30. planar/rules/test_data/cellular_data_rollover_system.json +0 -258
  31. planar/rules/test_data/clinical_trial_eligibility_screener.json +0 -437
  32. planar/rules/test_data/customer_lifetime_value.json +0 -143
  33. planar/rules/test_data/import_duties_calculator.json +0 -289
  34. planar/rules/test_data/insurance_prior_authorization.json +0 -443
  35. planar/rules/test_data/online_check_in_eligibility_system.json +0 -254
  36. planar/rules/test_data/order_consolidation_system.json +0 -375
  37. planar/rules/test_data/portfolio_risk_monitor.json +0 -471
  38. planar/rules/test_data/supply_chain_risk.json +0 -253
  39. planar/rules/test_data/warehouse_cross_docking.json +0 -237
  40. planar/rules/test_rules.py +0 -1494
  41. planar/security/tests/test_auth_middleware.py +0 -162
  42. planar/security/tests/test_authorization_context.py +0 -78
  43. planar/security/tests/test_cedar_basics.py +0 -41
  44. planar/security/tests/test_cedar_policies.py +0 -158
  45. planar/security/tests/test_jwt_principal_context.py +0 -179
  46. planar/test_app.py +0 -142
  47. planar/test_cli.py +0 -394
  48. planar/test_config.py +0 -515
  49. planar/test_object_config.py +0 -527
  50. planar/test_object_registry.py +0 -14
  51. planar/test_sqlalchemy.py +0 -193
  52. planar/test_utils.py +0 -105
  53. planar/testing/test_memory_storage.py +0 -143
  54. planar/workflows/test_concurrency_detection.py +0 -120
  55. planar/workflows/test_lock_timeout.py +0 -140
  56. planar/workflows/test_serialization.py +0 -1203
  57. planar/workflows/test_suspend_deserialization.py +0 -231
  58. planar/workflows/test_workflow.py +0 -2005
  59. {planar-0.10.0.dist-info → planar-0.11.0.dist-info}/WHEEL +0 -0
  60. {planar-0.10.0.dist-info → planar-0.11.0.dist-info}/entry_points.txt +0 -0
@@ -1,437 +0,0 @@
1
- {
2
- "nodes": [
3
- {
4
- "type": "inputNode",
5
- "content": {
6
- "schema": ""
7
- },
8
- "id": "inputNode",
9
- "name": "patient",
10
- "position": {
11
- "x": 110,
12
- "y": 114
13
- }
14
- },
15
- {
16
- "type": "decisionTableNode",
17
- "content": {
18
- "hitPolicy": "first",
19
- "rules": [
20
- {
21
- "_id": "rule1",
22
- "diagnosis": "'breast_cancer', 'lung_cancer', 'colorectal_cancer'",
23
- "diagnosisFlag": "true",
24
- "diagnosisReason": "'Diagnosis matches trial criteria'"
25
- },
26
- {
27
- "_id": "rule2",
28
- "diagnosis": "",
29
- "diagnosisFlag": "false",
30
- "diagnosisReason": "'Diagnosis does not match trial criteria'"
31
- }
32
- ],
33
- "inputs": [
34
- {
35
- "id": "diagnosis",
36
- "name": "Diagnosis",
37
- "field": "patient.diagnosis"
38
- }
39
- ],
40
- "outputs": [
41
- {
42
- "id": "diagnosisFlag",
43
- "name": "DiagnosisFlag",
44
- "field": "eligibility.diagnosis.flag"
45
- },
46
- {
47
- "id": "diagnosisReason",
48
- "name": "DiagnosisReason",
49
- "field": "eligibility.diagnosis.reason"
50
- }
51
- ],
52
- "passThrough": true,
53
- "inputField": null,
54
- "outputPath": null,
55
- "executionMode": "single"
56
- },
57
- "id": "diagnosisEligibility",
58
- "name": "diagnosisEligibility",
59
- "position": {
60
- "x": 430,
61
- "y": -131
62
- }
63
- },
64
- {
65
- "type": "decisionTableNode",
66
- "content": {
67
- "hitPolicy": "first",
68
- "rules": [
69
- {
70
- "_id": "rule1",
71
- "stage": "'I', 'II', 'III'",
72
- "stageFlag": "true",
73
- "stageReason": "'Disease stage matches trial criteria'"
74
- },
75
- {
76
- "_id": "rule2",
77
- "stage": "'IV'",
78
- "stageFlag": "false",
79
- "stageReason": "'Stage IV patients excluded from trial'"
80
- },
81
- {
82
- "_id": "rule3",
83
- "stage": "",
84
- "stageFlag": "false",
85
- "stageReason": "'Unknown or invalid disease stage'"
86
- }
87
- ],
88
- "inputs": [
89
- {
90
- "id": "stage",
91
- "name": "Stage",
92
- "field": "patient.diseaseStage"
93
- }
94
- ],
95
- "outputs": [
96
- {
97
- "id": "stageFlag",
98
- "name": "StageFlag",
99
- "field": "eligibility.stage.flag"
100
- },
101
- {
102
- "id": "stageReason",
103
- "name": "StageReason",
104
- "field": "eligibility.stage.reason"
105
- }
106
- ],
107
- "passThrough": true,
108
- "inputField": null,
109
- "outputPath": null,
110
- "executionMode": "single",
111
- "passThorough": false
112
- },
113
- "id": "diseaseStageEligibility",
114
- "name": "diseaseStageEligibility",
115
- "position": {
116
- "x": 430,
117
- "y": -33
118
- }
119
- },
120
- {
121
- "type": "decisionTableNode",
122
- "content": {
123
- "hitPolicy": "first",
124
- "rules": [
125
- {
126
- "_id": "rule1",
127
- "medications": "some($, # in ['immunosuppressants', 'anticancer_agents', 'corticosteroids'])",
128
- "medicationFlag": "false",
129
- "medicationReason": "'Patient taking excluded medications'"
130
- },
131
- {
132
- "_id": "rule2",
133
- "medications": "",
134
- "medicationFlag": "true",
135
- "medicationReason": "'No conflicting medications'"
136
- }
137
- ],
138
- "inputs": [
139
- {
140
- "id": "medications",
141
- "name": "Medications",
142
- "field": "patient.currentMedications ?? []"
143
- }
144
- ],
145
- "outputs": [
146
- {
147
- "id": "medicationFlag",
148
- "name": "MedicationFlag",
149
- "field": "eligibility.medication.flag"
150
- },
151
- {
152
- "id": "medicationReason",
153
- "name": "MedicationReason",
154
- "field": "eligibility.medication.reason"
155
- }
156
- ],
157
- "passThrough": true,
158
- "inputField": null,
159
- "outputPath": null,
160
- "executionMode": "single",
161
- "passThorough": false
162
- },
163
- "id": "medicationEligibility",
164
- "name": "medicationEligibility",
165
- "position": {
166
- "x": 430,
167
- "y": 65
168
- }
169
- },
170
- {
171
- "type": "decisionTableNode",
172
- "content": {
173
- "hitPolicy": "first",
174
- "rules": [
175
- {
176
- "_id": "rule1",
177
- "age": ")18..75(",
178
- "ageFlag": "false",
179
- "ageReason": "'Age outside eligible range (18-75)'"
180
- },
181
- {
182
- "_id": "rule2",
183
- "age": "",
184
- "ageFlag": "true",
185
- "ageReason": "'Age within eligible range'"
186
- }
187
- ],
188
- "inputs": [
189
- {
190
- "id": "age",
191
- "name": "PatientAge",
192
- "field": "patient.age"
193
- }
194
- ],
195
- "outputs": [
196
- {
197
- "id": "ageFlag",
198
- "name": "AgeFlag",
199
- "field": "eligibility.age.flag"
200
- },
201
- {
202
- "id": "ageReason",
203
- "name": "AgeReason",
204
- "field": "eligibility.age.reason"
205
- }
206
- ],
207
- "passThrough": true,
208
- "inputField": null,
209
- "outputPath": null,
210
- "executionMode": "single",
211
- "passThorough": false
212
- },
213
- "id": "ageEligibility",
214
- "name": "ageEligibility",
215
- "position": {
216
- "x": 430,
217
- "y": 163
218
- }
219
- },
220
- {
221
- "type": "decisionTableNode",
222
- "content": {
223
- "hitPolicy": "first",
224
- "rules": [
225
- {
226
- "_id": "rule1",
227
- "priorTreatments": "> 2",
228
- "treatmentFlag": "false",
229
- "treatmentReason": "'Too many prior treatments'"
230
- },
231
- {
232
- "_id": "rule2",
233
- "priorTreatments": "<= 2",
234
- "treatmentFlag": "true",
235
- "treatmentReason": "'Acceptable number of prior treatments'"
236
- },
237
- {
238
- "_id": "rule3",
239
- "priorTreatments": "",
240
- "treatmentFlag": "true",
241
- "treatmentReason": "'No prior treatments recorded'"
242
- }
243
- ],
244
- "inputs": [
245
- {
246
- "id": "priorTreatments",
247
- "name": "PriorTreatments",
248
- "field": "patient.priorTreatments"
249
- }
250
- ],
251
- "outputs": [
252
- {
253
- "id": "treatmentFlag",
254
- "name": "TreatmentFlag",
255
- "field": "eligibility.priorTreatment.flag"
256
- },
257
- {
258
- "id": "treatmentReason",
259
- "name": "TreatmentReason",
260
- "field": "eligibility.priorTreatment.reason"
261
- }
262
- ],
263
- "passThrough": true,
264
- "inputField": null,
265
- "outputPath": null,
266
- "executionMode": "single"
267
- },
268
- "id": "priorTreatmentEligibility",
269
- "name": "priorTreatmentEligibility",
270
- "position": {
271
- "x": 430,
272
- "y": 261
273
- }
274
- },
275
- {
276
- "type": "decisionTableNode",
277
- "content": {
278
- "hitPolicy": "first",
279
- "rules": [
280
- {
281
- "_id": "rule1",
282
- "comorbidities": "some($, # in ['autoimmune_disease', 'heart_failure', 'uncontrolled_diabetes'])",
283
- "comorbidityFlag": "false",
284
- "comorbidityReason": "'Excluded comorbidity present'"
285
- },
286
- {
287
- "_id": "rule2",
288
- "comorbidities": "",
289
- "comorbidityFlag": "true",
290
- "comorbidityReason": "'No exclusionary comorbidities'"
291
- }
292
- ],
293
- "inputs": [
294
- {
295
- "id": "comorbidities",
296
- "name": "Comorbidities",
297
- "field": "patient.comorbidities ?? []"
298
- }
299
- ],
300
- "outputs": [
301
- {
302
- "id": "comorbidityFlag",
303
- "name": "ComorbidityFlag",
304
- "field": "eligibility.comorbidity.flag"
305
- },
306
- {
307
- "id": "comorbidityReason",
308
- "name": "ComorbidityReason",
309
- "field": "eligibility.comorbidity.reason"
310
- }
311
- ],
312
- "passThrough": true,
313
- "inputField": null,
314
- "outputPath": null,
315
- "executionMode": "single",
316
- "passThorough": false
317
- },
318
- "id": "comorbidityEligibility",
319
- "name": "comorbidityEligibility",
320
- "position": {
321
- "x": 430,
322
- "y": 359
323
- }
324
- },
325
- {
326
- "type": "expressionNode",
327
- "content": {
328
- "expressions": [
329
- {
330
- "id": "expr1",
331
- "key": "isEligible",
332
- "value": "all(values(eligibility), #.flag)"
333
- },
334
- {
335
- "id": "expr2",
336
- "key": "eligibilityReasons",
337
- "value": "filter(values(eligibility), #.reason != null)"
338
- },
339
- {
340
- "id": "expr3",
341
- "key": "decisionSummary",
342
- "value": "$.isEligible ? 'Patient is eligible for clinical trial' : 'Patient is not eligible for clinical trial'"
343
- },
344
- {
345
- "id": "expr4",
346
- "key": "failedCriteria",
347
- "value": "filter(keys(eligibility), eligibility[#].flag == false)"
348
- }
349
- ],
350
- "passThrough": false,
351
- "inputField": null,
352
- "outputPath": null,
353
- "executionMode": "single"
354
- },
355
- "id": "eligibilitySummary",
356
- "name": "eligibilitySummary",
357
- "position": {
358
- "x": 750,
359
- "y": 114
360
- }
361
- }
362
- ],
363
- "edges": [
364
- {
365
- "id": "edge1",
366
- "sourceId": "inputNode",
367
- "targetId": "diagnosisEligibility",
368
- "type": "edge"
369
- },
370
- {
371
- "id": "edge2",
372
- "sourceId": "inputNode",
373
- "targetId": "diseaseStageEligibility",
374
- "type": "edge"
375
- },
376
- {
377
- "id": "edge3",
378
- "sourceId": "inputNode",
379
- "targetId": "medicationEligibility",
380
- "type": "edge"
381
- },
382
- {
383
- "id": "edge4",
384
- "sourceId": "inputNode",
385
- "targetId": "ageEligibility",
386
- "type": "edge"
387
- },
388
- {
389
- "id": "edge5",
390
- "sourceId": "inputNode",
391
- "targetId": "priorTreatmentEligibility",
392
- "type": "edge"
393
- },
394
- {
395
- "id": "edge6",
396
- "sourceId": "inputNode",
397
- "targetId": "comorbidityEligibility",
398
- "type": "edge"
399
- },
400
- {
401
- "id": "edge7",
402
- "sourceId": "diagnosisEligibility",
403
- "targetId": "eligibilitySummary",
404
- "type": "edge"
405
- },
406
- {
407
- "id": "edge8",
408
- "sourceId": "diseaseStageEligibility",
409
- "targetId": "eligibilitySummary",
410
- "type": "edge"
411
- },
412
- {
413
- "id": "edge9",
414
- "sourceId": "medicationEligibility",
415
- "targetId": "eligibilitySummary",
416
- "type": "edge"
417
- },
418
- {
419
- "id": "edge10",
420
- "sourceId": "ageEligibility",
421
- "targetId": "eligibilitySummary",
422
- "type": "edge"
423
- },
424
- {
425
- "id": "edge11",
426
- "sourceId": "priorTreatmentEligibility",
427
- "targetId": "eligibilitySummary",
428
- "type": "edge"
429
- },
430
- {
431
- "id": "edge12",
432
- "sourceId": "comorbidityEligibility",
433
- "targetId": "eligibilitySummary",
434
- "type": "edge"
435
- }
436
- ]
437
- }
@@ -1,143 +0,0 @@
1
- {
2
- "nodes": [
3
- {
4
- "type": "inputNode",
5
- "content": {
6
- "schema": ""
7
- },
8
- "id": "ip1",
9
- "name": "request",
10
- "position": {
11
- "x": 110,
12
- "y": 114
13
- }
14
- },
15
- {
16
- "type": "expressionNode",
17
- "content": {
18
- "expressions": [
19
- {
20
- "id": "e1-1",
21
- "key": "averageOrderValue",
22
- "value": "sum(purchaseHistory.orderValues) / len(purchaseHistory.orderValues)"
23
- },
24
- {
25
- "id": "e1-2",
26
- "key": "purchaseFrequency",
27
- "value": "len(purchaseHistory.orderValues) / purchaseHistory.customerDurationMonths * 12"
28
- },
29
- {
30
- "id": "e1-3",
31
- "key": "grossMargin",
32
- "value": "purchaseHistory.averageGrossMarginPercent / 100"
33
- },
34
- {
35
- "id": "e1-4",
36
- "key": "customerLifetimeMonths",
37
- "value": "1 / (1 - purchaseHistory.retentionRate / 100) * 12"
38
- },
39
- {
40
- "id": "e1-5",
41
- "key": "basicLTV",
42
- "value": "$.averageOrderValue * $.purchaseFrequency * $.grossMargin * $.customerLifetimeMonths"
43
- },
44
- {
45
- "id": "e1-6",
46
- "key": "acquisitionCostRatio",
47
- "value": "customer.acquisitionCost / $.basicLTV"
48
- },
49
- {
50
- "id": "e1-7",
51
- "key": "adjustedLTV",
52
- "value": "$.basicLTV - customer.acquisitionCost"
53
- }
54
- ],
55
- "passThrough": true,
56
- "inputField": null,
57
- "outputPath": null,
58
- "executionMode": "single"
59
- },
60
- "id": "ex1",
61
- "name": "clv_calculation",
62
- "position": {
63
- "x": 430,
64
- "y": 114
65
- }
66
- },
67
- {
68
- "type": "decisionTableNode",
69
- "content": {
70
- "hitPolicy": "first",
71
- "rules": [
72
- {
73
- "_id": "r1-1",
74
- "i1-1": "> 2000",
75
- "o1-1": "'platinum'",
76
- "o1-2": "'High-touch service, premium offers, exclusive events'"
77
- },
78
- {
79
- "_id": "r1-2",
80
- "i1-1": "> 1000",
81
- "o1-1": "'gold'",
82
- "o1-2": "'Priority service, personalized offers, loyalty bonuses'"
83
- },
84
- {
85
- "_id": "r1-3",
86
- "i1-1": "> 500",
87
- "o1-1": "'silver'",
88
- "o1-2": "'Enhanced service, targeted offers, occasional perks'"
89
- },
90
- {
91
- "_id": "r1-4",
92
- "i1-1": "",
93
- "o1-1": "'standard'",
94
- "o1-2": "'Standard service, general promotions'"
95
- }
96
- ],
97
- "inputs": [
98
- {
99
- "id": "i1-1",
100
- "name": "Adjusted LTV",
101
- "field": "adjustedLTV"
102
- }
103
- ],
104
- "outputs": [
105
- {
106
- "id": "o1-1",
107
- "name": "Customer Tier",
108
- "field": "customerInsights.tier"
109
- },
110
- {
111
- "id": "o1-2",
112
- "name": "Recommended Strategy",
113
- "field": "customerInsights.recommendedStrategy"
114
- }
115
- ],
116
- "passThrough": true,
117
- "inputField": null,
118
- "outputPath": null,
119
- "executionMode": "single"
120
- },
121
- "id": "dt1",
122
- "name": "customer_segmentation",
123
- "position": {
124
- "x": 750,
125
- "y": 114
126
- }
127
- }
128
- ],
129
- "edges": [
130
- {
131
- "id": "ed1",
132
- "sourceId": "ip1",
133
- "targetId": "ex1",
134
- "type": "edge"
135
- },
136
- {
137
- "id": "ed2",
138
- "sourceId": "ex1",
139
- "targetId": "dt1",
140
- "type": "edge"
141
- }
142
- ]
143
- }