semvec/pypi-packages huggingface dataset:
pyproject-scripts 0.1.0
Run scripts defined in a project's pyproject.toml (like npm run)
Requires Python: >=3.11
Keywords: pyproject, scripts, cli

<div align="center">

# pyproject-scripts (`pps`)

Tiny, dependency‑free project‑local script runner for Python projects: declare scripts in `pyproject.toml` under `[tool.scripts.*]`, get instant `pps <name>` subcommands.

</div>

---
## Installation

```bash
# Install from PyPI
pip install pyproject-scripts

# editable / dev inside a cloned repo
pip install -e .
# or with uv
uv pip install -e .
```

---
## Defining Scripts

Define scripts in `pyproject.toml` under the `[tool.scripts]` table according to this schema:

```toml
[tool.scripts.<your-script-name>]
cmd = "<your command here>"
description = "<short description>"
cwd = "<optional working directory>"
env = { "<VAR>" = "<value>", ... }
shell = true | false
```

The meaning of each field is as follows:

| Field | Required | Type | Description |
|-------|----------|------|-------------|
| `cmd` | Yes | string | Command to execute (interpreted by shell unless `shell=false`). |
| `description` | No | string | Short human description shown in help listing. |
| `cwd` | No | string | Working directory (relative to discovered project root) or absolute path. |
| `env` | No | table  | Extra environment vars (stringified) layered over current env. |
| `shell` | No | bool | `true`/omitted: run via shell. `false`: tokenize with `shlex.split` and exec directly. |

---
## Usage Examples

Here's an example `pyproject.toml` snippet defining two scripts, `lint` and `test`:

```toml
[tool.scripts.lint]
cmd = "ruff check . && ruff format --check ."
description = "Run ruff linter"
cwd = "src"
env = { "RUST_LOG" = "info" }
shell = true

[tool.scripts.test]
cmd = "pytest -q"
description = "Run test suite"
shell = false
```

To run the `lint` script, simply execute:

```bash
pps lint
```

Additional arguments can be passed, for example to run a specific test file. Every
argument after the script name is forwarded to the command:

```bash
pps test tests/test_special_case.py
```

---
## Supported Python Versions

Tested on CPython >= 3.11. Older versions are not targeted because `tomllib`, used for parsing `pyproject.toml`, is only in the standard library since 3.11.

---
## License

AGPL-3.0-or-later. See `LICENSE` for full text.
postalservice 0.2.0
A package for second hand shopping

# Postal Service Python Library

[![PyPI version](https://badge.fury.io/py/postalservice.svg)](https://badge.fury.io/py/postalservice)

Python library for scraping second hand Japanese websites for easier access to the search results. Useful for creating datasets, notification systems, or web APIs. Targets the website API if available, or parses the HTML response.

## Features

- Mercari, Fril scraping
- Filter by keyword and size
- Built in asynchronous requests for fast html scraping
- Unit tested locally and with Github Actions workflow

## Installation

postalservice is available on PyPI as `postalservice`

```
pip install postalservice
```

## One shot example

```python
from postalservice import MercariService

mercari = MercariService()

# The `get_search_results` method returns a `SearchResults` object
searchresults = mercari.get_search_results({'keyword':'comme des garcons', 'size':'XL'})

# When you print the `SearchResults` object, it outputs a well-formatted JSON string
print(searchresults)
```

Output:

```json
[
    {
        "id": "m65906652855",
        "title": "ルイスレザー ジュンヤワタナベ JUNYA WATANABE MAN ライダース",
        "price": 120000.0,
        "size": "L",
        "url": "https://jp.mercari.com/item/m65906652855",
        "img": [
            "https://static.mercdn.net/c!/w=240,f=webp/thumb/photos/m65906652855_1.jpg?1705291813"
        ]
    },
    # ... more items
]
```

## Main methods of all service classes

`BaseService` is an abstract base class that defines the interface for a service. All services implement this and therefore have all these class methods:

- `get_search_results(params: dict) -> SearchResults`: Fetches data synchronously using the provided parameters, parses the response, and returns the results as SearchResults object.

- `get_search_results_async(params: dict) -> SearchResults`: Fetches data asynchronously using the provided parameters, parses the response (asynchronously, if needed), and returns the results as SearchResults object.

## todo

- Rakuten support
- General improvements to structure of the library
- Support for multiple sizes for sites where only one size is possible to select at a time