semvec/pypi-packages huggingface dataset:
moveread-pipelines-manual-select 0.1.9
Pipeline interface for manual grid selection
Requires Python: >=3.10

# Manual Select

> Pipeline interface for manual grid selection

## TL; DR

- Input (`Qin`): an image and the scoresheet model
- Output (`Qout`):
  - `Selected`: the grid corners
  - `Recorrect`: the image is too distorted to select the grid

## Usage

```python
import moveread.pipelines.manual_select as sel

Qin = Queue[tuple[sel.Task, State]] = ...
Qout = Queue[tuple[sel.Result, State]] = ...

api = SelectAPI(Qin, Qout)
await api.items().sync()
await api.select('id', Rectangle(tl=[0, 0], size=[1, 1]))
await api.recorrect('id')
```

- Run [demo.ipynb](demo.ipynb) for a full example
moveread-pipelines-manual-correct 0.1.8
Manual perspective correction pipeline for Moveread
Requires Python: >=3.10

# Manual Correct

> Pipeline interface for a Manual Correction API

## TL; DR

- Input (`Qin`): basically an image URL
- Output (`Qout`):
  - `Corrected`: perspective corners, or
  - `Rotated`: angle of rotation (in 90º increments)

## Usage

```python
import moveread.pipelines.manual_correct as corr

Qin = Queue[tuple[corr.Task, State]] = ...
Qout = Queue[tuple[corr.Result, State]] = ...


api = corr.CorrectAPI(Qin, Qout)

await api.items().sync()
await api.correct('id', Corners(tl=[0, 0], tr=[0, 1], br=[1, 1], bl=[1, 0]))
await api.rotate('id', 90)
```

- Run [demo.ipynb](demo.ipynb) for a full example
moveread-pipelines-extract-validation 0.1.8
Pipeline interface for the auto-extract validation API
Requires Python: >=3.10

# Extract Validation

> Pipeline interface for the auto-extract validation API

## TL; DR

- Input (`Qin`): a contoured image + whether it's already perspective-corrected
- Output (`Qout`): `'correct' | 'perspective-correct' | 'incorrect'`
  - But, `'perspective-correct'` is only acceptable whe the image isn't already perspective-corrected

## Usage

```python
import moveread.pipelines.extract_validation as val

Qin = Queue[tuple[val.Task, State]] = ...
Qout = Queue[tuple[val.Annotation, State]] = .....

api = val.ValidateAPI(Qin, Qout)

await api.items().sync()
await api.annotate('taskId', 'correct')
```
moveread-pipelines-auto-extract 0.1.11
Auto-extraction Moveread pipeline
Requires Python: >=3.10

# Auto Extraction

> Pipeline interface for an auto-extraction daemon

```
import moveread.pipelines.auto_extract as extr

Qin: tuple[extr.Task, State] = ...
Qerr: tuple[extr.Err, State] = ...
Qok: tuple[extr.ok, State] = ...

await extr.run(Qin, Qerr, Qok)
```

- Run [demo.ipynb](demo.ipynb) for a full example
spot2mp3-gooosexe 1.0.0
A simple tool to convert Spotify playlists to mp3 files.
Requires Python: >=3.8

# desc
convert your favourite spotify playlists and albums to mp3 files!

mp3 files come packaged with correct metadata, including album covers.

NOTE: single song download does not work yet. if you want to download a single songs, make a playlist with a single song inside.

# installation 
errr not done yet
aiostd 0.0.1
A simple library for asynchronous communication with standard I/O.
Requires Python: >=3.8
Keywords: asyncio, stdin, stdout

# aiostd

A simple library for asynchronous communication with standard I/O

The library employs asyncio's I/O multiplexing, which enables efficient I/O operations by monitoring multiple file descriptors simultaneously without the overhead of creating separate threads.

## Installation

```
pip install -U aiostd
```

## Usage

```python
from aiostd import open_io_stream
import sys

async def main():
    reader, writer = await open_io_stream(sys.stdin, sys.stdout)

    async for line in reader:
        writer.write(line)
        await writer.drain()

asyncio.run(main())
```
clisync 1.3.2
Generate click commands from your project
Keywords: pip requirements imports

# CliSync

A python package to sync module and command line tools.

- [CliSync](#clisync)
  - [Installation](#installation)
  - [Usage](#usage)
    - [Include all class methods](#include-all-class-methods)
    - [Specify the method to include](#specify-the-method-to-include)
  - [Distribution on pypi](#distribution-on-pypi)
  - [Changelog](#changelog)

## Installation

```bash
pip install clisync
```

## Usage
This package is used to create a command line tool from a module. The command line tool is created using the `click` package.

It is intended for a specific use case with singleton classes. The static methods of the class are included in the command line tool.

A working and complete demo is available in the [demo](demo) directory. A readme file is available to explain how to install and use the demo.

### Include all class methods

```python
class Object():

    @staticmethod
    def create(a: int, b: str, c: Optional[float] = 1.0) -> str:
        """
        This is a docstring for the create method.
        """
        return f'{a} {b} {c}'
```

```python
from clisync import CliSync
cli = CliSync(module='my_module', cls='Object', requires_decorator=False)
```

The `cli` is a `click.MultiCommand` object that can be used to create a command line tool.

### Specify the method to include

Use the decorator `@clisync.include` to include a method in the command line tool.

```python
import clisync
class Object():

    @staticmethod
    @clisync.include
    def method():
        """
        This method is included because of the decorator.
        """
        pass
```

```python
from clisync import CliSync
cli = CliSync(module='my_module', cls='Object')
```

## Distribution on pypi

> Make sure the version number is updated in the [__init__.py](clisync/__init__.py) file and in the [setup.py](setup.py) file.

The distribution on done with continuous integration using github actions. The secret `PYPI_API_TOKEN` is set in the repository settings.

Then, to trigger the release, we need to create a tag with the version number. The release will be automatically created and the package will be uploaded to pypi.

For example, to release version 1.0.0, we need to do the following:

```bash
git tag v1.0.0
git push origin v1.0.0
``` 

You can also create a release with a new tag in the github interface.

## Changelog

- 1.2.0: Add the set up script for auto-complete using the `setup_autocomplete` function.
- 1.1.0: Add the possibility to exclude methods from the command line tool using the decorator `@clisync.exclude()`.
- 1.0.0: Initial release