Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 5 additions & 88 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,3 @@
```{todo} THIS IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS!

The document assumes you are using a source repository service that promotes a
contribution model similar to [GitHub's fork and pull request workflow].
While this is true for the majority of services (like GitHub, GitLab,
BitBucket), it might not be the case for private repositories (e.g., when
using Gerrit).

Also notice that the code examples might refer to GitHub URLs or the text
might use GitHub specific terminology (e.g., *Pull Request* instead of *Merge
Request*).

Please make sure to check the document having these assumptions in mind
and update things accordingly.
```

```{todo} Provide the correct links/replacements at the bottom of the document.
```

```{todo} You might want to have a look on [PyScaffold's contributor's guide],

especially if your project is open source. The text should be very similar to
this template, but there are a few extra contents that you might decide to
also include, like mentioning labels of your issue tracker or automated
releases.
```

# Contributing

Welcome to `progressive-automations-python` contributor's guide.
Expand Down Expand Up @@ -64,32 +37,7 @@ you help us to identify the root cause of the issue.
You can help improve `progressive-automations-python` docs by making them more readable and coherent, or
by adding missing information and correcting mistakes.

`progressive-automations-python` documentation uses [Sphinx] as its main documentation compiler.
This means that the docs are kept in the same repository as the project code, and
that any documentation update is done in the same way was a code contribution.

```{todo} Don't forget to mention which markup language you are using.

e.g., [reStructuredText] or [CommonMark] with [MyST] extensions.
```

```{todo} If your project is hosted on GitHub, you can also mention the following tip:

:::{tip}
Please notice that the [GitHub web interface] provides a quick way of
propose changes in `progressive-automations-python`'s files. While this mechanism can
be tricky for normal code contributions, it works perfectly fine for
contributing to the docs, and can be quite handy.

If you are interested in trying this method out, please navigate to
the `docs` folder in the source [repository], find which file you
would like to propose changes and click in the little pencil icon at the
top, to open [GitHub's code editor]. Once you finish editing the file,
please write a message in the form at the bottom of the page describing
which changes have you made and what are the motivations behind them and
submit your proposal.
:::
```
`progressive-automations-python` documentation uses [Sphinx] with [MyST] Markdown extensions.

When working on documentation changes in your local machine, you can
compile them using [tox] :
Expand All @@ -107,13 +55,6 @@ python3 -m http.server --directory 'docs/_build/html'

## Code Contributions

```{todo} Please include a reference or explanation about the internals of the project.

An architecture description, design principles or at least a summary of the
main concepts will make it easy for potential contributors to get started
quickly.
```

### Submit an issue

Before you work on any non-trivial code contribution it's best to first create
Expand Down Expand Up @@ -160,9 +101,6 @@ conda activate progressive-automations-python

to be able to import the package under development in the Python REPL.

```{todo} if you are not using pre-commit, please remove the following item:
```

5. Install [pre-commit]:

```
Expand Down Expand Up @@ -197,11 +135,7 @@ conda activate progressive-automations-python

to record your changes in [git].

```{todo} if you are not using pre-commit, please remove the following item:
```

Please make sure to see the validation messages from [pre-commit] and fix
any eventual issues.
See the validation messages from [pre-commit] and fix any issues.
This should automatically use [flake8]/[black] to check/fix the code style
in a way that is compatible with the project.

Expand Down Expand Up @@ -241,13 +175,7 @@ conda activate progressive-automations-python
2. Go to the web page of your fork and click "Create pull request"
to send your changes for review.

```{todo} if you are using GitHub, you can uncomment the following paragraph

Find more detailed information in [creating a PR]. You might also want to open
the PR as a draft first and mark it as ready for review after the feedbacks
from the continuous integration (CI) system or any required fixes.

```

### Troubleshooting

Expand Down Expand Up @@ -306,15 +234,7 @@ package:

### Releases

```{todo} This section assumes you are using PyPI to publicly release your package.

If instead you are using a different/private package index, please update
the instructions accordingly.
```

If you are part of the group of maintainers and have correct user permissions
on [PyPI], the following steps can be used to release a new version for
`progressive-automations-python`:
Steps to release a new version to [PyPI]:

1. Make sure all unit tests are successful.
2. Tag the current commit on the main branch with a release tag, e.g., `v1.2.3`.
Expand Down Expand Up @@ -365,8 +285,5 @@ on [PyPI], the following steps can be used to release a new version for
[virtualenv]: https://virtualenv.pypa.io/en/stable/


```{todo} Please review and change the following definitions:
```

[repository]: https://github.com/<USERNAME>/progressive-automations-python
[issue tracker]: https://github.com/<USERNAME>/progressive-automations-python/issues
[repository]: https://github.com/AccelerationConsortium/progressive-automations-python
[issue tracker]: https://github.com/AccelerationConsortium/progressive-automations-python/issues
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@

> Python package for programmatically controlling Progressive Automations desk lifters (e.g., LG-07 modular lifting column via FLTCON) with Prefect workflow orchestration.

Control your desk lifter remotely via Prefect Cloud deployments with asynchronous execution and position polling. Perfect for laboratory automation where the desk position needs to be coordinated with other equipment.
Currently used for the Progressive Automations LG-07 lifting column. May be expanded to other systems. Open a new issue if this is of interest.

Control desk lifters remotely via Prefect Cloud deployments with asynchronous execution and position polling.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mention that it's specifically being used for the Progressive Automations LG-07 lifting column and may be expanded to other systems. Open a new issue if this is of interest.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added specificity about LG-07 and expansion note in 2cef137


## Quick Start

Expand Down
9 changes: 4 additions & 5 deletions docs/bill_of_materials.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Bill of Materials

This document lists the parts used in the current Progressive Automations build. Quantities use the first number provided by the requester.
Parts used in the current Progressive Automations build.

| Part Number | Description | Quantity | Price |
|-------------|-------------|:--------:|------:|
Expand All @@ -9,9 +9,8 @@ This document lists the parts used in the current Progressive Automations build.
| [RT-11](https://www.progressiveautomations.com/products/rt-11) | Table Lift Hand Remote - 4 Positions Memory Function | 1 | 9.99 USD |
| [FLTCON-1](https://www.progressiveautomations.com/products/fltcon-1) | Hall Effect Control Box with Presets - 110 VAC - 24 VDC - 1 Channel | 1 | 199.00 USD |
| [LG-07-3RM-32-440-HS-24V-B (black variant)](https://www.progressiveautomations.com/products/lg-07?variant=43102968447156) | 3 Stage Industrial Lifting Column - 32" Stroke - 440 lbs Force - Synchronizable - Anodic Oxide Black | 1 | 749.00 USD |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's actually 534.96 USD in total when you include the FLTCON-1 (should be listed), the RT-11 remote, and the (optional) Bluetooth Dongle RT-BT1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added total cost row showing 534.96 USD in 2cef137

| | **Total** | | **534.96 USD** |

Notes:
- Quantities were taken from the first numeric field provided in the user's input.
- All product links point to official Progressive Automations product pages (requested).
- Prices shown were provided by the user (listed as of 11/6/2025).
- If you want additional fields (supplier SKUs, unit cost breakdown, CSV/Excel export), tell me and I'll add them.
- Product links point to official Progressive Automations product pages.
- Prices listed as of 11/6/2025.
14 changes: 1 addition & 13 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
# progressive-automations-python

Python package for programmatically controlling progressive automations tools (e.g., LG-07 modular lifting column via FLTCON).


## Note

> This is the main page of your project's [Sphinx] documentation. It is
> formatted in [Markdown]. Add additional pages by creating md-files in
> `docs` or rst-files (formatted in [reStructuredText]) and adding links to
> them in the `Contents` section below.
>
> Please check [Sphinx] and [MyST] for more information
> about how to document your project and how to configure your preferences.

Python package for programmatically controlling Progressive Automations desk lifters (e.g., LG-07 modular lifting column via FLTCON) with Prefect workflow orchestration.

## Contents

Expand Down
25 changes: 12 additions & 13 deletions docs/installation-and-usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@ Keep this running in a terminal or set up as a systemd service for automatic sta

## Testing During Initial Setup

> **Note**: The `progressive_automations_python` CLI is provided for initial hardware testing and troubleshooting only. For production use, trigger flows via `run_deployment()` or Prefect's CLI.
```{note}
The `progressive_automations_python` CLI is for initial hardware testing and troubleshooting. For production use, trigger flows via `run_deployment()` or Prefect's CLI. The package can also be used standalone, independent of Prefect.
```

### Test Hardware Connections

Expand All @@ -104,7 +106,7 @@ progressive_automations_python --status

## Production Usage: Async Deployment and Position Polling

**This is the primary way to use the desk lifter system.** Trigger movements asynchronously from external systems and poll their status later.
Trigger movements asynchronously from external systems and poll their status later.

### Triggering Movements Asynchronously

Expand Down Expand Up @@ -170,9 +172,6 @@ async def wait_for_movement_completion(flow_run_id, check_interval=5, max_wait=3
"""
Poll until movement completes or timeout.

This is similar to preheating an oven - you set the temperature and check later,
not sit in front of it the whole time.

Args:
flow_run_id: The flow run ID from run_deployment
check_interval: Seconds between status checks (default: 5)
Expand Down Expand Up @@ -438,14 +437,14 @@ This displays comprehensive code examples for:

## Next Steps

1. Complete hardware setup per [Raspberry Pi Setup](raspberry-pi-setup.md)
2. Install package: `pip install progressive-automations-python`
3. Configure Prefect Cloud: `prefect cloud login -k <api-key>`
4. Create work pool: `prefect work-pool create desk-lifter-pool --type process`
5. Deploy flows via Python: `create_deployments("desk-lifter-pool")`
6. Start worker: `prefect worker start --pool desk-lifter-pool`
7. Test hardware (optional): `progressive_automations_python --test UP`
8. ✅ **Trigger flows via `run_deployment()` from your automation code!**
1. Complete hardware setup per [Raspberry Pi Setup](raspberry-pi-setup.md)
2. Install package: `pip install progressive-automations-python`
3. Configure Prefect Cloud: `prefect cloud login -k <api-key>`
4. Create work pool: `prefect work-pool create desk-lifter-pool --type process`
5. Deploy flows: `python -c "from progressive_automations_python.deployment import create_deployments; create_deployments('desk-lifter-pool')"`
6. Start worker: `prefect worker start --pool desk-lifter-pool`
7. Test hardware (optional): `progressive_automations_python --test UP`
8. Trigger flows via `run_deployment()` from automation code

For more information, see:
- [Raspberry Pi Setup](raspberry-pi-setup.md)
Expand Down
4 changes: 2 additions & 2 deletions src/progressive_automations_python/deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ def create_deployments(work_pool_name: str = "desk-lifter-pool"):
work_pool_name=work_pool_name,
description="Move desk to a specific height position with duty cycle management"
)
print(f"Deployed 'simple-movement-flow/move-to-position'")
print(f"Deployed 'simple-movement-flow/move-to-position'")

print(f"\n🎉 Deployment created successfully!")
print(f"\nDeployment created successfully.")
print(f"\nNext steps:")
print(f"1. Start a worker: prefect worker start --pool {work_pool_name}")
print(f"2. Trigger a flow from Python:")
Expand Down