Metadata-Version: 2.4
Name: openjigware
Version: 0.2.0
Summary: Python bindings for the OpenJigWare .NET robotics library (Dynamixel protocols, forward/inverse kinematics, DH/URDF, 3D)
Author: OpenJigWare
License: MIT
Project-URL: Homepage, https://github.com/oroca/OpenJigWare
Project-URL: Source, https://github.com/oroca/OpenJigWare
Keywords: robotics,dynamixel,kinematics,inverse-kinematics,urdf,dh,openjigware,pythonnet,dotnet
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: C#
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pythonnet>=3.0.3
Dynamic: license-file

# OpenJigWare (Python)

Python bindings for the **OpenJigWare** .NET robotics library — Dynamixel
protocols, forward/inverse kinematics, DH parameters, URDF/MJCF/USD export,
and a browser-based 3D viewer. Runs on **Windows, Linux, and macOS**.

```bash
pip install openjigware
```

```python
from openjigware import Ojw

# Dynamixel Protocol 2.0
dxl = Ojw.CProtocol2()
dxl.Open(0, 1000000)

# 3D / DH / inverse kinematics
c3d = Ojw.C3d()
```

## How it works

`openjigware` ships the compiled `OpenJigWare.dll` (a cross-platform .NET 8
assembly) inside the wheel and loads it through
[pythonnet](https://pypi.org/project/pythonnet/).

- **pythonnet** is installed automatically as a dependency.
- **.NET 8 runtime**: if a suitable CoreCLR runtime is not found, it is
  installed automatically into a user folder — no admin rights required
  (first run only, needs internet):
  - Windows: `%LOCALAPPDATA%\OpenJigWare\dotnet`
  - Linux/macOS: `~/.local/share/openjigware/dotnet`

  Set `OJW_NO_BOOTSTRAP=1` to disable auto-install (a clear error is raised
  instead). Point `DOTNET_ROOT` at an existing .NET 8 root to use your own.

## Windows security note

Because pip extracts the bundled DLLs locally, they carry **no Mark-of-the-Web
(Zone.Identifier)** tag — so the SmartScreen "blocked / unknown publisher"
failures that plague manually-copied DLLs do not occur. Windows 11 **Smart App
Control** in its strictest enforced mode may still require Authenticode code
signing, which is outside the scope of pip.

## Requirements

- Python 3.8+
- pythonnet 3.0.3+ (installed automatically)
- .NET 8+ runtime (installed automatically if missing)

## License

MIT — see [LICENSE](LICENSE).
