semvec/pypi-packages huggingface dataset:
gmail-sdk-ldraney 0.1.3
Python SDK for the Gmail REST API
License: MIT
Requires Python: >=3.10
Keywords: gmail, api, sdk, python, email

[![PyPI](https://img.shields.io/pypi/v/gmail-sdk-ldraney)](https://pypi.org/project/gmail-sdk-ldraney/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

# gmail-sdk

Python SDK for the Gmail REST API. Uses `httpx` directly — no `google-api-python-client`.

## Install

```bash
pip install ldraney-gmail-sdk
```

## Quick Start

```python
from gmail_sdk import GmailClient

# Load token from ~/secrets/google-oauth/gmail-draneylucas.json
client = GmailClient(account="draneylucas")
print(client.get_profile())

# List unread messages
messages = client.list_messages(query="is:unread", max_results=5)

# Send an email
client.send_message(to="someone@example.com", subject="Hello", body="Hi there!")

# Reply to a message
client.reply(message_id="abc123", body="Thanks!")

# Send an HTML email
client.send_message(
    to="someone@example.com",
    subject="Hello",
    body="Plain text fallback",
    html_body="<h1>Hello!</h1><p>This is <b>HTML</b>.</p>",
)

# Reply-all, mark as read/unread
client.reply_all(message_id="abc123", body="Thanks everyone!")
client.mark_as_read(message_id="abc123")
client.mark_as_unread(message_id="abc123")

# List mailbox changes since a history ID (for incremental sync)
profile = client.get_profile()
changes = client.list_history(start_history_id=profile["historyId"])
```

## First-Time Setup

Run the OAuth flow to authorize an account:

```python
from gmail_sdk import GmailClient

client = GmailClient.authorize(account="draneylucas")
print(client.get_profile())
```

This opens a browser for Google sign-in and saves the token for future use.

## Multi-Account

```python
personal = GmailClient(account="draneylucas")
work = GmailClient(account="lucastoddraney")
dev = GmailClient(account="devopsphilosopher")
```

## Configuration

- Secrets directory: `~/secrets/google-oauth/` (override with `secrets_dir=` or `GMAIL_SECRETS_DIR` env var)
- Credentials file: `{secrets_dir}/credentials.json`
- Token files: `{secrets_dir}/gmail-{account}.json`
gcal-mcp-ldraney 0.1.1
MCP server wrapping gcal-sdk for Google Calendar access
License: MIT
Requires Python: >=3.10
Keywords: google-calendar, mcp, claude, ai

[![PyPI](https://img.shields.io/pypi/v/gcal-mcp-ldraney)](https://pypi.org/project/gcal-mcp-ldraney/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

# gcal-mcp

MCP server for Google Calendar, built on [gcal-sdk](https://github.com/ldraney/gcal-sdk).

## Install

```bash
pip install gcal-mcp
```

## Run

```bash
gcal-mcp
# or
python -m gcal_mcp
```

## Claude Code config

Add to your `.mcp.json`:

```json
{
  "mcpServers": {
    "calendar": {
      "command": "gcal-mcp"
    }
  }
}
```

## Prerequisites

Google OAuth credentials must be set up at `~/secrets/google-oauth/`:
- `credentials.json` -- OAuth client credentials
- `token.json` -- stored OAuth token

See the [Google OAuth Setup Guide](docs/google-oauth-setup.html) for details.

## Available tools

### Events
- `list_events` -- List events from a calendar
- `get_event` -- Get a single event by ID
- `create_event` -- Create a new event
- `update_event` -- Full update (PUT) of an event
- `patch_event` -- Partial update (PATCH) of an event
- `delete_event` -- Delete an event
- `move_event` -- Move an event to another calendar
- `list_event_instances` -- List instances of a recurring event

### Calendars
- `list_calendars` -- List all calendars
- `get_calendar` -- Get details about a calendar
- `create_calendar` -- Create a new secondary calendar
- `delete_calendar` -- Delete a secondary calendar
- `clear_calendar` -- Clear all events from a calendar

### FreeBusy
- `query_freebusy` -- Query free/busy info for calendars
Topsis-vishesh-102316085 1.0.0
A Python package for TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution)
License: MIT
Requires Python: >=3.6

# Topsis-vishesh-102316085

A Python package implementing TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) for multi-criteria decision making.

## Description

TOPSIS is a multi-criteria decision analysis method. It helps in ranking alternatives based on their distance from the ideal solution. This package provides both a Python library and a command-line interface for performing TOPSIS analysis.

## Installation

### From PyPI (after publishing)
```bash
pip install Topsis-vishesh-102316085
```

### From source
```bash
git clone https://github.com/yourusername/topsis.git
cd topsis
pip install .
```

## Usage

### Command Line

After installation, you can use the `topsis` command:

```bash
topsis <InputDataFile> <Weights> <Impacts> <OutputResultFileName>
```

**Example:**
```bash
topsis data.csv "1,1,1,2" "+,+,-,+" output.csv
```

**Parameters:**
- `InputDataFile`: Path to CSV file containing the decision matrix (first column should be alternative names)
- `Weights`: Comma-separated weights for each criterion (e.g., "1,1,1,2")
- `Impacts`: Comma-separated impacts for each criterion, either '+' (benefit) or '-' (cost) (e.g., "+,+,-,+")
- `OutputResultFileName`: Path where the result CSV will be saved

### Python Library

```python
from Topsis_vishesh_102316085 import topsis

# Perform TOPSIS analysis
result_df = topsis(
    input_file='data.csv',
    weights_str='1,1,1,2',
    impacts_str='+,+,-,+',
    output_file='output.csv'
)

print(result_df)
```

## Input File Format

The input CSV file should have:
- First column: Names/IDs of alternatives
- Remaining columns: Numeric criteria values

**Example (data.csv):**
```
Fund Name,P1,P2,P3,P4,P5
M1,0.84,0.71,6.7,42.1,12.59
M2,0.91,0.83,7.0,31.7,10.11
M3,0.79,0.62,4.8,46.7,13.23
```

## Output

The output CSV file will contain:
- All original columns
- `Topsis Score`: Calculated TOPSIS score for each alternative
- `Rank`: Rank of each alternative (1 being the best)

## Validation

The package performs comprehensive validation:
- Correct number of parameters
- File existence check
- Minimum 3 columns requirement
- Numeric values validation (from 2nd column onwards)
- Equal number of weights, impacts, and criteria
- Valid impact values (+ or -)
- Comma-separated format for weights and impacts

## Sample Example

Reference implementation: https://pypi.org/project/topsis-3283/

## License

MIT License

## Author

Vishesh (Roll No: 102316085)