tune-dms 0.1.1__py3-none-any.whl → 0.1.2__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.
tune_dms/__init__.py CHANGED
@@ -1,25 +1,25 @@
1
- """
2
- TUNE DMS: desktop GUI automation for login and report generation.
3
- """
4
-
5
- from tune_dms.config import TuneConfig
6
- from tune_dms.launcher import (
7
- main as run_tune_reports,
8
- TuneReportGenerator,
9
- PartsPriceListParams,
10
- PartsByBinLocationParams,
11
- parts_price_list_report_download,
12
- parts_by_bin_location_report_download,
13
- )
14
-
15
- __all__ = [
16
- "TuneConfig",
17
- "run_tune_reports",
18
- "TuneReportGenerator",
19
- "PartsPriceListParams",
20
- "PartsByBinLocationParams",
21
- "parts_price_list_report_download",
22
- "parts_by_bin_location_report_download",
23
- ]
24
-
25
- __version__ = "0.1.0"
1
+ """
2
+ TUNE DMS: desktop GUI automation for login and report generation.
3
+ """
4
+
5
+ from tune_dms.config import TuneConfig
6
+ from tune_dms.launcher import (
7
+ main as run_tune_reports,
8
+ TuneReportGenerator,
9
+ PartsPriceListParams,
10
+ PartsByBinLocationParams,
11
+ parts_price_list_report_download,
12
+ parts_by_bin_location_report_download,
13
+ )
14
+
15
+ __all__ = [
16
+ "TuneConfig",
17
+ "run_tune_reports",
18
+ "TuneReportGenerator",
19
+ "PartsPriceListParams",
20
+ "PartsByBinLocationParams",
21
+ "parts_price_list_report_download",
22
+ "parts_by_bin_location_report_download",
23
+ ]
24
+
25
+ __version__ = "0.1.0"
tune_dms/config.py CHANGED
@@ -1,57 +1,57 @@
1
- """
2
- Configuration for TUNE DMS (desktop GUI automation).
3
- Users can set settings via environment variables or pass config programmatically.
4
- """
5
-
6
- import os
7
- from dataclasses import dataclass
8
- from typing import Optional
9
-
10
-
11
- def _load_dotenv_if_available() -> None:
12
- try:
13
- from dotenv import load_dotenv
14
- load_dotenv()
15
- except ImportError:
16
- pass
17
-
18
-
19
- @dataclass(frozen=True)
20
- class TuneConfig:
21
- """Configuration for TUNE DMS (desktop GUI automation)."""
22
-
23
- user_id: str
24
- password: str
25
- shortcut_path: str = r"C:\Users\Public\Desktop\TUNE.lnk"
26
- images_dir: Optional[str] = None
27
- reports_dir: Optional[str] = None
28
-
29
- @classmethod
30
- def from_env(
31
- cls,
32
- *,
33
- user_id: Optional[str] = None,
34
- password: Optional[str] = None,
35
- shortcut_path: Optional[str] = None,
36
- images_dir: Optional[str] = None,
37
- reports_dir: Optional[str] = None,
38
- load_dotenv: bool = True,
39
- ) -> "TuneConfig":
40
- """Build config from environment variables. Override any field by passing it explicitly."""
41
- if load_dotenv:
42
- _load_dotenv_if_available()
43
- return cls(
44
- user_id=user_id or os.getenv("TUNE_USER_ID") or "",
45
- password=password or os.getenv("TUNE_USER_PASSWORD") or "",
46
- shortcut_path=shortcut_path or os.getenv("TUNE_SHORTCUT_PATH") or cls.shortcut_path,
47
- images_dir=images_dir or os.getenv("TUNE_IMAGES_DIR"),
48
- reports_dir=reports_dir or os.getenv("TUNE_REPORTS_DIR"),
49
- )
50
-
51
- def validate(self) -> None:
52
- """Raise ValueError if required fields are missing."""
53
- if not self.user_id or not self.password:
54
- raise ValueError(
55
- "TUNE_USER_ID and TUNE_USER_PASSWORD must be set "
56
- "(via TuneConfig.from_env(), environment variables, or constructor)."
57
- )
1
+ """
2
+ Configuration for TUNE DMS (desktop GUI automation).
3
+ Users can set settings via environment variables or pass config programmatically.
4
+ """
5
+
6
+ import os
7
+ from dataclasses import dataclass
8
+ from typing import Optional
9
+
10
+
11
+ def _load_dotenv_if_available() -> None:
12
+ try:
13
+ from dotenv import load_dotenv
14
+ load_dotenv()
15
+ except ImportError:
16
+ pass
17
+
18
+
19
+ @dataclass(frozen=True)
20
+ class TuneConfig:
21
+ """Configuration for TUNE DMS (desktop GUI automation)."""
22
+
23
+ user_id: str
24
+ password: str
25
+ shortcut_path: str = r"C:\Users\Public\Desktop\TUNE.lnk"
26
+ images_dir: Optional[str] = None
27
+ reports_dir: Optional[str] = None
28
+
29
+ @classmethod
30
+ def from_env(
31
+ cls,
32
+ *,
33
+ user_id: Optional[str] = None,
34
+ password: Optional[str] = None,
35
+ shortcut_path: Optional[str] = None,
36
+ images_dir: Optional[str] = None,
37
+ reports_dir: Optional[str] = None,
38
+ load_dotenv: bool = True,
39
+ ) -> "TuneConfig":
40
+ """Build config from environment variables. Override any field by passing it explicitly."""
41
+ if load_dotenv:
42
+ _load_dotenv_if_available()
43
+ return cls(
44
+ user_id=user_id or os.getenv("TUNE_USER_ID") or "",
45
+ password=password or os.getenv("TUNE_USER_PASSWORD") or "",
46
+ shortcut_path=shortcut_path or os.getenv("TUNE_SHORTCUT_PATH") or cls.shortcut_path,
47
+ images_dir=images_dir or os.getenv("TUNE_IMAGES_DIR"),
48
+ reports_dir=reports_dir or os.getenv("TUNE_REPORTS_DIR"),
49
+ )
50
+
51
+ def validate(self) -> None:
52
+ """Raise ValueError if required fields are missing."""
53
+ if not self.user_id or not self.password:
54
+ raise ValueError(
55
+ "TUNE_USER_ID and TUNE_USER_PASSWORD must be set "
56
+ "(via TuneConfig.from_env(), environment variables, or constructor)."
57
+ )
@@ -1,24 +1,26 @@
1
- Metadata-Version: 2.4
2
- Name: tune-dms
3
- Version: 0.1.1
4
- Summary: TUNE DMS desktop GUI automation: login and report generation
5
- License-Expression: MIT
6
- Keywords: tune,dms,gui,automation,reports
7
- Classifier: Development Status :: 3 - Alpha
8
- Classifier: Intended Audience :: Developers
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.10
11
- Classifier: Programming Language :: Python :: 3.11
12
- Classifier: Programming Language :: Python :: 3.12
13
- Requires-Python: >=3.10
14
- Description-Content-Type: text/markdown
15
- Requires-Dist: pyautogui
16
-
17
- # tune-dms
18
-
19
- TUNE DMS desktop GUI automation: log in and run reports (e.g. Parts Price List, Parts by Bin Location) via keyboard/screen automation.
20
-
21
- Install: `pip install tune-dms`
22
- Or from repo root: `pip install -e ./packages/tune_dms`
23
-
24
- See the [main repo README](../README.md) for configuration and usage.
1
+ Metadata-Version: 2.4
2
+ Name: tune-dms
3
+ Version: 0.1.2
4
+ Summary: TUNE DMS desktop GUI automation: login and report generation
5
+ License-Expression: MIT
6
+ Project-URL: Homepage, https://github.com/Luen/RevNext-TUNE/
7
+ Project-URL: Repository, https://github.com/Luen/RevNext-TUNE/
8
+ Keywords: tune,dms,gui,automation,reports
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: pyautogui
18
+
19
+ # tune-dms
20
+
21
+ TUNE DMS desktop GUI automation: log in and run reports (e.g. Parts Price List, Parts by Bin Location) via keyboard/screen automation.
22
+
23
+ Install: `pip install tune-dms`
24
+ Or from repo root: `pip install -e ./packages/tune_dms`
25
+
26
+ See the [main repo README](../README.md) for configuration and usage.
@@ -1,5 +1,5 @@
1
- tune_dms/__init__.py,sha256=AqosmWxyT-43xMgfA-JECy3THgoasmH2WNU5lIkhIUo,617
2
- tune_dms/config.py,sha256=2E6V_T031ZpjsaO-mt1mF2KccBSBhPv9oL-9DJ8W4WU,1935
1
+ tune_dms/__init__.py,sha256=eOdh6GsBMGqRQX5WbL8UXkBCqvmoHKVCA5c6v4Bk4bw,592
2
+ tune_dms/config.py,sha256=jvAiO0-af8ME5OctBPx5vSUJdtNaIKK_mFdIQIOySUs,1878
3
3
  tune_dms/launcher.py,sha256=MJaZYnnZ0egdXxa0SegoA81nM37rYLgz91wvogm3I_s,36693
4
4
  tune_dms/images/confirm_save_as_dialog.png,sha256=zNTFAaV56FxEXlO8dtgrMmEzGqybIczkRVg3Fa5IFC0,1100
5
5
  tune_dms/images/excel_application_screen.png,sha256=vkmYg466hyyRHfvE2mHlaMxZ-Ob7Q-I_kj0_RRc9P0g,527
@@ -37,7 +37,7 @@ tune_dms/images/tune_select_franchise_toy_yellow.png,sha256=QgQom3rtEoJUAcRXYOt4
37
37
  tune_dms/images/tune_select_franchise_toy_yellow_box.png,sha256=hCy0pfVLychIUBqwEz0pg0NDiJWeaIUsppzqXMYoj-U,311
38
38
  tune_dms/images/tune_supplier_part_selection.png,sha256=diXleZHo4emsAhblyO8Z_v81uvdACVqUWLbi5hUdxHE,1213
39
39
  tune_dms/images/tune_x_button.png,sha256=LncxIEGnSdZpSdsWxQIfQ1oG04AseUgl41H30o6xaAs,313
40
- tune_dms-0.1.1.dist-info/METADATA,sha256=G0OpZPbxzzx3nrrvOqQIvwCiNcXGDz8vWHJ0uSeq5WE,900
41
- tune_dms-0.1.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
42
- tune_dms-0.1.1.dist-info/top_level.txt,sha256=foSEFiroat3zXAH5sxCZMw7NVXVnFlLH9idIe_QrOOs,9
43
- tune_dms-0.1.1.dist-info/RECORD,,
40
+ tune_dms-0.1.2.dist-info/METADATA,sha256=PAUU5qWnojh2KKC2UBBnLmd475nLpMpby-6hVQPGZUg,1000
41
+ tune_dms-0.1.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
42
+ tune_dms-0.1.2.dist-info/top_level.txt,sha256=foSEFiroat3zXAH5sxCZMw7NVXVnFlLH9idIe_QrOOs,9
43
+ tune_dms-0.1.2.dist-info/RECORD,,