Metadata-Version: 2.4
Name: syft-client
Version: 0.1.1
Summary: A simple client library for setting up secure communication channels using Google Drive
Author-email: OpenMined <info@openmined.org>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/OpenMined/syft-client
Project-URL: Repository, https://github.com/OpenMined/syft-client
Project-URL: Documentation, https://github.com/OpenMined/syft-client#readme
Project-URL: Bug Tracker, https://github.com/OpenMined/syft-client/issues
Keywords: privacy,federated-learning,google-drive,communication
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
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: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Communications :: File Sharing
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: google-api-python-client==2.95.0
Requires-Dist: google-auth==2.22.0
Requires-Dist: google-auth-oauthlib
Requires-Dist: syft-widget
Provides-Extra: test
Requires-Dist: pytest>=7.0.0; extra == "test"
Requires-Dist: pytest-mock>=3.10.0; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Requires-Dist: pytest-xdist>=3.0.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
Requires-Dist: black>=23.0.0; extra == "test"
Requires-Dist: flake8>=6.0.0; extra == "test"
Requires-Dist: mypy>=1.0.0; extra == "test"
Requires-Dist: isort>=5.12.0; extra == "test"
Requires-Dist: coverage>=7.0.0; extra == "test"
Provides-Extra: dev
Requires-Dist: jupyter>=1.0.0; extra == "dev"
Requires-Dist: notebook>=6.5.0; extra == "dev"
Requires-Dist: ipython>=8.0.0; extra == "dev"
Requires-Dist: tqdm>=4.64.0; extra == "dev"
Provides-Extra: all
Requires-Dist: syft-client[dev,test]; extra == "all"

# Syft Client

A simple client library for setting up secure communication channels using Google Drive.

## Installation

```bash
pip install -e .
```

## Quick Start

```python
import syft_client as sc

# Login with your email
client = sc.login("your_email@gmail.com", "credentials.json", verbose=False)

# Reset/create your SyftBoxTransportService folder
client.reset_syftbox()

# Add a friend
client.add_friend("friend@gmail.com")

# Check your friends
client.friends  # Returns: ['friend@gmail.com']

# Check friend requests (people who shared with you)
client.friend_requests  # Returns: ['other@gmail.com']
```

## Core Features

### Login
The `login()` function handles authentication:
```python
# With credentials file
client = sc.login("your_email@gmail.com", "credentials.json")

# Without verbose output
client = sc.login("your_email@gmail.com", verbose=False)
```

### Friend Management
```python
# Add a friend (creates folders and permissions)
client.add_friend("friend@gmail.com")

# List your friends
client.friends  # ['friend@gmail.com']

# See who wants to connect with you
client.friend_requests  # ['person@gmail.com']
```

### Reset SyftBox
```python
# Delete and recreate your SyftBoxTransportService folder
client.reset_syftbox()
```

## How It Works

When you add a friend, the system creates:
1. **Your outgoing channel** - Folders you control for sending
2. **Your archive** - Where you store processed messages from them
3. **Shortcuts** - Links to any folders they've shared with you

Your friend does the same on their side to complete the bidirectional setup.

## First Time Setup

If you don't have Google Drive API credentials yet, the `login()` function will guide you through creating them when you first run it.

## Credential Storage

Credentials are stored securely in `~/.syft/gdrive/` so you only need to authenticate once per account.
