semvec/pypi-packages huggingface dataset:
reo-package-tracker 1.0.2
Package tracking utility similar to Reo for pip/setuptools installs
License: MIT
Requires Python: >=3.8

# Python Package Tracker

A lightweight pip/setuptools package tracking utility similar to Reo.

## Features

- Zero runtime overhead for your application code
- Privacy-first metadata collection
- Non-blocking with strict timeout protection
- Retry logic with exponential backoff
- Configurable via environment variables and `pyproject.toml`

## Important pip/setuptools Note

Unlike npm `postinstall`, Python packaging does not guarantee dependency install hooks in all pip flows (especially wheel installs).

This implementation provides:

- A best-effort `setuptools` install hook in `setup.py`
- A manual CLI entry point: `package-tracker`

## Installation

Inside a package that uses setuptools:

```bash
pip install reo-package-tracker
```

Or from this directory:

```bash
cd python
pip install .
```

## Configuration

### Environment Variables

- `PACKAGE_TRACKER_ANALYTICS=false` - Disable tracking
- `PACKAGE_TRACKER_ANALYTICS=true` - Enable tracking for opt-in mode
- `PACKAGE_TRACKER_VERBOSE=true` - Enable verbose logging
- `PACKAGE_TRACKER_ENDPOINT=https://telemetry.reo.dev/data` - Custom endpoint

### `pyproject.toml` settings

Add this to your package:

```toml
[tool.reoSettings]
defaultOptIn = false
endpoint = "https://telemetry.reo.dev/data"
```

Settings:

- `defaultOptIn` (boolean, default: `true`)
  - `true`: opt-out mode (tracking enabled unless explicitly disabled)
  - `false`: opt-in mode (tracking disabled unless explicitly enabled)
- `endpoint` (string, optional)
  - Tracking endpoint override

## Usage

### Manual run

```bash
PACKAGE_TRACKER_VERBOSE=true package-tracker
```

### Module run

```bash
python -m package_tracker
```

## Payload Shape

The payload includes:

- `package`: package name and version
- `system`: platform, architecture, Python version, OS info
- `installation`: timestamp, cwd, install context
- `metadata`: git user/domain, CI context, pip user (if available)

## Privacy & Opt-Out

Collected:

- Package metadata
- System/platform metadata
- Installation context
- Email domain only (never full email)

Not collected:

- Source code contents
- Passwords or secrets
- Full email addresses

Users can always disable telemetry:

```bash
export PACKAGE_TRACKER_ANALYTICS=false
pip install your-package
```

## Development

See `python/TESTING.md` for test flows and verification commands.

## License

MIT
truffile 0.1.14
truffile the TruffleOS SDK - Connect and deploy apps to Truffle devices
License: MIT
Requires Python: >=3.10

# truffile

TruffleOS SDK - deploy apps to Truffle devices

## install

```bash
pip install truffile
```

or from source:
```bash
git clone <repo>
cd truffile
pip install -e .
```

## commands

```bash
# find truffle devices on your network
truffile scan

# connect to a device (first time requires approval on device)
truffile connect truffle-6272

# deploy an app from current directory
truffile deploy

# deploy an app from a specific path
truffile deploy ./my-app

# deploy with interactive shell (for debugging)
truffile deploy -i

# list installed apps on connected device
truffile list apps

# list connected devices
truffile list devices

# disconnect from a device
truffile disconnect truffle-6272

# disconnect from all devices
truffile disconnect all
```

## truffile.yaml

apps need a `truffile.yaml` in their directory:

```yaml
metadata:
  name: My App
  description: does cool stuff
  type: background  # or foreground
  icon_file: ./icon.png
  process:
    cmd: [python, app.py]
    working_directory: /
    environment:
      MY_VAR: value
  # schedule for background apps only:
  default_schedule:
    type: interval  # interval | times
    interval:
      duration: "1h"  # 15m, 2h, 1d, etc.
      schedule:
        daily_window: "09:00-17:30"  # optional
        allowed_days: [mon, tue, wed, thu, fri]  # optional

files:
  - source: ./app.py
    destination: ./app.py

run: |
  pip install requests
```

### schedule types

**interval** - run every N minutes/hours:
```yaml
default_schedule:
  type: interval
  interval:
    duration: "30m"
    schedule:
      daily_window: "06:00-22:00"
      allowed_days: [mon, tue, wed, thu, fri]
```

**times** - run at specific times:
```yaml
default_schedule:
  type: times
  times:
    run_times: ["08:00", "12:00", "18:00"]
    allowed_days: [mon, tue, wed, thu, fri]
```

## example apps

see `example-apps/` for working examples:
- `example-apps/ambient/hedge` - background app
- `example-apps/focus/finance` - foreground app