labfreed 1.0.0b28__tar.gz → 1.0.0b30__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.

Potentially problematic release.


This version of labfreed might be problematic. Click here for more details.

Files changed (105) hide show
  1. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/PKG-INFO +1 -1
  2. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/__init__.py +1 -1
  3. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/api_data_models/response.py +2 -2
  4. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/pythonic/attribute_server_factory.py +23 -1
  5. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  6. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/.github/workflows/pypi-publish.yml +0 -0
  7. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/.github/workflows/run-tests.yml +0 -0
  8. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/CHANGELOG.md +0 -0
  9. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/LICENSE +0 -0
  10. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/README.md +0 -0
  11. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/app/app_infrastructure.py +0 -0
  12. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/app/formatted_print.py +0 -0
  13. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/app/pac_info/pac_info.py +0 -0
  14. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/app_factory.py +0 -0
  15. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/lib/attribute.py +0 -0
  16. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/lib/bp_landing_page.py +0 -0
  17. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/lib/utils.py +0 -0
  18. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cancel.svg +0 -0
  19. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DC.svg +0 -0
  20. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DM.svg +0 -0
  21. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DP.svg +0 -0
  22. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DR.svg +0 -0
  23. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DS.svg +0 -0
  24. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MC.svg +0 -0
  25. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MD.svg +0 -0
  26. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MS.svg +0 -0
  27. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MX.svg +0 -0
  28. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/external-link.svg +0 -0
  29. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/logo.svg +0 -0
  30. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/menu.svg +0 -0
  31. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/search.svg +0 -0
  32. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/styles.css +0 -0
  33. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/styles_brand.css +0 -0
  34. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/static/styles_pac_info.css +0 -0
  35. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/flash_error_messages.jinja.html +0 -0
  36. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/footer.jinja.html +0 -0
  37. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/main.jinja.html +0 -0
  38. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/navbar.jinja.html +0 -0
  39. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/base-components.jinja.html +0 -0
  40. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/card-components.jinja.html +0 -0
  41. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/card.jinja.html +0 -0
  42. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/pac_info.jinja.html +0 -0
  43. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_issuer_error.jinja.html +0 -0
  44. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_issuer_landing_page.jinja.html +0 -0
  45. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/labfreed_infrastructure.py +0 -0
  46. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/__init__.py +0 -0
  47. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/api_data_models/request.py +0 -0
  48. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/api_data_models/server_capabilities_response.py +0 -0
  49. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/client/client.py +0 -0
  50. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/client/client_attribute_group.py +0 -0
  51. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/pythonic/excel_attribute_data_source.py +0 -0
  52. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/pythonic/py_attributes.py +0 -0
  53. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/pythonic/py_dict_data_source.py +0 -0
  54. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/server/__init__.py +0 -0
  55. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/server/attribute_data_sources.py +0 -0
  56. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/server/server.py +0 -0
  57. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/server/translation_data_sources.py +0 -0
  58. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_attributes/well_knonw_attribute_keys.py +0 -0
  59. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_cat/__init__.py +0 -0
  60. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_cat/category_base.py +0 -0
  61. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_cat/pac_cat.py +0 -0
  62. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_cat/predefined_categories.py +0 -0
  63. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/__init__.py +0 -0
  64. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/extension.py +0 -0
  65. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/id_segment.py +0 -0
  66. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/pac_id.py +0 -0
  67. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/url_parser.py +0 -0
  68. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id/url_serializer.py +0 -0
  69. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/__init__.py +0 -0
  70. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/cit_v1.py +0 -0
  71. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/resolver.py +0 -0
  72. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/resolver_config.py +0 -0
  73. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/resolver_config_common.py +0 -0
  74. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/pac_id_resolver/services.py +0 -0
  75. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/qr/__init__.py +0 -0
  76. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/qr/generate_qr.py +0 -0
  77. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/__init__.py +0 -0
  78. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/pythonic/__init__.py +0 -0
  79. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/pythonic/data_table.py +0 -0
  80. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/pythonic/pyTREX.py +0 -0
  81. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/pythonic/quantity.py +0 -0
  82. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/table_segment.py +0 -0
  83. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/trex.py +0 -0
  84. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/trex_base_models.py +0 -0
  85. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/trex/value_segments.py +0 -0
  86. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/utilities/base36.py +0 -0
  87. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/utilities/ensure_utc_time.py +0 -0
  88. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/utilities/translations.py +0 -0
  89. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_extensions/__init__.py +0 -0
  90. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_extensions/default_extension_interpreters.py +0 -0
  91. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_extensions/display_name_extension.py +0 -0
  92. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_extensions/text_base36_extension.py +0 -0
  93. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_extensions/trex_extension.py +0 -0
  94. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/gs1/__init__.py +0 -0
  95. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/gs1/gs1_ai_enum_sorted.py +0 -0
  96. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/labfreed/well_known_keys.py +0 -0
  97. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/unece/UneceUnits.json +0 -0
  98. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/unece/__init__.py +0 -0
  99. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed/well_known_keys/unece/unece_units.py +0 -0
  100. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed_experimental/pac_disco/ble_central.py +0 -0
  101. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed_experimental/pac_disco/ble_peripheral.py +0 -0
  102. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed_experimental/pac_disco/ble_uuid.py +0 -0
  103. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/labfreed_experimental/pac_disco/pac_disco_demo.py +0 -0
  104. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/pyproject.toml +0 -0
  105. {labfreed-1.0.0b28 → labfreed-1.0.0b30}/tst_attr.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labfreed
3
- Version: 1.0.0b28
3
+ Version: 1.0.0b30
4
4
  Summary: Python implementation of LabFREED building blocks
5
5
  Author-email: Reto Thürer <thuerer.r@buchi.com>
6
6
  Requires-Python: >=3.11
@@ -2,7 +2,7 @@
2
2
  Python implementation of LabFREED building blocks
3
3
  '''
4
4
 
5
- __version__ = "1.0.0b28"
5
+ __version__ = "1.0.0b30"
6
6
 
7
7
  from labfreed.pac_id import * # noqa: F403
8
8
  from labfreed.pac_cat import * # noqa: F403
@@ -1,6 +1,6 @@
1
1
 
2
2
  from abc import ABC
3
- from datetime import datetime
3
+ from datetime import datetime, date
4
4
  import re
5
5
  from typing import Annotated, Any, Literal, Union, get_args
6
6
  from urllib.parse import urlparse
@@ -43,7 +43,7 @@ class AttributeItemsElementBase(LabFREED_BaseModel, ABC):
43
43
 
44
44
  class DateTimeAttributeItemsElement(AttributeItemsElementBase):
45
45
  type: Literal["datetime"] = "datetime"
46
- value: datetime
46
+ value: date | datetime
47
47
 
48
48
  @field_validator('value', mode='after')
49
49
  def set_utc__if_naive(cls, value):
@@ -1,10 +1,11 @@
1
1
  from enum import Enum
2
+ from functools import wraps
2
3
  import json
3
4
  import logging
4
5
  from typing import Any, Protocol
5
6
  from urllib.parse import unquote, unquote_plus
6
7
 
7
- from flask import Blueprint, current_app, redirect, url_for, send_from_directory
8
+ from flask import Blueprint, current_app, make_response, redirect, url_for, send_from_directory
8
9
  from labfreed.pac_attributes.api_data_models.request import AttributeRequestData
9
10
  from labfreed.pac_attributes.server.server import AttributeGroupDataSource, AttributeServerRequestHandler, InvalidRequestError, TranslationDataSource
10
11
 
@@ -75,6 +76,7 @@ class AttributeFlaskApp(Flask):
75
76
 
76
77
 
77
78
  @bp.get("/<path:pac_id_url_encoded>", strict_slashes=False)
79
+ @cors_attributes
78
80
  def handle_attribute_request(pac_id_url_encoded):
79
81
 
80
82
  if authenticator and not authenticator(request):
@@ -161,6 +163,26 @@ class AttributeFlaskApp(Flask):
161
163
  return bp
162
164
 
163
165
 
166
+ def cors_attributes(fn):
167
+ @wraps(fn)
168
+ def wrapper(*args, **kwargs):
169
+ # Preflight
170
+ if request.method == "OPTIONS":
171
+ response = make_response()
172
+ response.headers["Access-Control-Allow-Origin"] = "*"
173
+ response.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS"
174
+ response.headers["Access-Control-Allow-Headers"] = "Content-Type, Authorization"
175
+ response.headers["Access-Control-Max-Age"] = "86400"
176
+ return response
177
+
178
+ # Actual request
179
+ response = make_response(fn(*args, **kwargs))
180
+ response.headers["Access-Control-Allow-Origin"] = "*"
181
+ return response
182
+
183
+ return wrapper
184
+
185
+
164
186
 
165
187
 
166
188
 
File without changes
File without changes
File without changes
File without changes
File without changes