iris-pex-embedded-python 3.5.3b4__tar.gz → 3.5.4b1__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.
Files changed (97) hide show
  1. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/PKG-INFO +1 -1
  2. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/pyproject.toml +1 -1
  3. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_cli.py +5 -1
  4. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_utils.py +36 -16
  5. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/PKG-INFO +1 -1
  6. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/LICENSE +0 -0
  7. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/README.md +0 -0
  8. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/setup.cfg +0 -0
  9. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/setup.py +0 -0
  10. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/__init__.py +0 -0
  11. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/BusinessOperation.cls +0 -0
  12. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/BusinessProcess.cls +0 -0
  13. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/BusinessService.cls +0 -0
  14. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Common.cls +0 -0
  15. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Director.cls +0 -0
  16. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Duplex/Operation.cls +0 -0
  17. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Duplex/Process.cls +0 -0
  18. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Duplex/Service.cls +0 -0
  19. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/InboundAdapter.cls +0 -0
  20. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Message.cls +0 -0
  21. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/OutboundAdapter.cls +0 -0
  22. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PickleMessage.cls +0 -0
  23. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Duplex.cls +0 -0
  24. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Ack.cls +0 -0
  25. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Poll.cls +0 -0
  26. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Start.cls +0 -0
  27. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/PrivateSession/Message/Stop.cls +0 -0
  28. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Test.cls +0 -0
  29. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/PEX/Utils.cls +0 -0
  30. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/cls/Grongier/Service/WSGI.cls +0 -0
  31. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/__init__.py +0 -0
  32. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/__main__.py +0 -0
  33. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/_business_host.py +0 -0
  34. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/_cli.py +0 -0
  35. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/_common.py +0 -0
  36. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/_director.py +0 -0
  37. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/_utils.py +0 -0
  38. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/grongier/pex/wsgi/handlers.py +0 -0
  39. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/__init__.py +0 -0
  40. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/__main__.py +0 -0
  41. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_async_request.py +0 -0
  42. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_business_host.py +0 -0
  43. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_business_operation.py +0 -0
  44. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_business_process.py +0 -0
  45. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_business_service.py +0 -0
  46. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_common.py +0 -0
  47. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_debugpy.py +0 -0
  48. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_decorators.py +0 -0
  49. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_director.py +0 -0
  50. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_dispatch.py +0 -0
  51. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_generator_request.py +0 -0
  52. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_inbound_adapter.py +0 -0
  53. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_iris.py +0 -0
  54. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_log_manager.py +0 -0
  55. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_message.py +0 -0
  56. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_message_validator.py +0 -0
  57. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_outbound_adapter.py +0 -0
  58. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_private_session_duplex.py +0 -0
  59. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_private_session_process.py +0 -0
  60. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_remote.py +0 -0
  61. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/_serialization.py +0 -0
  62. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/BusinessOperation.cls +0 -0
  63. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/BusinessProcess.cls +0 -0
  64. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/BusinessService.cls +0 -0
  65. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Common.cls +0 -0
  66. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Director.cls +0 -0
  67. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Duplex/Operation.cls +0 -0
  68. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Duplex/Process.cls +0 -0
  69. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Duplex/Service.cls +0 -0
  70. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Generator/Message/Ack.cls +0 -0
  71. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Generator/Message/Poll.cls +0 -0
  72. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Generator/Message/Start.cls +0 -0
  73. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Generator/Message/StartPickle.cls +0 -0
  74. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Generator/Message/Stop.cls +0 -0
  75. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/InboundAdapter.cls +0 -0
  76. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Message/JSONSchema.cls +0 -0
  77. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Message.cls +0 -0
  78. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/OutboundAdapter.cls +0 -0
  79. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PickleMessage.cls +0 -0
  80. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PrivateSession/Duplex.cls +0 -0
  81. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PrivateSession/Message/Ack.cls +0 -0
  82. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PrivateSession/Message/Poll.cls +0 -0
  83. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PrivateSession/Message/Start.cls +0 -0
  84. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/PrivateSession/Message/Stop.cls +0 -0
  85. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Projection.cls +0 -0
  86. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Service/Remote/Handler.cls +0 -0
  87. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Service/Remote/Rest/v1.cls +0 -0
  88. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Service/WSGI.cls +0 -0
  89. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Test.cls +0 -0
  90. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Utils.cls +0 -0
  91. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/cls/IOP/Wrapper.cls +0 -0
  92. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iop/wsgi/handlers.py +0 -0
  93. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/SOURCES.txt +0 -0
  94. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/dependency_links.txt +0 -0
  95. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/entry_points.txt +0 -0
  96. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/requires.txt +0 -0
  97. {iris_pex_embedded_python-3.5.3b4 → iris_pex_embedded_python-3.5.4b1}/src/iris_pex_embedded_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.5.3b4
3
+ Version: 3.5.4b1
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License
@@ -3,7 +3,7 @@ requires = ["setuptools", "wheel"]
3
3
 
4
4
  [project]
5
5
  name = "iris_pex_embedded_python"
6
- version = "3.5.3b4"
6
+ version = "3.5.4b1"
7
7
  description = "Iris Interoperability based on Embedded Python"
8
8
  readme = "README.md"
9
9
  authors = [
@@ -48,6 +48,7 @@ class CommandArgs:
48
48
  classname: Optional[str] = None
49
49
  body: Optional[str] = None
50
50
  namespace: Optional[str] = None
51
+ force_local: bool = False
51
52
 
52
53
  class Command:
53
54
  def __init__(self, args: CommandArgs):
@@ -147,7 +148,7 @@ class Command:
147
148
  if migrate_path is not None:
148
149
  if not os.path.isabs(migrate_path):
149
150
  migrate_path = os.path.join(os.getcwd(), migrate_path)
150
- _Utils.migrate_remote(migrate_path)
151
+ _Utils.migrate_remote(migrate_path, force_local=self.args.force_local)
151
152
 
152
153
  def _handle_log(self) -> None:
153
154
  if self.args.log == 'not_set':
@@ -190,6 +191,9 @@ def create_parser() -> argparse.ArgumentParser:
190
191
  test.add_argument('-C', '--classname', help='test classname', nargs='?', const='not_set')
191
192
  test.add_argument('-B', '--body', help='test body', nargs='?', const='not_set')
192
193
 
194
+ migrate = main_parser.add_argument_group('migrate arguments')
195
+ migrate.add_argument('--force-local', help='force local migration, skip remote even if REMOTE_SETTINGS is present', action='store_true')
196
+
193
197
  namespace = main_parser.add_argument_group('namespace arguments')
194
198
  namespace.add_argument('-n', '--namespace', help='set namespace', nargs='?', const='not_set')
195
199
 
@@ -23,6 +23,7 @@ class RemoteSettings(TypedDict, total=False):
23
23
  remote_folder: str # Optional: the folder to use (default: '')
24
24
  username: str # Optional: the username to use to connect (default: '')
25
25
  password: str # Optional: the password to use to connect (default: '')
26
+ verify_ssl: bool # Optional: verify SSL certificates (default: True, set to False for self-signed certs)
26
27
 
27
28
  class _Utils():
28
29
  @staticmethod
@@ -261,7 +262,7 @@ class _Utils():
261
262
  return module
262
263
 
263
264
  @staticmethod
264
- def migrate_remote(filename=None):
265
+ def migrate_remote(filename=None, force_local=False):
265
266
  """
266
267
  Read a settings file from the filename
267
268
  If the settings.py file has a key 'REMOTE_SETTINGS' then it will use the value of that key
@@ -273,6 +274,7 @@ class _Utils():
273
274
  * 'remote_folder': the folder to use (optional, default is '')
274
275
  * 'username': the username to use to connect (optional, default is '')
275
276
  * 'password': the password to use to connect (optional, default is '')
277
+ * 'verify_ssl': verify SSL certificates (optional, default is True)
276
278
 
277
279
  The remote host is a rest API that will be used to register the components
278
280
  The payload will be a json object with the following keys:
@@ -283,11 +285,15 @@ class _Utils():
283
285
  * 'data': the data of the file, it will be an UTF-8 encoded string
284
286
 
285
287
  'body' will be constructed with all the files in the folder if the folder is not empty else use root folder of settings.py
288
+
289
+ Args:
290
+ filename: Path to the settings file
291
+ force_local: If True, skip remote migration even if REMOTE_SETTINGS is present
286
292
  """
287
293
  settings, path = _Utils._load_settings(filename)
288
294
  remote_settings: Optional[RemoteSettings] = getattr(settings, 'REMOTE_SETTINGS', None) if settings else None
289
295
 
290
- if not remote_settings:
296
+ if not remote_settings or force_local:
291
297
  _Utils.migrate(filename)
292
298
  return
293
299
 
@@ -321,21 +327,35 @@ class _Utils():
321
327
  'data': data
322
328
  })
323
329
 
330
+ # Get SSL verification setting (default to True for security)
331
+ verify_ssl = remote_settings.get('verify_ssl', True)
332
+
333
+ # Disable SSL warnings if verify_ssl is False
334
+ if not verify_ssl:
335
+ import urllib3
336
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
337
+
324
338
  # send the request to the remote settings
325
- response = requests.put(
326
- url=f"{remote_settings['url']}/api/iop/migrate",
327
- json=payload,
328
- headers={
329
- 'Content-Type': 'application/json',
330
- 'Accept': 'application/json'
331
- },
332
- auth=(remote_settings.get('username', ''), remote_settings.get('password', '')),
333
- timeout=10
334
- )
335
-
336
- print(f"Response from remote migration:\n{response.text}")
337
-
338
- response.raise_for_status() # Raise an error for bad responses
339
+ try:
340
+ response = requests.put(
341
+ url=f"{remote_settings['url']}/api/iop/migrate",
342
+ json=payload,
343
+ headers={
344
+ 'Content-Type': 'application/json',
345
+ 'Accept': 'application/json'
346
+ },
347
+ auth=(remote_settings.get('username', ''), remote_settings.get('password', '')),
348
+ timeout=10,
349
+ verify=verify_ssl
350
+ )
351
+
352
+ print(f"Response from remote migration:\n{response.text}")
353
+
354
+ response.raise_for_status() # Raise an error for bad responses
355
+ except requests.exceptions.SSLError as e:
356
+ print(f"SSL Error: {e}")
357
+ print("If you're using a self-signed certificate, set 'verify_ssl': False in REMOTE_SETTINGS")
358
+ raise
339
359
 
340
360
  @staticmethod
341
361
  def migrate(filename=None):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris_pex_embedded_python
3
- Version: 3.5.3b4
3
+ Version: 3.5.4b1
4
4
  Summary: Iris Interoperability based on Embedded Python
5
5
  Author-email: grongier <guillaume.rongier@intersystems.com>
6
6
  License: MIT License