datacontract-cli 0.10.20__py3-none-any.whl → 0.10.22__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.

Potentially problematic release.


This version of datacontract-cli might be problematic. Click here for more details.

Files changed (38) hide show
  1. datacontract/{web.py → api.py} +55 -3
  2. datacontract/breaking/breaking.py +1 -1
  3. datacontract/breaking/breaking_rules.py +1 -1
  4. datacontract/cli.py +32 -10
  5. datacontract/data_contract.py +14 -100
  6. datacontract/engines/data_contract_checks.py +735 -0
  7. datacontract/engines/data_contract_test.py +51 -0
  8. datacontract/engines/soda/check_soda_execute.py +36 -30
  9. datacontract/engines/soda/connections/kafka.py +8 -3
  10. datacontract/export/avro_converter.py +2 -0
  11. datacontract/export/custom_converter.py +40 -0
  12. datacontract/export/exporter.py +1 -2
  13. datacontract/export/exporter_factory.py +4 -12
  14. datacontract/export/sodacl_converter.py +22 -294
  15. datacontract/export/sql_type_converter.py +7 -2
  16. datacontract/imports/odcs_importer.py +6 -3
  17. datacontract/imports/odcs_v3_importer.py +2 -0
  18. datacontract/imports/sql_importer.py +229 -29
  19. datacontract/lint/urls.py +4 -4
  20. datacontract/model/data_contract_specification.py +130 -129
  21. datacontract/model/exceptions.py +4 -1
  22. datacontract/model/run.py +25 -18
  23. datacontract/templates/datacontract.html +16 -2
  24. datacontract/templates/partials/definition.html +3 -95
  25. datacontract/templates/partials/model_field.html +13 -0
  26. datacontract/templates/partials/quality.html +49 -0
  27. datacontract/templates/style/output.css +151 -152
  28. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/METADATA +238 -184
  29. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/RECORD +34 -34
  30. datacontract/engines/soda/connections/dask.py +0 -28
  31. datacontract/export/odcs_v2_exporter.py +0 -124
  32. datacontract/imports/odcs_v2_importer.py +0 -177
  33. datacontract/lint/linters/example_model_linter.py +0 -91
  34. /datacontract/{model → breaking}/breaking_change.py +0 -0
  35. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/LICENSE +0 -0
  36. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/WHEEL +0 -0
  37. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/entry_points.txt +0 -0
  38. {datacontract_cli-0.10.20.dist-info → datacontract_cli-0.10.22.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,49 @@
1
+ <div class="mt-2">
2
+ <span class="italic">Quality | {{quality.type|upper}}:</span> {{ quality.description }}
3
+ {% if quality.type == 'sql' and quality.query %}
4
+ <div class="pl-4">
5
+ Query:
6
+ <div class="ring-1 ring-inset ring-gray-500/10 bg-gray-50 p-2 rounded-md"><pre><code>{{ quality.query }}</code></pre></div>
7
+ {% if quality.mustBe != None %}
8
+ <div>
9
+ Must Be: <span class="font-mono font-bold"> {{quality.mustBe}}</span>
10
+ </div>
11
+ {% endif %}
12
+ {% if quality.mustNotBe != None %}
13
+ <div>
14
+ Must Not Be: <span class="font-mono font-bold"> {{quality.mustNotBe}}</span>
15
+ </div>
16
+ {% endif %}
17
+ {% if quality.mustBeGreaterThan != None %}
18
+ <div>
19
+ Must Be Greater Than: <span class="font-mono font-bold"> {{quality.mustBeGreaterThan}}</span>
20
+ </div>
21
+ {% endif %}
22
+ {% if quality.mustBeGreaterThanOrEqualTo != None %}
23
+ <div>
24
+ Must Be Greater Than Or Equal To: <span class="font-mono font-bold"> {{quality.mustBeGreaterThanOrEqualTo}}</span>
25
+ </div>
26
+ {% endif %}
27
+ {% if quality.mustBeLessThan != None %}
28
+ <div>
29
+ Must Be Less Than: <span class="font-mono font-bold"> {{quality.mustBeLessThan}}</span>
30
+ </div>
31
+ {% endif %}
32
+ {% if quality.mustBeLessThanOrEqualTo != None %}
33
+ <div>
34
+ Must Be Less Than Or Equal To: <span class="font-mono font-bold"> {{quality.mustBeLessThanOrEqualTo}}</span>
35
+ </div>
36
+ {% endif %}
37
+ {% if quality.mustBeBetween %}
38
+ <div>
39
+ Must Be Between: <span class="font-mono font-bold"> {{quality.mustBeBetween|join(' and ')}}</span>
40
+ </div>
41
+ {% endif %}
42
+ {% if quality.mustNotBeBetween %}
43
+ <div>
44
+ Must Not Be Between: <span class="font-mono font-bold"> {{quality.mustNotBeBetween}}</span>
45
+ </div>
46
+ {% endif %}
47
+ </div>
48
+ {% endif %}
49
+ </div>
@@ -1,5 +1,113 @@
1
+ *, ::before, ::after {
2
+ --tw-border-spacing-x: 0;
3
+ --tw-border-spacing-y: 0;
4
+ --tw-translate-x: 0;
5
+ --tw-translate-y: 0;
6
+ --tw-rotate: 0;
7
+ --tw-skew-x: 0;
8
+ --tw-skew-y: 0;
9
+ --tw-scale-x: 1;
10
+ --tw-scale-y: 1;
11
+ --tw-pan-x: ;
12
+ --tw-pan-y: ;
13
+ --tw-pinch-zoom: ;
14
+ --tw-scroll-snap-strictness: proximity;
15
+ --tw-gradient-from-position: ;
16
+ --tw-gradient-via-position: ;
17
+ --tw-gradient-to-position: ;
18
+ --tw-ordinal: ;
19
+ --tw-slashed-zero: ;
20
+ --tw-numeric-figure: ;
21
+ --tw-numeric-spacing: ;
22
+ --tw-numeric-fraction: ;
23
+ --tw-ring-inset: ;
24
+ --tw-ring-offset-width: 0px;
25
+ --tw-ring-offset-color: #fff;
26
+ --tw-ring-color: rgb(59 130 246 / 0.5);
27
+ --tw-ring-offset-shadow: 0 0 #0000;
28
+ --tw-ring-shadow: 0 0 #0000;
29
+ --tw-shadow: 0 0 #0000;
30
+ --tw-shadow-colored: 0 0 #0000;
31
+ --tw-blur: ;
32
+ --tw-brightness: ;
33
+ --tw-contrast: ;
34
+ --tw-grayscale: ;
35
+ --tw-hue-rotate: ;
36
+ --tw-invert: ;
37
+ --tw-saturate: ;
38
+ --tw-sepia: ;
39
+ --tw-drop-shadow: ;
40
+ --tw-backdrop-blur: ;
41
+ --tw-backdrop-brightness: ;
42
+ --tw-backdrop-contrast: ;
43
+ --tw-backdrop-grayscale: ;
44
+ --tw-backdrop-hue-rotate: ;
45
+ --tw-backdrop-invert: ;
46
+ --tw-backdrop-opacity: ;
47
+ --tw-backdrop-saturate: ;
48
+ --tw-backdrop-sepia: ;
49
+ --tw-contain-size: ;
50
+ --tw-contain-layout: ;
51
+ --tw-contain-paint: ;
52
+ --tw-contain-style: ;
53
+ }
54
+
55
+ ::backdrop {
56
+ --tw-border-spacing-x: 0;
57
+ --tw-border-spacing-y: 0;
58
+ --tw-translate-x: 0;
59
+ --tw-translate-y: 0;
60
+ --tw-rotate: 0;
61
+ --tw-skew-x: 0;
62
+ --tw-skew-y: 0;
63
+ --tw-scale-x: 1;
64
+ --tw-scale-y: 1;
65
+ --tw-pan-x: ;
66
+ --tw-pan-y: ;
67
+ --tw-pinch-zoom: ;
68
+ --tw-scroll-snap-strictness: proximity;
69
+ --tw-gradient-from-position: ;
70
+ --tw-gradient-via-position: ;
71
+ --tw-gradient-to-position: ;
72
+ --tw-ordinal: ;
73
+ --tw-slashed-zero: ;
74
+ --tw-numeric-figure: ;
75
+ --tw-numeric-spacing: ;
76
+ --tw-numeric-fraction: ;
77
+ --tw-ring-inset: ;
78
+ --tw-ring-offset-width: 0px;
79
+ --tw-ring-offset-color: #fff;
80
+ --tw-ring-color: rgb(59 130 246 / 0.5);
81
+ --tw-ring-offset-shadow: 0 0 #0000;
82
+ --tw-ring-shadow: 0 0 #0000;
83
+ --tw-shadow: 0 0 #0000;
84
+ --tw-shadow-colored: 0 0 #0000;
85
+ --tw-blur: ;
86
+ --tw-brightness: ;
87
+ --tw-contrast: ;
88
+ --tw-grayscale: ;
89
+ --tw-hue-rotate: ;
90
+ --tw-invert: ;
91
+ --tw-saturate: ;
92
+ --tw-sepia: ;
93
+ --tw-drop-shadow: ;
94
+ --tw-backdrop-blur: ;
95
+ --tw-backdrop-brightness: ;
96
+ --tw-backdrop-contrast: ;
97
+ --tw-backdrop-grayscale: ;
98
+ --tw-backdrop-hue-rotate: ;
99
+ --tw-backdrop-invert: ;
100
+ --tw-backdrop-opacity: ;
101
+ --tw-backdrop-saturate: ;
102
+ --tw-backdrop-sepia: ;
103
+ --tw-contain-size: ;
104
+ --tw-contain-layout: ;
105
+ --tw-contain-paint: ;
106
+ --tw-contain-style: ;
107
+ }
108
+
1
109
  /*
2
- ! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
110
+ ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
3
111
  */
4
112
 
5
113
  /*
@@ -442,118 +550,10 @@ video {
442
550
 
443
551
  /* Make elements with the HTML hidden attribute stay hidden by default */
444
552
 
445
- [hidden] {
553
+ [hidden]:where(:not([hidden="until-found"])) {
446
554
  display: none;
447
555
  }
448
556
 
449
- *, ::before, ::after {
450
- --tw-border-spacing-x: 0;
451
- --tw-border-spacing-y: 0;
452
- --tw-translate-x: 0;
453
- --tw-translate-y: 0;
454
- --tw-rotate: 0;
455
- --tw-skew-x: 0;
456
- --tw-skew-y: 0;
457
- --tw-scale-x: 1;
458
- --tw-scale-y: 1;
459
- --tw-pan-x: ;
460
- --tw-pan-y: ;
461
- --tw-pinch-zoom: ;
462
- --tw-scroll-snap-strictness: proximity;
463
- --tw-gradient-from-position: ;
464
- --tw-gradient-via-position: ;
465
- --tw-gradient-to-position: ;
466
- --tw-ordinal: ;
467
- --tw-slashed-zero: ;
468
- --tw-numeric-figure: ;
469
- --tw-numeric-spacing: ;
470
- --tw-numeric-fraction: ;
471
- --tw-ring-inset: ;
472
- --tw-ring-offset-width: 0px;
473
- --tw-ring-offset-color: #fff;
474
- --tw-ring-color: rgb(59 130 246 / 0.5);
475
- --tw-ring-offset-shadow: 0 0 #0000;
476
- --tw-ring-shadow: 0 0 #0000;
477
- --tw-shadow: 0 0 #0000;
478
- --tw-shadow-colored: 0 0 #0000;
479
- --tw-blur: ;
480
- --tw-brightness: ;
481
- --tw-contrast: ;
482
- --tw-grayscale: ;
483
- --tw-hue-rotate: ;
484
- --tw-invert: ;
485
- --tw-saturate: ;
486
- --tw-sepia: ;
487
- --tw-drop-shadow: ;
488
- --tw-backdrop-blur: ;
489
- --tw-backdrop-brightness: ;
490
- --tw-backdrop-contrast: ;
491
- --tw-backdrop-grayscale: ;
492
- --tw-backdrop-hue-rotate: ;
493
- --tw-backdrop-invert: ;
494
- --tw-backdrop-opacity: ;
495
- --tw-backdrop-saturate: ;
496
- --tw-backdrop-sepia: ;
497
- --tw-contain-size: ;
498
- --tw-contain-layout: ;
499
- --tw-contain-paint: ;
500
- --tw-contain-style: ;
501
- }
502
-
503
- ::backdrop {
504
- --tw-border-spacing-x: 0;
505
- --tw-border-spacing-y: 0;
506
- --tw-translate-x: 0;
507
- --tw-translate-y: 0;
508
- --tw-rotate: 0;
509
- --tw-skew-x: 0;
510
- --tw-skew-y: 0;
511
- --tw-scale-x: 1;
512
- --tw-scale-y: 1;
513
- --tw-pan-x: ;
514
- --tw-pan-y: ;
515
- --tw-pinch-zoom: ;
516
- --tw-scroll-snap-strictness: proximity;
517
- --tw-gradient-from-position: ;
518
- --tw-gradient-via-position: ;
519
- --tw-gradient-to-position: ;
520
- --tw-ordinal: ;
521
- --tw-slashed-zero: ;
522
- --tw-numeric-figure: ;
523
- --tw-numeric-spacing: ;
524
- --tw-numeric-fraction: ;
525
- --tw-ring-inset: ;
526
- --tw-ring-offset-width: 0px;
527
- --tw-ring-offset-color: #fff;
528
- --tw-ring-color: rgb(59 130 246 / 0.5);
529
- --tw-ring-offset-shadow: 0 0 #0000;
530
- --tw-ring-shadow: 0 0 #0000;
531
- --tw-shadow: 0 0 #0000;
532
- --tw-shadow-colored: 0 0 #0000;
533
- --tw-blur: ;
534
- --tw-brightness: ;
535
- --tw-contrast: ;
536
- --tw-grayscale: ;
537
- --tw-hue-rotate: ;
538
- --tw-invert: ;
539
- --tw-saturate: ;
540
- --tw-sepia: ;
541
- --tw-drop-shadow: ;
542
- --tw-backdrop-blur: ;
543
- --tw-backdrop-brightness: ;
544
- --tw-backdrop-contrast: ;
545
- --tw-backdrop-grayscale: ;
546
- --tw-backdrop-hue-rotate: ;
547
- --tw-backdrop-invert: ;
548
- --tw-backdrop-opacity: ;
549
- --tw-backdrop-saturate: ;
550
- --tw-backdrop-sepia: ;
551
- --tw-contain-size: ;
552
- --tw-contain-layout: ;
553
- --tw-contain-paint: ;
554
- --tw-contain-style: ;
555
- }
556
-
557
557
  .sr-only {
558
558
  position: absolute;
559
559
  width: 1px;
@@ -635,14 +635,14 @@ video {
635
635
  margin-bottom: 0.5rem;
636
636
  }
637
637
 
638
- .-ml-0 {
639
- margin-left: -0px;
640
- }
641
-
642
638
  .-ml-0\.5 {
643
639
  margin-left: -0.125rem;
644
640
  }
645
641
 
642
+ .mb-2 {
643
+ margin-bottom: 0.5rem;
644
+ }
645
+
646
646
  .mb-3 {
647
647
  margin-bottom: 0.75rem;
648
648
  }
@@ -798,10 +798,6 @@ video {
798
798
  width: 2rem;
799
799
  }
800
800
 
801
- .w-9\/12 {
802
- width: 75%;
803
- }
804
-
805
801
  .w-full {
806
802
  width: 100%;
807
803
  }
@@ -930,17 +926,17 @@ video {
930
926
 
931
927
  .divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
932
928
  --tw-divide-opacity: 1;
933
- border-color: rgb(243 244 246 / var(--tw-divide-opacity));
929
+ border-color: rgb(243 244 246 / var(--tw-divide-opacity, 1));
934
930
  }
935
931
 
936
932
  .divide-gray-200 > :not([hidden]) ~ :not([hidden]) {
937
933
  --tw-divide-opacity: 1;
938
- border-color: rgb(229 231 235 / var(--tw-divide-opacity));
934
+ border-color: rgb(229 231 235 / var(--tw-divide-opacity, 1));
939
935
  }
940
936
 
941
937
  .divide-gray-300 > :not([hidden]) ~ :not([hidden]) {
942
938
  --tw-divide-opacity: 1;
943
- border-color: rgb(209 213 219 / var(--tw-divide-opacity));
939
+ border-color: rgb(209 213 219 / var(--tw-divide-opacity, 1));
944
940
  }
945
941
 
946
942
  .overflow-hidden {
@@ -987,48 +983,52 @@ video {
987
983
 
988
984
  .bg-blue-50 {
989
985
  --tw-bg-opacity: 1;
990
- background-color: rgb(239 246 255 / var(--tw-bg-opacity));
986
+ background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
991
987
  }
992
988
 
993
989
  .bg-gray-100 {
994
990
  --tw-bg-opacity: 1;
995
- background-color: rgb(243 244 246 / var(--tw-bg-opacity));
991
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
996
992
  }
997
993
 
998
994
  .bg-gray-50 {
999
995
  --tw-bg-opacity: 1;
1000
- background-color: rgb(249 250 251 / var(--tw-bg-opacity));
996
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
1001
997
  }
1002
998
 
1003
999
  .bg-gray-500 {
1004
1000
  --tw-bg-opacity: 1;
1005
- background-color: rgb(107 114 128 / var(--tw-bg-opacity));
1001
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1));
1006
1002
  }
1007
1003
 
1008
1004
  .bg-indigo-100 {
1009
1005
  --tw-bg-opacity: 1;
1010
- background-color: rgb(224 231 255 / var(--tw-bg-opacity));
1006
+ background-color: rgb(224 231 255 / var(--tw-bg-opacity, 1));
1011
1007
  }
1012
1008
 
1013
1009
  .bg-indigo-600 {
1014
1010
  --tw-bg-opacity: 1;
1015
- background-color: rgb(79 70 229 / var(--tw-bg-opacity));
1011
+ background-color: rgb(79 70 229 / var(--tw-bg-opacity, 1));
1016
1012
  }
1017
1013
 
1018
1014
  .bg-white {
1019
1015
  --tw-bg-opacity: 1;
1020
- background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1016
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
1021
1017
  }
1022
1018
 
1023
1019
  .bg-yellow-50 {
1024
1020
  --tw-bg-opacity: 1;
1025
- background-color: rgb(254 252 232 / var(--tw-bg-opacity));
1021
+ background-color: rgb(254 252 232 / var(--tw-bg-opacity, 1));
1026
1022
  }
1027
1023
 
1028
1024
  .bg-opacity-75 {
1029
1025
  --tw-bg-opacity: 0.75;
1030
1026
  }
1031
1027
 
1028
+ .p-2 {
1029
+ padding: 0.5rem;
1030
+ }
1031
+
1032
1032
  .p-4 {
1033
1033
  padding: 1rem;
1034
1034
  }
@@ -1072,11 +1072,6 @@ video {
1072
1072
  padding-right: 1.5rem;
1073
1073
  }
1074
1074
 
1075
- .py-0 {
1076
- padding-top: 0px;
1077
- padding-bottom: 0px;
1078
- }
1079
-
1080
1075
  .py-0\.5 {
1081
1076
  padding-top: 0.125rem;
1082
1077
  padding-bottom: 0.125rem;
@@ -1199,6 +1194,10 @@ video {
1199
1194
  font-weight: 600;
1200
1195
  }
1201
1196
 
1197
+ .font-normal {
1198
+ font-weight: 400;
1199
+ }
1200
+
1202
1201
  .italic {
1203
1202
  font-style: italic;
1204
1203
  }
@@ -1217,47 +1216,47 @@ video {
1217
1216
 
1218
1217
  .text-blue-600 {
1219
1218
  --tw-text-opacity: 1;
1220
- color: rgb(37 99 235 / var(--tw-text-opacity));
1219
+ color: rgb(37 99 235 / var(--tw-text-opacity, 1));
1221
1220
  }
1222
1221
 
1223
1222
  .text-gray-400 {
1224
1223
  --tw-text-opacity: 1;
1225
- color: rgb(156 163 175 / var(--tw-text-opacity));
1224
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1226
1225
  }
1227
1226
 
1228
1227
  .text-gray-500 {
1229
1228
  --tw-text-opacity: 1;
1230
- color: rgb(107 114 128 / var(--tw-text-opacity));
1229
+ color: rgb(107 114 128 / var(--tw-text-opacity, 1));
1231
1230
  }
1232
1231
 
1233
1232
  .text-gray-600 {
1234
1233
  --tw-text-opacity: 1;
1235
- color: rgb(75 85 99 / var(--tw-text-opacity));
1234
+ color: rgb(75 85 99 / var(--tw-text-opacity, 1));
1236
1235
  }
1237
1236
 
1238
1237
  .text-gray-800 {
1239
1238
  --tw-text-opacity: 1;
1240
- color: rgb(31 41 55 / var(--tw-text-opacity));
1239
+ color: rgb(31 41 55 / var(--tw-text-opacity, 1));
1241
1240
  }
1242
1241
 
1243
1242
  .text-gray-900 {
1244
1243
  --tw-text-opacity: 1;
1245
- color: rgb(17 24 39 / var(--tw-text-opacity));
1244
+ color: rgb(17 24 39 / var(--tw-text-opacity, 1));
1246
1245
  }
1247
1246
 
1248
1247
  .text-sky-500 {
1249
1248
  --tw-text-opacity: 1;
1250
- color: rgb(14 165 233 / var(--tw-text-opacity));
1249
+ color: rgb(14 165 233 / var(--tw-text-opacity, 1));
1251
1250
  }
1252
1251
 
1253
1252
  .text-white {
1254
1253
  --tw-text-opacity: 1;
1255
- color: rgb(255 255 255 / var(--tw-text-opacity));
1254
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1));
1256
1255
  }
1257
1256
 
1258
1257
  .text-yellow-600 {
1259
1258
  --tw-text-opacity: 1;
1260
- color: rgb(202 138 4 / var(--tw-text-opacity));
1259
+ color: rgb(202 138 4 / var(--tw-text-opacity, 1));
1261
1260
  }
1262
1261
 
1263
1262
  .shadow {
@@ -1290,7 +1289,7 @@ video {
1290
1289
 
1291
1290
  .ring-black {
1292
1291
  --tw-ring-opacity: 1;
1293
- --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity));
1292
+ --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1));
1294
1293
  }
1295
1294
 
1296
1295
  .ring-blue-500\/10 {
@@ -1299,7 +1298,7 @@ video {
1299
1298
 
1300
1299
  .ring-gray-300 {
1301
1300
  --tw-ring-opacity: 1;
1302
- --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity));
1301
+ --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1));
1303
1302
  }
1304
1303
 
1305
1304
  .ring-gray-500\/10 {
@@ -1332,32 +1331,32 @@ video {
1332
1331
 
1333
1332
  .placeholder\:text-gray-400::-moz-placeholder {
1334
1333
  --tw-text-opacity: 1;
1335
- color: rgb(156 163 175 / var(--tw-text-opacity));
1334
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1336
1335
  }
1337
1336
 
1338
1337
  .placeholder\:text-gray-400::placeholder {
1339
1338
  --tw-text-opacity: 1;
1340
- color: rgb(156 163 175 / var(--tw-text-opacity));
1339
+ color: rgb(156 163 175 / var(--tw-text-opacity, 1));
1341
1340
  }
1342
1341
 
1343
1342
  .hover\:bg-gray-50:hover {
1344
1343
  --tw-bg-opacity: 1;
1345
- background-color: rgb(249 250 251 / var(--tw-bg-opacity));
1344
+ background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
1346
1345
  }
1347
1346
 
1348
1347
  .hover\:bg-indigo-500:hover {
1349
1348
  --tw-bg-opacity: 1;
1350
- background-color: rgb(99 102 241 / var(--tw-bg-opacity));
1349
+ background-color: rgb(99 102 241 / var(--tw-bg-opacity, 1));
1351
1350
  }
1352
1351
 
1353
1352
  .hover\:text-gray-500:hover {
1354
1353
  --tw-text-opacity: 1;
1355
- color: rgb(107 114 128 / var(--tw-text-opacity));
1354
+ color: rgb(107 114 128 / var(--tw-text-opacity, 1));
1356
1355
  }
1357
1356
 
1358
1357
  .hover\:text-gray-700:hover {
1359
1358
  --tw-text-opacity: 1;
1360
- color: rgb(55 65 81 / var(--tw-text-opacity));
1359
+ color: rgb(55 65 81 / var(--tw-text-opacity, 1));
1361
1360
  }
1362
1361
 
1363
1362
  .focus\:ring-2:focus {
@@ -1372,7 +1371,7 @@ video {
1372
1371
 
1373
1372
  .focus\:ring-indigo-600:focus {
1374
1373
  --tw-ring-opacity: 1;
1375
- --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity));
1374
+ --tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1));
1376
1375
  }
1377
1376
 
1378
1377
  .focus-visible\:outline:focus-visible {