semvec/pypi-packages huggingface dataset:
matlearn 1.0.0.3
Matlearn can train machine learning models and comes in three major parts : preprocessing, training, and evaluation.
Requires Python: >=3.6

Welcome to my Machine Learning Library. With the help of this package, you can create machine learning models and algorithms.
Included preprocessing, training, evaluation.

The module supports linear regression to predict the outcome of continuous values. Also, it has logistic regression to predict the outcome of discrete values (classification) in two ways: 1. probability prediction, exact label prediction. All models are trained by the gradient descent algorithm.

When it comes to preprocessing, matlearn provides a variety of algorithms in order to make it easy to train a model.

And after training your model, you can use several different loss functions to validate the power of your model.

This project is completely written by Mahdi Zare and still developing.
classic-http-auth 0.2.1
Authentication and authorization
Requires Python: >=3.7

# Classic http auth

This package provides utils for authentication and authorization processes. Part of project "Classic".

## Authentication usage
```python
from classic.http_auth import authenticate


@join_point
@authenticate
def on_get_show_product(self, request, response):
    client = request.context.client
```
Client appears in request.context.client  

For this you need to create instance in your core level code
```python
from classic.http_auth import Authenticator

authenticator = Authenticator()
```

Decorate any controller as authentication needed (parameter "authenticator" will automatically describe in the constructor)  
```python
from classic.http_auth import authenticator_needed


@component
@authenticator_needed
class Catalog:
    catalog: services.Catalog
    ...
```
Decorators order is doesn't matter

Choose a properly strategy in your api factory code (adapter level) and put the authenticator in the controller  

```python
from classic.http_auth import strategies as auth_strategies

from simple_shop.adapters.shop_api import authenticator

authenticator.set_strategies(
    auth_strategies.JWT(
        secret_key='123',
    )
)

controller = controllers.Catalog(
    authenticator=authenticator,
    catalog=catalog,
)
```

You can pass multiple strategies to the authenticator. First succeed strategy will be winner  
If all strategies failed exception will be raised  

## Authorization usage
This stage is doing after authentication  

Define groups and permissions (access schema) in your core level code and pass this one to the authenticator  
```python
from classic.http_auth import Authenticator, Group, Permission

full_control = Permission('full_control')
read_only = Permission('read_only')

groups = (
    Group('admins', permissions=[full_control]),
    Group('managers', permissions=[read_only]),
    Group('guests'),
)

authenticator = Authenticator(app_groups=groups)
```
Apply authorization decorator to the controller method with needed groups and permission combination  
```python
from classic.http_auth import Group, authenticate


@authenticate
@authorize(Group('admin'))
def on_get_show_product(self, request, response):
   ...
```
You can combine groups and permissions as you want
```python
from classic.http_auth import Group, Permission, authenticate, authorize


@authenticate
@authorize((Group('admin') & Group('foo')) | Permission('write'))
def on_get_show_product(self, request, response):
   ...
```
If access denied exception will be raised  

## Dependencies
falcon for pushing client info through HTTP  
pyjwt for strategies  

## Tests and development mode
You can use dummy strategy
```python
auth_strategy = auth_strategies.JWT(secret_key='123')
auth_dummy_strategy = auth_strategies.Dummy(
    login=login,
    name=name,
    groups=groups,
    email=email
)

if not is_dev:
    authenticator.set_strategies(auth_strategy)
else:
    authenticator.set_strategies(auth_dummy_strategy)
```
Dummy auth data appear in a client
HangmanSolver 0.0.2
HangmanSolver is an asynchronous solver for hangman. It's very simple to use and is pretty fast.
Keywords: async,aiohttp,better_than_sync,hangman,hangman solver,api_wrapper

HangmanSolver
---------------------------
Async-Friendly Hangman solver.

Source - https://github.com/TheOnlyWayUp/hangmanSolver

Wiki - https://github.com/TheOnlyWayUp/hangmanSolver/wiki

```python
    import hangman, asyncio
    h = hangman.HangmanSolver()
    solve = asyncio.run(h.solve("Ca_e"))
    print(f"{solve.len} possible answers for {solve.query}.\n{solve.words}.\n\nDir - {dir(solve)}")
```
Output - 
```
22 possible answers for Ca_e.
['Cade', 'Cade', 'Cafe', 'Cafe', 'Cage', 'Cage', 'Cake', 'Cake', 'Came', 'Came', 'Cane', 'Cane', 'Cape', 'Cape', 'Care', 'Care', 'Case', 'Case', 'Cate', 'Cate', 'Cave', 'Cave'].

Dir - ['__annotations__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'len', 'query', 'words']
```

```python
    import hangman, asyncio
    h = hangman.HangmanSolver(interactive=True)
    solve = asyncio.run(h.solve())
    print(f"{solve.len} possible answers for {solve.query}.\n{solve.words}.\n\nDir - {dir(solve)}")
```
Output -
```
> Enter all known values as letters, and unknown values as _s.
> Example - If the word to guess is 'Cake', and only the letter 'e' is given, you should enter '___e'.

Ca_e

22 possible answers for Ca_e.
['Cade', 'Cade', 'Cafe', 'Cafe', 'Cage', 'Cage', 'Cake', 'Cake', 'Came', 'Came', 'Cane', 'Cane', 'Cape', 'Cape', 'Care', 'Care', 'Case', 'Case', 'Cate', 'Cate', 'Cave', 'Cave'].

Dir - ['__annotations__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'len', 'query', 'words']
```

Created by TheOnlyWayUp#1231 - https://github.com/TheOnlyWayUp/
testing-ivi-api 0.0.5
Tetsing package
Requires Python: >=3.9

### Тестовое задание для тестировщика от компании [IVI](https://www.ivi.ru/)

Цель:
   - реализовать фреймворк для автоматического тестирования REST API, документацию можно смотреть [тут.](http://rest.test.ivi.ru/v2)
-----------------------
Зависимости:
   - Docker/Python 3.9
-----------------------------------------------
Все сценарии тестирования расположены в файле test_ivi_api/test_ivi_api.py, запуск тестов возможен двумя путями:
   1. Клонировать данный репозиторий  с помощью команды `git clone`, после нужно создать файл .env, его пример лежит к корне проекта .env_example.
Далее сбилдить образ на основе Dockerfile с помощью команды `docker build -t ivi_api .` и запустить контейнер командой `docker run --env-file .env ivi_api`.
Тесты запустятся автоматически, таким образом, при необходимости мы можем поднимать контейнер по расписанию и выполнять автоматическое тестирование.
   2. Данный проект выложен на [pypi](https://pypi.org/). При наличии установленного python 3.9 можно скачать pip-пакет с помощью команды `pip install testing-ivi-api`.
После скачивания нужно установить переменные среды `USERNAME_IVI` и `PASSWORD_IVI` для доступа к API. Запуск тестов производится командой `pytest --pyargs test_ivi_api`.