dmart 1.4.40.post8__py3-none-any.whl → 1.4.40.post10__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.
dmart/dmart.py CHANGED
@@ -732,30 +732,61 @@ def main():
732
732
  print(f"Error initializing sample spaces: {e}")
733
733
  sys.exit(1)
734
734
  case "migrate":
735
- from alembic.config import Config
736
- from alembic import command
737
-
735
+ import configparser
736
+ import tempfile
737
+
738
738
  dmart_root = Path(__file__).resolve().parent
739
739
  alembic_ini_path = dmart_root / "alembic.ini"
740
- alembic_cfg = Config(str(alembic_ini_path))
741
- alembic_cfg.set_main_option("script_location", str(dmart_root / "alembic"))
740
+
741
+ if not alembic_ini_path.exists():
742
+ print(f"Error: alembic.ini not found at {alembic_ini_path}")
743
+ sys.exit(1)
744
+
745
+ config = configparser.ConfigParser()
746
+ config.read(alembic_ini_path)
742
747
 
743
748
  if "sqlite" in settings.database_driver:
744
749
  db_url = f"{settings.database_driver}:///{settings.database_name}"
745
750
  else:
746
751
  db_url = f"{settings.database_driver}://{settings.database_username}:{settings.database_password}@{settings.database_host}:{settings.database_port}/{settings.database_name}"
747
752
 
748
- alembic_cfg.set_main_option("sqlalchemy.url", db_url)
749
-
750
- # Add dmart package to sys.path to allow alembic to find models
751
- sys.path.insert(0, str(dmart_root.parent))
753
+ config.set('alembic', 'sqlalchemy.url', db_url)
754
+ config.set('alembic', 'script_location', str(dmart_root / "alembic"))
755
+ config.set('alembic', 'prepend_sys_path', str(dmart_root.parent))
752
756
 
757
+ temp_config_path = ""
753
758
  try:
754
- command.upgrade(alembic_cfg, "head")
755
- print("Database migration completed successfully.")
756
- except Exception as e:
757
- print(f"Error during database migration: {e}")
758
- sys.exit(1)
759
+ with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix=".ini") as temp_config_file:
760
+ config.write(temp_config_file)
761
+ temp_config_path = temp_config_file.name
762
+
763
+ alembic_cli_args = sys.argv[1:]
764
+ if not alembic_cli_args:
765
+ alembic_cli_args = ["upgrade", "head"]
766
+
767
+ command = [sys.executable, "-m", "alembic", "-c", temp_config_path] + alembic_cli_args
768
+
769
+ result = subprocess.run(command, capture_output=True, text=True, check=False)
770
+
771
+ if result.returncode == 0:
772
+ print("Alembic command finished.")
773
+ if result.stdout:
774
+ print(result.stdout)
775
+ if result.stderr:
776
+ print(result.stderr)
777
+ else:
778
+ print(f"Error during alembic command (exit code: {result.returncode}):")
779
+ if result.stdout:
780
+ print("--- stdout ---")
781
+ print(result.stdout)
782
+ if result.stderr:
783
+ print("--- stderr ---")
784
+ print(result.stderr)
785
+ sys.exit(1)
786
+
787
+ finally:
788
+ if temp_config_path and os.path.exists(temp_config_path):
789
+ os.remove(temp_config_path)
759
790
 
760
791
  if __name__ == "__main__":
761
792
  main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dmart
3
- Version: 1.4.40.post8
3
+ Version: 1.4.40.post10
4
4
  Requires-Python: >=3.11
5
5
  Requires-Dist: fastapi
6
6
  Requires-Dist: pydantic
@@ -28,6 +28,7 @@ Requires-Dist: orjson
28
28
  Requires-Dist: prompt_toolkit
29
29
  Requires-Dist: rich
30
30
  Requires-Dist: requests
31
+ Requires-Dist: alembic
31
32
  Provides-Extra: extra
32
33
  Requires-Dist: jsf; extra == "extra"
33
34
  Requires-Dist: types-psutil; extra == "extra"
@@ -7,7 +7,7 @@ dmart/config.ini.sample,sha256=AADMdwG07zRV_cAGMoOorHQaqzTTL2WEIC_mPWjIslE,159
7
7
  dmart/conftest.py,sha256=0ry_zeCmdBNLbm5q115b-pkOrUFYxdsOUXbIMkr7E5Y,362
8
8
  dmart/curl.sh,sha256=lmHSFVr5ft-lc5Aq9LfvKyWfntrfYbnirhzx1EGjp_A,15743
9
9
  dmart/data_generator.py,sha256=CnE-VHEeX7-lAXtqCgbRqR9WHjTuOgeiZcviYrHAmho,2287
10
- dmart/dmart.py,sha256=F2rw4410FIVrkG09fv385uAJAaLhLejbNTY_JjmtKVg,29557
10
+ dmart/dmart.py,sha256=Jiw1lzo1r_xEo1JXlI_gsHMcgl6lPkT1ErQmphcCefw,30855
11
11
  dmart/get_settings.py,sha256=Sbe2WCoiK398E7HY4SNLfDN_GmE8knR4M-YJWF31jcg,153
12
12
  dmart/hypercorn_config.toml,sha256=-eryppEG8HBOM_KbFc4dTQePnpyfoW9ZG5aUATU_6yM,50
13
13
  dmart/info.json,sha256=u-MRDFZVj6_3IVamajI201LZqjNJLkGGr20IsyB4BtQ,123
@@ -482,8 +482,8 @@ dmart/utils/ticket_sys_utils.py,sha256=9QAlW2iiy8KyxQRBDj_WmzS5kKb0aYJmGwd4qzmGV
482
482
  dmart/utils/web_notifier.py,sha256=QM87VVid2grC5lK3NdS1yzz0z1wXljr4GChJOeK86W4,843
483
483
  dmart/utils/templates/activation.html.j2,sha256=XAMKCdoqONoc4ZQucD0yV-Pg5DlHHASZrTVItNS-iBE,640
484
484
  dmart/utils/templates/reminder.html.j2,sha256=aoS8bTs56q4hjAZKsb0jV9c-PIURBELuBOpT_qPZNVU,639
485
- dmart-1.4.40.post8.dist-info/METADATA,sha256=jOcpIysg1mVFbXRJsXwmfXHc_gJpFMZMbu2BKLI_H74,2531
486
- dmart-1.4.40.post8.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
487
- dmart-1.4.40.post8.dist-info/entry_points.txt,sha256=N832M4wG8d2GDw1xztKRVM3TnxpY2QDzvdFE8XaWaG8,43
488
- dmart-1.4.40.post8.dist-info/top_level.txt,sha256=zJo4qk9fUW0BGIR9f4DCfpxaXbvQXH9izIOom6JsyAo,6
489
- dmart-1.4.40.post8.dist-info/RECORD,,
485
+ dmart-1.4.40.post10.dist-info/METADATA,sha256=zmK0XLtfnmcQThoesQ22KKN7yCrJZxjgZ6UR9Lzkp0Y,2555
486
+ dmart-1.4.40.post10.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
487
+ dmart-1.4.40.post10.dist-info/entry_points.txt,sha256=N832M4wG8d2GDw1xztKRVM3TnxpY2QDzvdFE8XaWaG8,43
488
+ dmart-1.4.40.post10.dist-info/top_level.txt,sha256=zJo4qk9fUW0BGIR9f4DCfpxaXbvQXH9izIOom6JsyAo,6
489
+ dmart-1.4.40.post10.dist-info/RECORD,,