Skip to content
Merged
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
23 changes: 23 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

root = true

[*.sh]

indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
25 changes: 25 additions & 0 deletions .github/ISSUE_TEMPLATE/1-bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Bug Report
description: File a bug report.
type: Bug
body:
- type: textarea
id: description
attributes:
label: Describe the problem you got
description: It's better that you provide information as much as possible.
validations:
required: true
25 changes: 25 additions & 0 deletions .github/ISSUE_TEMPLATE/2-feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Feature Request
description: Request a feature.
type: Feature
body:
- type: textarea
id: description
attributes:
label: Describe the feature you want
description: It's better that you also provide your use case.
validations:
required: true
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

blank_issues_enabled: false
contact_links:
- name: Discord
url: https://discord.gg/FsZaZ4z3We
about: Please ask and answer questions here.
- name: GitHub Discussions
url: https://github.com/enactic/openarm_control/discussions
about: If you prefer GitHub Discussions to Discord, you can use GitHub Discussions too.
4 changes: 4 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# GitHub Copilot instructions

- In pull request descriptions, the first line must be `Fix GH-${ISSUE_NUMBER}` with `${ISSUE_NUMBER}` replaced by the corresponding issue number (for example, `Fix GH-123`).
- Do not add a `Changes` section to pull request descriptions.
20 changes: 20 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
10 changes: 4 additions & 6 deletions main.py → .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

def main():
print("Hello from openarm-control!")


if __name__ == "__main__":
main()
changelog:
exclude:
authors:
- dependabot[bot]
43 changes: 43 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Lint
on:
push:
branches-ignore:
- 'copilot/**'
- 'dependabot/**'
pull_request:
concurrency:
group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Install pre-commit
run: |
python -m pip install pre-commit
- uses: actions/cache@v5
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Run pre-commit
run: |
pre-commit run --show-diff-on-failure --color=always --all-files
112 changes: 112 additions & 0 deletions .github/workflows/package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Package
on:
push:
branches-ignore:
- 'copilot/**'
- 'dependabot/**'
tags:
- '**'
pull_request:
concurrency:
group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
source:
name: Source
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Prepare environment variables
run: |
PACKAGE_NAME=$(yq --unwrapScalar .project.name pyproject.toml)
echo "PACKAGE_NAME=${PACKAGE_NAME}" >> "${GITHUB_ENV}"
if [ "${GITHUB_REF_TYPE}" = "tag" ]; then
echo "VERSION=${GITHUB_REF_NAME}" >> "${GITHUB_ENV}"
else
VERSION=$(yq --unwrapScalar .project.version pyproject.toml)
echo "VERSION=${VERSION}" >> "${GITHUB_ENV}"
fi
- uses: actions/setup-python@v6
with:
python-version: 3
Comment on lines +34 to +46
Comment on lines +34 to +46
Comment on lines +34 to +46
- name: Install dependencies
run: |
pip install build
- name: Create source archive
run: |
python -m build --sdist
cd dist
sha256sum \
${PACKAGE_NAME}-${VERSION}.tar.gz > \
${PACKAGE_NAME}-${VERSION}.tar.gz.sha256
sha512sum \
${PACKAGE_NAME}-${VERSION}.tar.gz > \
${PACKAGE_NAME}-${VERSION}.tar.gz.sha512
- uses: actions/upload-artifact@v7
with:
name: source
path: |
dist/${{ env.PACKAGE_NAME }}-${{ env.VERSION }}.tar.gz
dist/${{ env.PACKAGE_NAME }}-${{ env.VERSION }}.tar.gz.sha256
dist/${{ env.PACKAGE_NAME }}-${{ env.VERSION }}.tar.gz.sha512
release:
name: Release
if: github.ref_type == 'tag'
needs:
- source
runs-on: ubuntu-latest
timeout-minutes: 10
environment: release
permissions:
contents: write
discussions: write
steps:
- uses: actions/download-artifact@v8
with:
name: source
- name: Create GitHub Release
env:
GH_TOKEN: ${{ github.token }}
run: |
version=${GITHUB_REF_NAME}
gh release create ${version} \
--discussion-category Announcements \
--generate-notes \
--repo ${GITHUB_REPOSITORY} \
--title "OpenArm Control ${version}" \
--verify-tag \
*.tar.gz*
pypi:
name: PyPI
if: github.ref_type == 'tag'
needs:
- source
runs-on: ubuntu-latest
timeout-minutes: 10
environment: pypi
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
name: source
- name: Prepare directory structure
run: |
mkdir -p dist
mv *.tar.gz dist/
- uses: pypa/gh-action-pypi-publish@release/v1
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
26 changes: 26 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Copyright 2026 Enactic, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.11
hooks:
- id: ruff-check
args:
- --fix
- id: ruff-format
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.12.0-2
hooks:
- id: shfmt
Loading