semvec/pypi-packages huggingface dataset:
connections-tui 0.1.0rc6
Play NYT Connections in the Terminal using rich for wide terminal compatibility.
Requires Python: >=3.8
Keywords: connections, games, nyt, tui

# NYT Connections in the Terminal

[![PyPI version](https://badge.fury.io/py/connections-tui.svg)](https://badge.fury.io/py/connections-tui)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A lightweight, dependency-free TUI for playing the NYT Connections game in your terminal. It fetches the official daily puzzle and lets you play with a simple, clean interface using Python's built-in `curses` library.

## Preview

Here's a glimpse of what it looks like in action:
```
$ connections-tui -d 2024-08-23
              NYT Connections — 2024-08-23
                     Strikes: ❤❤❤❤❤

Solved groups: (none yet)

  [ BUFF ]          [ CREAM ]         [ FINISH ]        [ FAWN ]
  [ TAN ]           [ MONITOR ]       [ GLOVES ]        [ BOA ]
  [ CHECK ]         [ TERMINAL ]      [ TIE ]           [ FAN ]
  [ SCREEN ]        [ CORSET ]        [ DISPLAY ]       [ BASK ]

Use arrows/WASD to navigate, [Space]=Select, [Enter]=Submit, f=shuffle, c=clear, q=quit
```

## Features

- Play the official NYT Connections puzzle for any day.
- No external dependencies, just Python 3.8+.
- Smooth keyboard navigation (Arrow keys or WASD).
- Shuffle, select, and submit words.
- Strike tracking with hearts (`❤`) or ASCII (`O`/`x`) for compatibility.
- "One away" hints when you're close.
- After solving, you can immediately load the next or previous day's puzzle.
- Load puzzles from local JSON files for offline play or custom games.
- Set a random seed for reproducible shuffles.

## Installation and Usage

Arguably the simplest way to run the project is with `uv`:

```bash
uvx connections-tui@latest
```

You can of course install directly from PyPI:
```bash
pip install -U connections-tui
```

and run the console command in your terminal:
```bash
connections-tui
```

### Command-line Options

You can customize the game with these arguments:

| Argument | Shorthand | Description |
|---|---|---|
| `--date <YYYY-MM-DD>` | `-d` | Play the puzzle for a specific date. (Default: today) |
| `--file <path/to/file.json>` | `-f` | Play from a local JSON puzzle file. |
| `--seed <integer>` | `-s` | Set the random seed for reproducible board shuffles. |
| `--ascii` | `-a` | Use ASCII characters (`O`/`x`) for strikes instead of hearts. |

Example:
```bash
# Play yesterday's puzzle with ASCII hearts
connections-tui -d $(date -v-1d +%Y-%m-%d) --ascii
```

## Keybindings

| Key | Action |
|---|---|
| `Arrow Keys`, `WASD`, `HJKL` | Move cursor |
| `Space` | Select/deselect a word (up to 4) |
| `Enter` | Submit your selection of 4 words |
| `f` | Shuffle the remaining words on the board |
| `c` | Clear your current selection |
| `q` | Quit the game |
| `n` | (After solving) Load the next day's puzzle |
| `p` | (After solving) Load the previous day's puzzle |

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
woodml-parser 1.0.0
Reference parser for WoodML woodworking markup language
Requires Python: >=3.10
Keywords: cut-list, joinery, markup, parser, woodml, woodworking

# WoodML Parser (Python)

Reference implementation of the WoodML parser for Python.

## Installation

```bash
pip install woodml-parser
```

Or install from source:

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

## CLI Usage

After installation, the `woodml` command is available:

```bash
# Parse and display project info
woodml parse project.woodml

# Generate a cut list
woodml cutlist project.woodml -f table

# Validate a file
woodml validate project.woodml

# Show project information
woodml info project.woodml -f json
```

### CLI Options

- `-o, --output <file>` - Write output to file instead of stdout
- `-f, --format <fmt>` - Output format: json, text, table (default: text)
- `-v, --verbose` - Show detailed output
- `-h, --help` - Show help message

## Library Usage

```python
from woodml import parse_and_resolve, generate_cut_list, format_cut_list

# Parse a WoodML document
woodml_source = '''
woodml: "1.0"

project:
  name: "Simple Box"
  units: imperial

formulas:
  vars:
    length: 12"
    width: 8"

parts:
  - id: side
    dimensions:
      length: $length
      width: $width
      thickness: 1/2"
    quantity: 2
'''

# Parse and resolve all variables
doc = parse_and_resolve(woodml_source)

# Generate cut list
cut_list = generate_cut_list(doc)
print(format_cut_list(cut_list))
```

## API

### Parsing

- `parse(source)` - Parse WoodML string into document
- `parse_and_resolve(source)` - Parse and resolve all variables/formulas

### Units

- `parse_dimension(value)` - Parse dimension string (e.g., `"3-1/2\""`)
- `to_inches(dim)` - Convert dimension to inches
- `to_millimeters(dim)` - Convert dimension to millimeters
- `format_imperial(dim)` - Format as imperial string
- `format_metric(dim)` - Format as metric string

### Formulas

- `create_context(variables)` - Create formula evaluation context
- `evaluate_formula(expr, context)` - Evaluate formula expression
- `resolve_formulas(formulas)` - Resolve all formulas in a Formulas object

### Utilities

- `validate_document(doc)` - Validate document structure
- `calculate_board_feet(doc)` - Calculate total board feet
- `generate_cut_list(doc)` - Generate cut list from resolved document
- `format_cut_list(items)` - Format cut list as string table

## License

MIT
whatthemullvad 0.0.1
Test if Mullvad SOCKS5 proxies can access a given URL.
Requires Python: >=3.9

# WhatTheMullvad
Test if Mullvad SOCKS5 proxies can access a given URL.

## Disclaimer
Neither I nor this project is affiliated with [Mullvad](https://mullvad.net/en).
I created this tool for personal use, and I'm sharing it hoping other people may benefit from it.

## Description
Some websites block certain Mullvad IP-addresses. 
You can use the [Mullvad Browser](https://mullvad.net/en/browser) or the [Mullvad Browser Extension (beta)](https://mullvad.net/en/download/browser/extension) to use a Mullvad server that isn't blocked.
However, manually trying each Mullvad proxy to find out which ones aren't being blocked can be quite cumbersome.
You can use this tool to find out which Mullvad proxies work for a certain website, and which ones don't.

## Usage
```
python3 -m src.main [-h] [-v VERBOSITY] url
```
```
positional arguments:
  url                   The URL to test via Mullvad SOCKS5 proxies.

options:
  -h, --help            show this help message and exit
  -v VERBOSITY, --verbosity VERBOSITY
                        Verbosity level: (0, 0.5/s, 1, 2, 3). 
                        Default = 2. 
                        Use 's' or 0.5 to only show succesful proxies.
```

## Roadmap
- [ ] Adding the option to output to files
    - Multiple file formats
- [ ] Adding the option to filter by countrycode
- [ ] Adding the option to use a custom proxy list