TUNE DMS desktop GUI automation: login and report generation
Project description
tune-dms
TUNE DMS desktop GUI automation: log in and run reports (e.g. Parts Price List, Parts by Bin Location) via keyboard and screen image matching.
- Install:
pip install tune-dms - Editable (from repo root):
pip install -e ./packages/tune_dms
Configuration
Set credentials (and optional paths) via environment variables or a .env file. Optional: use python-dotenv so TuneConfig.from_env() can load from .env.
| Variable | Required | Description |
|---|---|---|
TUNE_USER_ID |
Yes | TUNE login user ID |
TUNE_USER_PASSWORD |
Yes | TUNE login password |
TUNE_SHORTCUT_PATH |
No | Path to TUNE shortcut (default: C:\Users\Public\Desktop\TUNE.lnk) |
TUNE_REPORTS_DIR |
No | Directory where reports are saved (default: current working directory) |
TUNE_IMAGES_DIR |
No | Override path to reference images (default: package images/) |
Custom logger
You can inject your own logger so all library log output uses your handler, level, and format. Call set_logger(my_logger) before using other tune_dms APIs. Pass None to revert to the default.
import logging
from tune_dms import set_logger, TuneConfig, run_tune_reports
logger = logging.getLogger("my_app.tune_dms")
logger.setLevel(logging.INFO)
# add handlers, formatters, etc.
set_logger(logger)
config = TuneConfig.from_env()
run_tune_reports(config) # all tune_dms logs go to your logger
Usage example
After installing, ensure TUNE is not running and that the desktop/shortcut is as expected. Then load config and run the built-in report workflow:
from tune_dms import TuneConfig, run_tune_reports
# Load from environment (e.g. TUNE_USER_ID, TUNE_USER_PASSWORD in .env or env)
config = TuneConfig.from_env()
# Optional: set reports directory if not using TUNE_REPORTS_DIR
# config = TuneConfig.from_env(reports_dir="C:/path/to/reports")
config.validate() # raises if user_id/password missing
success = run_tune_reports(config)
The runner will:
- Launch TUNE from the configured shortcut
- Log in using the configured credentials
- Navigate by department and run Parts Price List and Parts by Bin Location for each (department/franchise and output filenames are fixed in the built-in workflow)
- Close TUNE when done
For a custom sequence of reports, use TuneReportGenerator with the same config and call run_reports(); the class uses the same flow internally. Report parameters (department, franchise, output file name, etc.) are set via PartsPriceListParams and PartsByBinLocationParams when calling the download helpers inside that flow.
Requirements
- Windows (shortcut path and automation are Windows-oriented)
- pyautogui (installed with the package)
- TUNE desktop application installed and a desktop shortcut at the configured path
- Reference images are included in the package (
tune_dms/images/); do not move the package’simagesfolder if using the defaultTUNE_IMAGES_DIR
See the main repo for more context and the monorepo layout.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tune_dms-0.1.7.tar.gz.
File metadata
- Download URL: tune_dms-0.1.7.tar.gz
- Upload date:
- Size: 112.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2d1a9e7b013b85543c1ace40307b71b20c787402aedc9fee2d496831ee2e93e
|
|
| MD5 |
70eadc830a62388d040b97c0be008d32
|
|
| BLAKE2b-256 |
693f8c3c0944aca91936beccca557fc8e04a143b9745c403c7bcb22d0db59edb
|
File details
Details for the file tune_dms-0.1.7-py3-none-any.whl.
File metadata
- Download URL: tune_dms-0.1.7-py3-none-any.whl
- Upload date:
- Size: 124.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8936eebd57bdb3a59a929525d2ac39dcd648c20494bb379bf32010b6f3a8bec3
|
|
| MD5 |
8e34d887bd931e8c72130120b8a36e57
|
|
| BLAKE2b-256 |
a02be790620eec5d7c8869d64d6beabecfe08ba6a78c60ac706ccac61dd3600c
|