tune-dms 0.1.1__tar.gz → 0.1.2__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.
- {tune_dms-0.1.1 → tune_dms-0.1.2}/PKG-INFO +26 -24
- {tune_dms-0.1.1 → tune_dms-0.1.2}/README.md +8 -8
- {tune_dms-0.1.1 → tune_dms-0.1.2}/pyproject.toml +34 -30
- {tune_dms-0.1.1 → tune_dms-0.1.2}/setup.cfg +4 -4
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/__init__.py +25 -25
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/config.py +57 -57
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms.egg-info/PKG-INFO +26 -24
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/confirm_save_as_dialog.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/excel_application_screen.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/save_as_window.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_admin_purchase_orders_icon_selected.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_application_screen.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_cancel_button.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_cancel_button_2.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_cancel_button_c.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_exit_button.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_login_error.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_login_screen.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_login_screen_environment.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_cap_qty.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_dangerous_goods_class.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_default_supplier.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_other.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_pack_size.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part_height.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part_length.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part_volume.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part_weight.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_part_width.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_unit_of_measure.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_previous_button.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_report_parts_by_bin_location.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_report_parts_price_list.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_search_field.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise_grey.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise_toy_grey.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise_toy_grey_box.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise_toy_yellow.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_select_franchise_toy_yellow_box.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_supplier_part_selection.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_x_button.png +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/launcher.py +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms.egg-info/SOURCES.txt +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms.egg-info/dependency_links.txt +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms.egg-info/requires.txt +0 -0
- {tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms.egg-info/top_level.txt +0 -0
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: tune-dms
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary: TUNE DMS desktop GUI automation: login and report generation
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Classifier:
|
|
10
|
-
Classifier:
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Requires-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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,8 +1,8 @@
|
|
|
1
|
-
# tune-dms
|
|
2
|
-
|
|
3
|
-
TUNE DMS desktop GUI automation: log in and run reports (e.g. Parts Price List, Parts by Bin Location) via keyboard/screen automation.
|
|
4
|
-
|
|
5
|
-
Install: `pip install tune-dms`
|
|
6
|
-
Or from repo root: `pip install -e ./packages/tune_dms`
|
|
7
|
-
|
|
8
|
-
See the [main repo README](../README.md) for configuration and usage.
|
|
1
|
+
# tune-dms
|
|
2
|
+
|
|
3
|
+
TUNE DMS desktop GUI automation: log in and run reports (e.g. Parts Price List, Parts by Bin Location) via keyboard/screen automation.
|
|
4
|
+
|
|
5
|
+
Install: `pip install tune-dms`
|
|
6
|
+
Or from repo root: `pip install -e ./packages/tune_dms`
|
|
7
|
+
|
|
8
|
+
See the [main repo README](../README.md) for configuration and usage.
|
|
@@ -1,30 +1,34 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=61", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "tune-dms"
|
|
7
|
-
version = "0.1.
|
|
8
|
-
description = "TUNE DMS desktop GUI automation: login and report generation"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
license = "MIT"
|
|
11
|
-
requires-python = ">=3.10"
|
|
12
|
-
keywords = ["tune", "dms", "gui", "automation", "reports"]
|
|
13
|
-
classifiers = [
|
|
14
|
-
"Development Status :: 3 - Alpha",
|
|
15
|
-
"Intended Audience :: Developers",
|
|
16
|
-
"Programming Language :: Python :: 3",
|
|
17
|
-
"Programming Language :: Python :: 3.10",
|
|
18
|
-
"Programming Language :: Python :: 3.11",
|
|
19
|
-
"Programming Language :: Python :: 3.12",
|
|
20
|
-
]
|
|
21
|
-
dependencies = [
|
|
22
|
-
"pyautogui",
|
|
23
|
-
]
|
|
24
|
-
|
|
25
|
-
[
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
[tool.setuptools.
|
|
30
|
-
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "tune-dms"
|
|
7
|
+
version = "0.1.2"
|
|
8
|
+
description = "TUNE DMS desktop GUI automation: login and report generation"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
keywords = ["tune", "dms", "gui", "automation", "reports"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"Programming Language :: Python :: 3",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
]
|
|
21
|
+
dependencies = [
|
|
22
|
+
"pyautogui",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.urls]
|
|
26
|
+
Homepage = "https://github.com/Luen/RevNext-TUNE/"
|
|
27
|
+
Repository = "https://github.com/Luen/RevNext-TUNE/"
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.packages.find]
|
|
30
|
+
where = ["."]
|
|
31
|
+
include = ["tune_dms*"]
|
|
32
|
+
|
|
33
|
+
[tool.setuptools.package-data]
|
|
34
|
+
tune_dms = ["images/*.png"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[egg_info]
|
|
2
|
-
tag_build =
|
|
3
|
-
tag_date = 0
|
|
4
|
-
|
|
1
|
+
[egg_info]
|
|
2
|
+
tag_build =
|
|
3
|
+
tag_date = 0
|
|
4
|
+
|
|
@@ -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"
|
|
@@ -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.
|
|
4
|
-
Summary: TUNE DMS desktop GUI automation: login and report generation
|
|
5
|
-
License-Expression: MIT
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Classifier:
|
|
10
|
-
Classifier:
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Requires-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_admin_purchase_orders_icon_selected.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_default_supplier.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tune_dms-0.1.1 → tune_dms-0.1.2}/tune_dms/images/tune_part_general_enquiry_unit_of_measure.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|