Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
d1a1685
Fix ResourceTreeSet load error
Xuwznln Oct 13, 2025
ac57a37
Raise error when using unsupported type to create ResourceTreeSet
Xuwznln Oct 13, 2025
4a88eb3
Fix children key error
Xuwznln Oct 13, 2025
921b837
Fix children key error
Xuwznln Oct 13, 2025
5221d12
Fix workstation resource not tracking
Xuwznln Oct 13, 2025
011c4fb
Fix workstation deck & children resource dupe
Xuwznln Oct 13, 2025
5753cff
Fix workstation deck & children resource dupe
Xuwznln Oct 13, 2025
81351e4
Fix multiple resource error
Xuwznln Oct 13, 2025
374b701
Fix resource tree update
Xuwznln Oct 13, 2025
4d53adb
Fix resource tree update
Xuwznln Oct 13, 2025
6ba5555
Force confirm uuid
Xuwznln Oct 13, 2025
1584b84
Tip more error log
Xuwznln Oct 13, 2025
f36e862
Refactor Bioyond workstation and experiment workflow (#105)
ZiWei09 Oct 13, 2025
e59f469
Fix resource get.
Xuwznln Oct 14, 2025
6f4889a
mount parent uuid
Xuwznln Oct 14, 2025
1807bb1
Add logging configuration based on BasicConfig in main function
ZiWei09 Oct 14, 2025
7078d63
fix workstation node error
Xuwznln Oct 15, 2025
5e397ee
fix workstation node error
Xuwznln Oct 15, 2025
a08f5d8
Update boot example
Xuwznln Oct 15, 2025
2b4a9e1
temp fix for resource get
Xuwznln Oct 15, 2025
56d3250
temp fix for resource get
Xuwznln Oct 15, 2025
4bc3abf
provide error info when cant find plr type
Xuwznln Oct 16, 2025
ebd9bd6
pack repo info
Xuwznln Oct 16, 2025
1c1f259
fix to plr type error
Xuwznln Oct 16, 2025
51632e2
fix to plr type error
Xuwznln Oct 16, 2025
b2ae40b
Update regular container method
Xuwznln Oct 16, 2025
18254a9
support no size init
Xuwznln Oct 16, 2025
95f5592
fix comprehensive_station.json
Xuwznln Oct 16, 2025
6cf7a2b
fix comprehensive_station.json
Xuwznln Oct 16, 2025
dc2fe7e
fix type conversion
Xuwznln Oct 16, 2025
6eff3c0
fix state loading for regular container
Xuwznln Oct 16, 2025
7ab2c81
Update deploy-docs.yml
Xuwznln Oct 16, 2025
30cb745
Update deploy-docs.yml
Xuwznln Oct 16, 2025
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
8 changes: 8 additions & 0 deletions .github/workflows/conda-pack-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,10 @@ jobs:
echo Adding: verify_installation.py
copy scripts\verify_installation.py dist-package\

rem Copy source code repository (including .git)
echo Adding: Uni-Lab-OS source repository
robocopy . dist-package\Uni-Lab-OS /E /XD dist-package /NFL /NDL /NJH /NJS /NC /NS || if %ERRORLEVEL% LSS 8 exit /b 0

rem Create README using Python script
echo Creating: README.txt
python scripts\create_readme.py ${{ matrix.platform }} ${{ github.event.inputs.branch }} dist-package\README.txt
Expand Down Expand Up @@ -274,6 +278,10 @@ jobs:
echo "Adding: verify_installation.py"
cp scripts/verify_installation.py dist-package/

# Copy source code repository (including .git)
echo "Adding: Uni-Lab-OS source repository"
rsync -a --exclude='dist-package' . dist-package/Uni-Lab-OS

# Create README using Python script
echo "Creating: README.txt"
python scripts/create_readme.py ${{ matrix.platform }} ${{ github.event.inputs.branch }} dist-package/README.txt
Expand Down
43 changes: 29 additions & 14 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,24 +39,39 @@ jobs:
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch || github.ref }}
fetch-depth: 0

- name: Setup Python environment
uses: actions/setup-python@v5
- name: Setup Miniforge (with mamba)
uses: conda-incubator/setup-miniconda@v3
Copy link

Choose a reason for hiding this comment

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

security (yaml.github-actions.security.third-party-action-not-pinned-to-commit-sha): An action sourced from a third-party repository on GitHub is not pinned to a full length commit SHA. Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload.

Source: opengrep

with:
python-version: '3.10'
miniforge-version: latest
use-mamba: true
python-version: '3.11.11'
channels: conda-forge,robostack-staging,uni-lab,defaults
channel-priority: flexible
activate-environment: unilab
auto-update-conda: false
show-channel-urls: true

- name: Install system dependencies
- name: Install unilabos and dependencies
run: |
sudo apt-get update
sudo apt-get install -y pandoc
echo "Installing unilabos and dependencies to unilab environment..."
echo "Using mamba for faster and more reliable dependency resolution..."
mamba install -n unilab uni-lab::unilabos -c uni-lab -c robostack-staging -c conda-forge -y

- name: Install Python dependencies
- name: Install latest unilabos from source
run: |
python -m pip install --upgrade pip
# Install package in development mode to get version info
pip install -e .
# Install documentation dependencies
pip install -r docs/requirements.txt
echo "Uninstalling existing unilabos..."
mamba run -n unilab pip uninstall unilabos -y || echo "unilabos not installed via pip"
echo "Installing unilabos from source..."
mamba run -n unilab pip install .
echo "Verifying installation..."
mamba run -n unilab pip show unilabos

- name: Install documentation dependencies
run: |
echo "Installing documentation build dependencies..."
mamba run -n unilab pip install -r docs/requirements.txt

- name: Setup Pages
id: pages
Expand All @@ -68,8 +83,8 @@ jobs:
cd docs
# Clean previous builds
rm -rf _build
# Build HTML documentation
python -m sphinx -b html . _build/html -v
# Build HTML documentation in conda environment
mamba run -n unilab python -m sphinx -b html . _build/html -v

- name: Check build results
run: |
Expand Down
2 changes: 1 addition & 1 deletion docs/boot_examples/organic_synthesis.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
使用以下命令启动模拟反应器:

```bash
unilab -g test/experiments/mock_reactor.json --app_bridges ""
unilab -g test/experiments/mock_reactor.json
```

### 2. 执行抽真空和充气操作
Expand Down
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"myst_parser",
"sphinx.ext.autodoc",
"sphinx.ext.napoleon", # 如果您使用 Google 或 NumPy 风格的 docstrings
"sphinx_rtd_theme"
"sphinx_rtd_theme",
]

source_suffix = {
Expand Down
151 changes: 99 additions & 52 deletions test/experiments/comprehensive_protocol/comprehensive_station.json
Original file line number Diff line number Diff line change
Expand Up @@ -170,15 +170,16 @@
"z": 0
},
"config": {
"max_volume": 1000.0
"max_volume": 1000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 200,
"size_y": 150,
"size_z": 0
},
"data": {
"liquids": [
{
"liquid_type": "DMF",
"liquid_volume": 1000.0
}
]
"liquids": [["DMF", 500.0]],
"pending_liquids": [["DMF", 500.0]]
}
},
{
Expand All @@ -194,15 +195,16 @@
"z": 0
},
"config": {
"max_volume": 1000.0
"max_volume": 1000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 200,
"size_y": 150,
"size_z": 0
},
"data": {
"liquids": [
{
"liquid_type": "ethyl_acetate",
"liquid_volume": 1000.0
}
]
"liquids": [["ethyl_acetate", 1000.0]],
"pending_liquids": [["ethyl_acetate", 1000.0]]
}
},
{
Expand All @@ -218,15 +220,16 @@
"z": 0
},
"config": {
"max_volume": 1000.0
"max_volume": 1000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 300,
"size_y": 150,
"size_z": 0
},
"data": {
"liquids": [
{
"liquid_type": "hexane",
"liquid_volume": 1000.0
}
]
"liquids": [["hexane", 1000.0]],
"pending_liquids": [["hexane", 1000.0]]
}
},
{
Expand All @@ -242,15 +245,16 @@
"z": 0
},
"config": {
"max_volume": 1000.0
"max_volume": 1000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 900,
"size_y": 150,
"size_z": 0
},
"data": {
"liquids": [
{
"liquid_type": "methanol",
"liquid_volume": 1000.0
}
]
"liquids": [["methanol", 1000.0]],
"pending_liquids": [["methanol", 1000.0]]
}
},
{
Expand All @@ -266,15 +270,16 @@
"z": 0
},
"config": {
"max_volume": 1000.0
"max_volume": 1000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 950,
"size_y": 150,
"size_z": 0
},
"data": {
"liquids": [
{
"liquid_type": "water",
"liquid_volume": 1000.0
}
]
"liquids": [["water", 1000.0]],
"pending_liquids": [["water", 1000.0]]
}
},
{
Expand Down Expand Up @@ -335,14 +340,16 @@
},
"config": {
"max_volume": 500.0,
"type": "RegularContainer",
"category": "container",
"max_temp": 200.0,
"min_temp": -20.0,
"has_stirrer": true,
"has_heater": true
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand Down Expand Up @@ -419,11 +426,16 @@
"z": 0
},
"config": {
"max_volume": 2000.0
"max_volume": 2000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 500,
"size_y": 400,
"size_z": 0
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand All @@ -439,11 +451,16 @@
"z": 0
},
"config": {
"max_volume": 2000.0
"max_volume": 2000.0,
"type": "RegularContainer",
"category": "container",
"size_x": 1100,
"size_y": 500,
"size_z": 0
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand Down Expand Up @@ -649,11 +666,16 @@
"z": 0
},
"config": {
"max_volume": 250.0
"max_volume": 250.0,
"type": "RegularContainer",
"category": "container",
"size_x": 900,
"size_y": 500,
"size_z": 0
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand All @@ -669,11 +691,16 @@
"z": 0
},
"config": {
"max_volume": 250.0
"max_volume": 250.0,
"type": "RegularContainer",
"category": "container",
"size_x": 950,
"size_y": 500,
"size_z": 0
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand All @@ -689,11 +716,16 @@
"z": 0
},
"config": {
"max_volume": 250.0
"max_volume": 250.0,
"type": "RegularContainer",
"category": "container",
"size_x": 1050,
"size_y": 500,
"size_z": 0
},
"data": {
"liquids": [
]
"liquids": [],
"pending_liquids": []
}
},
{
Expand Down Expand Up @@ -733,6 +765,11 @@
},
"config": {
"max_volume": 500.0,
"size_x": 550,
"size_y": 250,
"size_z": 0,
"type": "RegularContainer",
"category": "container",
"reagent": "sodium_chloride",
"physical_state": "solid"
},
Expand All @@ -756,6 +793,11 @@
},
"config": {
"volume": 500.0,
"size_x": 600,
"size_y": 250,
"size_z": 0,
"type": "RegularContainer",
"category": "container",
"reagent": "sodium_carbonate",
"physical_state": "solid"
},
Expand All @@ -779,6 +821,11 @@
},
"config": {
"volume": 500.0,
"size_x": 650,
"size_y": 250,
"size_z": 0,
"type": "RegularContainer",
"category": "container",
"reagent": "magnesium_chloride",
"physical_state": "solid"
},
Expand Down
Loading
Loading