orchestrator-core 4.0.2__py3-none-any.whl → 4.0.4__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.
orchestrator/__init__.py CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  """This is the orchestrator workflow engine."""
15
15
 
16
- __version__ = "4.0.2"
16
+ __version__ = "4.0.4"
17
17
 
18
18
  from orchestrator.app import OrchestratorCore
19
19
  from orchestrator.settings import app_settings
@@ -27,14 +27,28 @@ logger = structlog.get_logger(__name__)
27
27
  def has_table_column(table_name: str, column_name: str, conn: sa.engine.Connection) -> bool:
28
28
  """Checks if the specified column exists in a given table.
29
29
 
30
+ inspector.get_columns raises an exception if the table does not exist, so we catch that exception and return False.
31
+ This is useful for migrations where you want to ensure that a column exists before performing operations on it.
32
+
30
33
  :param table_name: Name of the database table
31
34
  :param column_name: Name of the column to check
32
35
  :param conn: SQLAlchemy database Connection
33
- :return: True if column exists, False otherwise
36
+ :return: True if the column exists, False otherwise
34
37
  """
35
- inspector = sa.inspect(conn.engine)
36
- columns = inspector.get_columns(table_name)
37
- return any(col["name"] == column_name for col in columns)
38
+ result = conn.execute(
39
+ sa.text(
40
+ """
41
+ SELECT column_name
42
+ FROM information_schema.columns
43
+ WHERE table_name = :table_name and column_name = :column_name
44
+ """
45
+ ),
46
+ {
47
+ "table_name": table_name,
48
+ "column_name": column_name,
49
+ },
50
+ )
51
+ return result.first() is not None
38
52
 
39
53
 
40
54
  def get_resource_type_id_by_name(conn: sa.engine.Connection, name: str) -> UUID:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orchestrator-core
3
- Version: 4.0.2
3
+ Version: 4.0.4
4
4
  Summary: This is the orchestrator workflow engine.
5
5
  Requires-Python: >=3.11,<3.14
6
6
  Classifier: Intended Audience :: Information Technology
@@ -28,7 +28,7 @@ Classifier: Programming Language :: Python :: 3.11
28
28
  Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
29
29
  Classifier: Topic :: Internet :: WWW/HTTP
30
30
  License-File: LICENSE
31
- Requires-Dist: alembic==1.15.2
31
+ Requires-Dist: alembic==1.16.1
32
32
  Requires-Dist: anyio>=3.7.0
33
33
  Requires-Dist: click==8.*
34
34
  Requires-Dist: deprecated
@@ -39,7 +39,7 @@ Requires-Dist: more-itertools~=10.7.0
39
39
  Requires-Dist: itsdangerous
40
40
  Requires-Dist: Jinja2==3.1.6
41
41
  Requires-Dist: orjson==3.10.18
42
- Requires-Dist: prometheus-client==0.21.1
42
+ Requires-Dist: prometheus-client==0.22.0
43
43
  Requires-Dist: psycopg2-binary==2.9.10
44
44
  Requires-Dist: pydantic[email]~=2.8.2
45
45
  Requires-Dist: pydantic-settings~=2.9.1
@@ -49,7 +49,7 @@ Requires-Dist: pytz==2025.2
49
49
  Requires-Dist: redis==5.1.1
50
50
  Requires-Dist: schedule==1.1.0
51
51
  Requires-Dist: semver==3.0.4
52
- Requires-Dist: sentry-sdk[fastapi]~=2.28.0
52
+ Requires-Dist: sentry-sdk[fastapi]~=2.29.1
53
53
  Requires-Dist: SQLAlchemy==2.0.41
54
54
  Requires-Dist: SQLAlchemy-Utils==0.41.2
55
55
  Requires-Dist: structlog
@@ -1,4 +1,4 @@
1
- orchestrator/__init__.py,sha256=Qw1MWdAlxKBXK6Ic87GUazVxI1FLN_WQhk1nsY_3DOY,1063
1
+ orchestrator/__init__.py,sha256=YVe09WczpF4MK2XPRNEAfLMjIE3YCIBlDRgfibiP9U8,1063
2
2
  orchestrator/app.py,sha256=7UrXKjBKNSEaSSXAd5ww_RdMFhFqE4yvfj8faS2MzAA,12089
3
3
  orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
4
4
  orchestrator/log_config.py,sha256=1tPRX5q65e57a6a_zEii_PFK8SzWT0mnA5w2sKg4hh8,1853
@@ -210,7 +210,7 @@ orchestrator/metrics/subscriptions.py,sha256=vC1O8VmTq5oJxNrn5CU99Rf8cxzdyhc7tXb
210
210
  orchestrator/migrations/README,sha256=heMzebYwlGhnE8_4CWJ4LS74WoEZjBy-S-mIJRxAEKI,39
211
211
  orchestrator/migrations/alembic.ini,sha256=kMoADqhGeubU8xanILNaqm4oixLy9m4ngYtdGpZcc7I,873
212
212
  orchestrator/migrations/env.py,sha256=M_cPoAL2axuuup5fvMy8I_WTPHEw0RbPEHkhZ3QEGoE,3740
213
- orchestrator/migrations/helpers.py,sha256=3DCwivK54Ob27Cyw3NxB8CMcdHt0iO_XNxiGoC8sIB4,47509
213
+ orchestrator/migrations/helpers.py,sha256=CAGGKhxpmhyKGfYcO-SUCPfMTOCZPfEpkJrcm2MYfcE,47979
214
214
  orchestrator/migrations/script.py.mako,sha256=607Zrgp-Z-m9WGLt4wewN1QDOmHeifxcePUdADkSZyM,510
215
215
  orchestrator/migrations/templates/alembic.ini.j2,sha256=8v7UbKvOiWEbEKQa-Au3uONKUuYx6aflulYanZX6r2I,883
216
216
  orchestrator/migrations/templates/env.py.j2,sha256=LIt0ildZTZvNEx3imhy4GNzfFi_rPZg-8H7rGgrBOP8,2717
@@ -307,7 +307,7 @@ orchestrator/workflows/tasks/resume_workflows.py,sha256=MzJqlSXUvKStkT7NGzxZyRlf
307
307
  orchestrator/workflows/tasks/validate_product_type.py,sha256=paG-NAY1bdde3Adt8zItkcBKf5Pxw6f5ngGW6an6dYU,3192
308
308
  orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
309
309
  orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
310
- orchestrator_core-4.0.2.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
311
- orchestrator_core-4.0.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
312
- orchestrator_core-4.0.2.dist-info/METADATA,sha256=0K4VnR2HRvK77eLCByC7YbljK5sfL96lnmpIDiMIHWA,5070
313
- orchestrator_core-4.0.2.dist-info/RECORD,,
310
+ orchestrator_core-4.0.4.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
311
+ orchestrator_core-4.0.4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
312
+ orchestrator_core-4.0.4.dist-info/METADATA,sha256=EDGeOW4AxLgPbD6ZQDojlTPd8H3j4GOpD1vfWg-MgKA,5070
313
+ orchestrator_core-4.0.4.dist-info/RECORD,,