semvec/pypi-packages huggingface dataset:
python-imagesearch 1.3.0
A wrapper around openCv to perform image searching
Requires Python: >=3.5

# Python-ImageSearch

it's a wrapper around pyautogui and opencv2, to allow you to easily add cross-platform image searching capabilities
to your project.

See the documentation for examples. If you have any questions feel free to contact me.

Documentation : https://brokencode.io/how-to-easily-image-search-with-python/

This is the currently maintained package, so if you've come from
https://pypi.org/project/python-imagesearch-drov0/

you are at the right place

## Easy Example:

## Install:

> pip install python-imagesearch

You may need to install dependencies depending on your OS:

### Linux :
```
sudo pip3 install python3-xlib
sudo apt-get install scrot python3-tk python3-dev python3-opencv
```
### Windows :

No setup should be needed 

### MacOs : 
```
brew install opencv
pip3 install -U pyobjc-core
pip3 install -U pyobjc
```
I have not tested myself as I don't own a mac, but it was tested and documented in this issue : https://github.com/drov0/python-imagesearch/issues/5
mkdocs-git-snippet 0.1.2
An MkDocs plugin that reads snippets from Github Repositories.
Requires Python: >=3.5

# mkdocs-git-snippet [![Test][test-badge]][test] [![Code style: black][black-badge]][black]

<!-- badge links -->
[test-badge]: https://github.com/mercari/mkdocs-git-snippet/workflows/Test/badge.svg
[test]: https://github.com/mercari/mkdocs-git-snippet/actions?query=workflow%3ATest
[black-badge]: https://img.shields.io/badge/code%20style-black-000000.svg
[black]: https://github.com/psf/black

Mkdocs Plugin for snippet from git repository.

## Installation

```shell
pip install mkdocs-git-snippet
```

## Configuration

Enable the plugin in your mkdocs.yml.

```markdown
plugins:
  - git-snippet
```

If the folder name that contain your documentation source files is not default `docs`, you need specify it with `base_path` option.

```markdown
plugins:
  - git-snippet:
        base_path: docs
```

By default, this plugin works for all pages. You can enable only for the specific page by setting `all_pages` option to false.

```markdown
plugins:
  - git-snippet:
      all_pages: false
```

When `all_pages` is false, this plugin only works for the page that added `git-snippet: enable`.

```markdown
<!-- git-snippet: enable -->

# Your document
....
```

### Acessing Private Repositories

To add a snippet from a private repository set the `GITHUB_TOKEN` environment variable while building mkdocs documentation.

## Usage

### All files from default branch

```
{{ gitsnippet('mkdocs/mkdocs', 'docs/user-guide/plugins.md') }}
```

It works for non markdown file too. The snippet format is raw text.
Please format it if needed.

````
```python
{{ gitsnippet('mkdocs/mkdocs', 'mkdocs/config/base.py') }}
```
````

### All files from specific branch/tag/commit

````
```python
{ gitsnippet('mkdocs/mkdocs', 'mkdocs/config/base.py', '1.1')
```
````

````
```python
{{ gitsnippet('mkdocs/mkdocs', 'mkdocs/config/base.py', '520314fed933aed8de62b08dd7fc6e25c0ff482b') }}
```
````

### Snippet a section

For markdown file, it is possible to specify a section.
```
{{ gitsnippet('mkdocs/mkdocs', 'docs/user-guide/plugins.md', section='## Using Plugins') }}
```
or
```
{{ gitsnippet('mkdocs/mkdocs', 'docs/user-guide/plugins.md', 'master', '## Using Plugins') }}
```

### Insert indent

You can insert indent to snippet using `indent`.
`indent` has an argument `width`, which means the number of space to indent by. The default is 4.
See more details of `indent` [here](https://jinja.palletsprojects.com/en/master/templates/#indent).

````
??? example "Plugin.md"

    {{ gitsnippet('mkdocs/mkdocs', 'docs/user-guide/plugins.md') | indent }}

    !!! note

        ```python
        {{ gitsnippet('mkdocs/mkdocs', 'mkdocs/config/base.py) | indent(width=8) }}
        ```
````

## Contribution

Please read the CLA carefully before submitting your contribution to Mercari.
Under any circumstances, by submitting your contribution, you are deemed to accept and agree to be bound by the terms and conditions of the CLA.

https://www.mercari.com/cla/

## License

Copyright 2021 Mercari, Inc.

Licensed under the MIT License.
adeso 0.0.4
Application for Decryption, Encryption and Steganographic Operations
Requires Python: >=3.11.1

<div class="text-column">
 <h2 style="margin-top: 5px; text-indent: 390px; font-size: 3em">A.D.E.S.O.</h2>
 <h2 style="margin-top: 5px; text-indent: 150px">
     <b>A</b>pplication for
     <b>D</b>ecryption, <b>E</b>ncryption and
     <b>S</b>teganographic <b>O</b>perations
 </h2>
 <h2 style="margin-top: 50px;"><b>Summary:</b></h2>
 <p style="margin-top: 0px;">
  <a href="https://csrc.nist.gov/glossary/term/steganography">Steganography</a>
  is the practice of concealing information within another message to avoid detection.
  <br><br><a href="https://www.nist.gov/cryptography">Encryption</a>
  is the process of converting plaintext into ciphertext, which is unreadable.
  <br><br> This application provides both of these functionalities.  Users can first encrypt their data, via
  a password using an AES-128 algorithm in CBC mode. <br><br>Then, users can hide the encrypted data (ciphertext)
  within an image of their choice via steganography.
 </p>
 <h2 style="margin-top: 30px;"><b>Key Features:</b></h2>
 <ul style="margin-top: 5px;">
  <li>A web interface is provided to paste large plaintext objects without a terminal buffer limit.</li>
  <br>
  <li>All encryption, decryption, encoding and decoding is done in memory.</li>
 </ul>
 <h2 style="margin-top: 30px;"><b>Tools Used:</b></h2>
 <ul style="margin-top: 5px;">
  <li>Front end: <a href="https://svelte.dev/">Svelte</a> using <a href="https://kit.svelte.dev/">SvelteKit</a> </li>
  <br>
  <li>API: <a href="https://www.python.org/">Python 3.11.1 </a> using <a href="https://pypi.org/project/Flask/">Flask 2.3.2</a> </li>
  <br>
  <li>Cryptography: <a href="https://pypi.org/project/cryptography/">cryptography 41.0.1</a> </li>
  <br>
  <li>Steganography using <a href="https://wiki.bi0s.in/forensics/lsb/">LSB</a></li>
 </ul>
 <h2 style="margin-top: 30px;"><b>Gotchas:</b></h2>
 <ul style="margin-top: 5px;">
  <li>Large ciphertext and images can result in API lag or lockups for steganography.</li>
  <br>
  <li>The decode operation is done on the file selected, not the image displayed on the UI.</li>
 </ul>
 <h2 style="margin-top: 50px;"><b>Links:</b></h2>
 <p style="margin-top: 0px;">
 <li><a href="https://HartmanAnalytics.github.io/adeso/">Documentation</a></li>
 <br>
 <li><a href="https://pypi.org/project/adeso/">PyPi Production</a></li>
 <br>
 <li><a href="https://test.pypi.org/project/adeso/">PyPi Test</a></li>
 <h2 style="margin-top: 30px;"><b>Installation:</b></h2>
 <code>pip install adeso</code>
</div>
pytest-async-generators 0.0.4
Pytest fixtures for async generators
Requires Python: >=3.11,<4.0

# Pytest Async Generators

Pytest fixtures for async generators

## Usage

Invoke any async generator with `await subscribe_to_messages()` and then `await wait_for_messages()` to retrieve the results.

```
import asyncio
import pytest
from typing import AsyncGenerator, Callable


@pytest.mark.asyncio
async def test_counting(subscribe_to_messages: Callable) -> None:
    async def count() -> AsyncGenerator[int, None]:
        for n in range(10):
            await asyncio.sleep(0.1)
            yield n

    subscription = await subscribe_to_messages(count())
    messages = await subscription.wait_for_messages()
    assert messages == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
```

`subscribe_to_messages()` can be passed a `timeout` parameter to control how long to wait for new messages.
timer-module 1.3.0
Timer Module with performance profiling features
Requires Python: >=3.10

___
## 📋 Prerequisite:
```
Requires Python >= 3.10
TimeProfiler makes use of new features from Python's typing module.
```

___
## 🛠️ Installation:
```
pip install timer-module
```

___
## 🖥️ Timer Usage:
### Example Usage:
```python
import time
from timer_module import TimerModule

timer_module = TimerModule().start()

timer_module.pause()
time.sleep(0.2)

timer_module.start()
time.sleep(0.5)

seconds = timer_module.get_time()
print(seconds)
```

#### Get the current time
```python
# Seconds
TimerModule().get_time() # float

# Milliseconds
TimerModule().get_time_ms() # float

# Nanoseconds
TimerModule().get_time_ns() # float
```


#### Set the starting time
```python
# Seconds
TimerModule().set_time(1.0)

# Milliseconds
TimerModule().set_time_ms(1.0)

# Nanoseconds
TimerModule().set_time_ns(1.0)
```

#### Pause timer:
```python
TimerModule().pause()
```

#### Refresh timer (preserves timer run state):
```python
TimerModule().refresh()
```

#### Reset timer (resets everything)
```python
TimerModule().reset()
```

___
## 🖥️ Profiler Usage:
TimeProfiler also includes a "function_profiler" and "async_function_profiler", in a class the asynchronous methods are handled automatically, but for functions you need to select the appropriate decorator.

```python
import time
from timer_module import TimeProfiler

# You only need this line to profile the entire class 
# The program is run normally, this decorator will wrap 
# The class and its methods in order to track execution time
@TimeProfiler().class_profiler
class ExampleClass:
    def __init__(self):
        time.sleep(0.1)

    def method_1(self):
        time.sleep(0.5)
        self.method_2()

    def method_2(self):
        time.sleep(1)
        self.method_3()

    def method_3(self):
        time.sleep(1)
        self.method_4()

    def method_4(self):
        time.sleep(0.1)
        self.method_5()

    def method_5(self):
        time.sleep(0.1)


ec = ExampleClass()
ec.method_1()
```

#### Output:
![profiler_output](https://github.com/syn-chromatic/timer-module/assets/68112904/155f7515-fc5a-480b-b7eb-d1e710acae3f)
sync-dl-ytapi 1.1.2
An addon for sync-dl, providing commands which utilize the youtube api
Requires Python: >=3.6

<img align="left" width="80" height="80" src="https://raw.githubusercontent.com/PrinceOfPuppers/sync-dl/main/icon.png">

# sync-dl-ytapi
<p>
<img src="https://img.shields.io/pypi/dm/sync-dl-ytapi">
<img src="https://img.shields.io/pypi/l/sync-dl-ytapi">
<img src="https://img.shields.io/pypi/v/sync-dl-ytapi">
<img src="https://img.shields.io/badge/python-%E2%89%A53.6-blue">

</p>


> An addon for sync-dl, providing commands which utilize the youtube api
- [INSTALLATION](#INSTALLATION)
- [ABOUT](#ABOUT)
- [USAGE](#USAGE)
- [EXAMPLE](#EXAMPLE)
- [DEVLOPMENT](#DEVLOPMENT)

# INSTALLATION
First install sync-dl:
```
pip install sync-dl
```
Using any commands in sync-dl which require this addon will prompt the user to install this addon.


# ABOUT
Provides sync-dl the ability to edit remote playlists on youtube through the youtube-api


# Usage
## Push Order Command:
```
sync-dl ytapi --push-order PLAYLIST
```
This will prompt you to install sync-dl-ytapi if you have not already, and will
print out the url to log in with google. Once you have done this it will
push the local order of PLAYLIST to youtube, reordering songs to match the local order (songs in remote but not in local will always stay after what they are currently after)

PLAYLIST is simply the name of the directory which contains the playlist. playlist directory will always be in current working directory unless a music directory is specified using the -l, --local-dir option to hard set a music directory.

You can also logout (revoke the access tokens and delete the saved credentials) using
the following command
```
sync-dl ytapi --logout
```

To see all options use the command:
```
sync-dl ytapi -h
```

## Transfer Command:
```
sync-dl ytapi transfer [OPTINOS] SRC_PLAYLIST DEST_PLAYLIST
```
Transfers songs between `SRC_PLAYLIST` and `DEST_PLAYLIST` on both local and remote, moving a single song using `-t SI DI` or a range of songs `-r S1 S2 DI`

To see all options as well as a more indepth description use the command:
```
sync-dl ytapi transfer -h
```

# DEVLOPMENT
To build for devlopment run:
```
git clone https://github.com/PrinceOfPuppers/sync-dl-ytapi.git

cd sync-dl-ytapi

pip install -e .
```
This will build and install sync-dl in place, allowing you to work on the code without having to reinstall after changes, it will also install sync-dl as it is a dependancy
Tanki 1.0.0
API wrapper for Tanki Online's ratings API
Requires Python: >=3.7

# Tanki 

Tanki is an API wrapper for Tanki Online's rating API. Allows you to easily search for users and get information about them. To get started, create a new `Profile` object using `tanki.Profile('username')`

**Notes**
- `raw_time_played` returns time in milliseconds
- If you don't own the grade of a hull, module, or turret, it'll return `None` for all attributes

**Quick Start**
```py
import tanki

# initialize a object
profile = tanki.Profile('walker38552')

# get kills and deaths
print(f'Kills: {profile.kills}, Deaths: {profile.deaths}')

# get k/d ratio
print(f'K/D: {profile.kd}')

# get rank
print(profile.get_rank())
print(profile.get_rank().rank_name)

# get drone data
for drone in profile.get_drones_played():
    print(drone.name, drone.score_earned, drone.time_played_hours)

# get hull data
for hull in profile.get_hulls_played():
    print(hull.name, hull.time_played_hours)
    # show statistics for each grade of the hull
    print(hull.grades.mk1.score_earned)
    print(hull.grades.mk2.score_earned)
    print(hull.grades.mk3.score_earned)
    print(hull.grades.mk4.score_earned)
    print(hull.grades.mk5.score_earned)
    print(hull.grades.mk6.score_earned)
    print(hull.grades.mk7.score_earned)
```