labfreed 1.0.0b29__tar.gz → 1.0.0b31__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.0b29 → labfreed-1.0.0b31}/PKG-INFO +2 -1
  2. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/__init__.py +1 -1
  3. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/app_factory.py +20 -12
  4. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/pythonic/attribute_server_factory.py +4 -1
  5. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/resolver_config.py +4 -2
  6. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/pyproject.toml +1 -0
  7. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/.github/workflows/pypi-publish.yml +0 -0
  9. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/.github/workflows/run-tests.yml +0 -0
  10. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/CHANGELOG.md +0 -0
  11. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/LICENSE +0 -0
  12. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/README.md +0 -0
  13. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/app/app_infrastructure.py +0 -0
  14. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/app/formatted_print.py +0 -0
  15. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/app/pac_info/pac_info.py +0 -0
  16. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/lib/attribute.py +0 -0
  17. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/lib/bp_landing_page.py +0 -0
  18. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/lib/utils.py +0 -0
  19. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cancel.svg +0 -0
  20. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DC.svg +0 -0
  21. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DM.svg +0 -0
  22. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DP.svg +0 -0
  23. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DR.svg +0 -0
  24. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-DS.svg +0 -0
  25. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MC.svg +0 -0
  26. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MD.svg +0 -0
  27. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MS.svg +0 -0
  28. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/cat-MX.svg +0 -0
  29. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/external-link.svg +0 -0
  30. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/logo.svg +0 -0
  31. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/menu.svg +0 -0
  32. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/search.svg +0 -0
  33. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/styles.css +0 -0
  34. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/styles_brand.css +0 -0
  35. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/static/styles_pac_info.css +0 -0
  36. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/flash_error_messages.jinja.html +0 -0
  37. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/footer.jinja.html +0 -0
  38. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/main.jinja.html +0 -0
  39. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/navbar.jinja.html +0 -0
  40. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/base-components.jinja.html +0 -0
  41. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/card-components.jinja.html +0 -0
  42. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/card.jinja.html +0 -0
  43. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_info/pac_info.jinja.html +0 -0
  44. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_issuer_error.jinja.html +0 -0
  45. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_extended/pac_issuer_lib/templates/pac_issuer_landing_page.jinja.html +0 -0
  46. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/labfreed_infrastructure.py +0 -0
  47. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/__init__.py +0 -0
  48. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/api_data_models/request.py +0 -0
  49. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/api_data_models/response.py +0 -0
  50. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/api_data_models/server_capabilities_response.py +0 -0
  51. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/client/client.py +0 -0
  52. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/client/client_attribute_group.py +0 -0
  53. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/pythonic/excel_attribute_data_source.py +0 -0
  54. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/pythonic/py_attributes.py +0 -0
  55. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/pythonic/py_dict_data_source.py +0 -0
  56. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/server/__init__.py +0 -0
  57. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/server/attribute_data_sources.py +0 -0
  58. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/server/server.py +0 -0
  59. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/server/translation_data_sources.py +0 -0
  60. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_attributes/well_knonw_attribute_keys.py +0 -0
  61. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_cat/__init__.py +0 -0
  62. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_cat/category_base.py +0 -0
  63. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_cat/pac_cat.py +0 -0
  64. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_cat/predefined_categories.py +0 -0
  65. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/__init__.py +0 -0
  66. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/extension.py +0 -0
  67. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/id_segment.py +0 -0
  68. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/pac_id.py +0 -0
  69. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/url_parser.py +0 -0
  70. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id/url_serializer.py +0 -0
  71. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/__init__.py +0 -0
  72. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/cit_v1.py +0 -0
  73. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/resolver.py +0 -0
  74. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/resolver_config_common.py +0 -0
  75. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/pac_id_resolver/services.py +0 -0
  76. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/qr/__init__.py +0 -0
  77. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/qr/generate_qr.py +0 -0
  78. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/__init__.py +0 -0
  79. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/pythonic/__init__.py +0 -0
  80. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/pythonic/data_table.py +0 -0
  81. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/pythonic/pyTREX.py +0 -0
  82. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/pythonic/quantity.py +0 -0
  83. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/table_segment.py +0 -0
  84. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/trex.py +0 -0
  85. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/trex_base_models.py +0 -0
  86. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/trex/value_segments.py +0 -0
  87. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/utilities/base36.py +0 -0
  88. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/utilities/ensure_utc_time.py +0 -0
  89. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/utilities/translations.py +0 -0
  90. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_extensions/__init__.py +0 -0
  91. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_extensions/default_extension_interpreters.py +0 -0
  92. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_extensions/display_name_extension.py +0 -0
  93. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_extensions/text_base36_extension.py +0 -0
  94. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_extensions/trex_extension.py +0 -0
  95. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/gs1/__init__.py +0 -0
  96. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/gs1/gs1_ai_enum_sorted.py +0 -0
  97. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/labfreed/well_known_keys.py +0 -0
  98. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/unece/UneceUnits.json +0 -0
  99. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/unece/__init__.py +0 -0
  100. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed/well_known_keys/unece/unece_units.py +0 -0
  101. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed_experimental/pac_disco/ble_central.py +0 -0
  102. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed_experimental/pac_disco/ble_peripheral.py +0 -0
  103. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed_experimental/pac_disco/ble_uuid.py +0 -0
  104. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/labfreed_experimental/pac_disco/pac_disco_demo.py +0 -0
  105. {labfreed-1.0.0b29 → labfreed-1.0.0b31}/tst_attr.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labfreed
3
- Version: 1.0.0b29
3
+ Version: 1.0.0b31
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
@@ -33,6 +33,7 @@ Requires-Dist: ruff>=0.11.5 ; extra == "dev"
33
33
  Requires-Dist: bleak>=2.0.0 ; extra == "experimental"
34
34
  Requires-Dist: Flask>=3.1.1 ; extra == "extended"
35
35
  Requires-Dist: openpyxl>=3.1.5 ; extra == "extended"
36
+ Requires-Dist: flask-cors>=6.0.2 ; extra == "extended"
36
37
  Project-URL: Documentation, https://github.com/retothuerer/LabFREED?tab=readme-ov-file#readme
37
38
  Project-URL: Homepage, https://github.com/retothuerer/LabFREED
38
39
  Project-URL: Source, https://github.com/retothuerer/LabFREED
@@ -2,7 +2,7 @@
2
2
  Python implementation of LabFREED building blocks
3
3
  '''
4
4
 
5
- __version__ = "1.0.0b29"
5
+ __version__ = "1.0.0b31"
6
6
 
7
7
  from labfreed.pac_id import * # noqa: F403
8
8
  from labfreed.pac_cat import * # noqa: F403
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass
2
- from functools import cache, partial, partialmethod
2
+ from functools import cache, partial, partialmethod, wraps
3
3
  import logging
4
4
  import os
5
5
  from pathlib import Path
@@ -12,7 +12,9 @@ import jinja2
12
12
  from labfreed.labfreed_extended.pac_issuer_lib.lib.utils import add_ga_params, add_trace_id_params
13
13
  from pydantic import BaseModel, Field
14
14
 
15
- from flask import Blueprint, Flask, Response, current_app, flash, render_template, request, send_from_directory, session, url_for
15
+ from flask import Blueprint, Flask, Response, current_app, flash, make_response, render_template, request, send_from_directory, session, url_for
16
+ from flask_cors import CORS
17
+
16
18
  from werkzeug.middleware.proxy_fix import ProxyFix
17
19
 
18
20
 
@@ -106,6 +108,20 @@ class IssuerFlaskAppFactory():
106
108
  resolver_macros=resolver_macros,
107
109
  use_issuer_resolver_config = use_issuer_resolver_config)
108
110
  app.register_blueprint(bp)
111
+
112
+ CORS(
113
+ app,
114
+ resources={
115
+ r"/resolver_config(\.ya?ml)?": {
116
+ "origins": ["*"],
117
+ "methods": ["GET"],
118
+ },
119
+ r"/attributes/.*": {
120
+ "origins": ["*"],
121
+ "methods": ["GET"]
122
+ },
123
+ },
124
+ )
109
125
  return app
110
126
 
111
127
 
@@ -373,6 +389,7 @@ class IssuerFlaskAppFactory():
373
389
  def resolver_configuration():
374
390
  return Response(bp._resolver_configuration, mimetype="application/x-yaml")
375
391
 
392
+
376
393
 
377
394
  @bp_landing_page.get('/info_card')
378
395
  def pac_card():
@@ -479,15 +496,6 @@ render_context_utils = {
479
496
 
480
497
 
481
498
 
482
-
483
-
484
-
485
-
486
-
487
-
488
-
489
-
490
-
491
499
  def attribute_data_from_module(module, default_language):
492
500
  try:
493
501
  ds = module.data_sources
@@ -508,5 +516,5 @@ def attribute_data_from_module(module, default_language):
508
516
  return attribute_data
509
517
 
510
518
 
511
-
519
+
512
520
 
@@ -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
 
@@ -161,6 +162,8 @@ class AttributeFlaskApp(Flask):
161
162
  return bp
162
163
 
163
164
 
165
+
166
+
164
167
 
165
168
 
166
169
 
@@ -1,9 +1,10 @@
1
1
  import json
2
2
  import re
3
- from typing import Self
3
+ from typing import Literal, Self
4
4
  from pydantic import Field, field_validator, model_validator
5
5
  import yaml
6
6
  import jsonpath_ng.ext as jsonpath
7
+ from urllib.parse import quote as url_encode
7
8
 
8
9
 
9
10
  from labfreed.pac_id_resolver.services import Service, ServiceGroup
@@ -105,7 +106,7 @@ class ResolverConfigBlock(LabFREED_BaseModel):
105
106
 
106
107
 
107
108
  class ResolverConfig(LabFREED_BaseModel):
108
- schema_version: str = Field(default='2.0')
109
+ schema_version: Literal["2.0"] = Field(default='2.0')
109
110
  '''Resolver Configuration'''
110
111
  origin: str = ''
111
112
  model_config = {
@@ -301,6 +302,7 @@ class ResolverConfig(LabFREED_BaseModel):
301
302
  res = self._evaluate_jsonpath(pac_id_json, expanded_placeholder) or ['']
302
303
  url:str = url.replace(f'{{{placeholder}}}', str(res[0]))
303
304
  url = url.strip()
305
+ url = url_encode(url)
304
306
  # res = self.substitute_jsonpath_expressions(expanded_placeholder, Patterns.jsonpath.value, as_bool=False)
305
307
  # url = url.replace(f'{{{placeholder}}}', res)
306
308
  return url
@@ -44,6 +44,7 @@ dev = [
44
44
  extended = [
45
45
  "Flask>=3.1.1",
46
46
  "openpyxl>=3.1.5",
47
+ "flask-cors>=6.0.2"
47
48
  ]
48
49
  experimental = [
49
50
  "bleak>=2.0.0"
File without changes
File without changes
File without changes
File without changes