Metadata-Version: 2.4
Name: syft-installer
Version: 0.8.11
Summary: Python installer for SyftBox - programmatic alternative to the TUI installer
Author-email: OpenMined <info@openmined.org>
License: Apache-2.0
Project-URL: Homepage, https://github.com/OpenMined/syft-installer
Project-URL: Documentation, https://github.com/OpenMined/syft-installer#readme
Project-URL: Repository, https://github.com/OpenMined/syft-installer.git
Project-URL: Issues, https://github.com/OpenMined/syft-installer/issues
Keywords: syftbox,installer,federated-learning,privacy
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
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
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.31.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: ipywidgets>=8.0.0
Requires-Dist: PyJWT>=2.8.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Dynamic: license-file

# SyftBox Installer

A beautifully simple Python interface for installing and managing [SyftBox](https://syftbox.net).

## Installation

```bash
pip install syft-installer
```

## Quick Start

```python
import syft_installer as si

# Install and run SyftBox with one line
si.run()
```

That's it! This single command:
- ✅ Downloads SyftBox 
- ✅ Handles authentication (email + OTP)
- ✅ Creates necessary directories
- ✅ Starts the background daemon
- ✅ Shows you the status

## Simple API

```python
import syft_installer as si

si.run()              # Install (if needed) and start
si.status()           # Show current status
si.stop()             # Stop the daemon
si.restart()          # Restart the daemon
si.start_if_stopped() # Start only if not running
si.uninstall()        # Remove everything

# Quick checks
si.is_installed()  # -> True/False
si.is_running()    # -> True/False
```

## Examples

- [**Jupyter Notebook Quickstart**](examples/quickstart.ipynb) - Interactive tutorial
- [**CLI Quickstart**](examples/cli_quickstart.py) - Command-line example

## Advanced Usage

For more control, you can use the underlying installer classes:

```python
import syft_installer as si

# Simple installer
installer = si.SimpleInstaller(email="user@example.com")
installer.step1_download_and_request_otp()
installer.step2_verify_otp("ABCD1234")

# Or use the full installer
installer = si.Installer()
installer.install()
```

## Documentation

See the [`docs/`](docs/) directory for:
- [Simple API Guide](docs/README_SIMPLE.md)
- [Daemon Manager](docs/DAEMON_MANAGER.md)
- [Installation Details](docs/INSTALL_SH_COMPARISON_REPORT.md)

## License

MIT License - see [LICENSE](LICENSE) file.
