semvec/pypi-packages huggingface dataset:
dhttp 1.3.3
A simple, dynamic, decorator-based HTTP server inspired by Node.js's Express. Supports trio, TLS and WebSockets.
License: MIT
Keywords: http server httpd express decorator simple easy dynamic trio tls ssl websocket websockets

# dhttp

**dhttp**, which is pretty short for _decorable HTTP_, is a
simple, yet dynamic, HTTP server written for Python 3.  
It is inspired by Node.js's Express library.

"Decorable" is a reference to how extensively decorators are
used throughout this project. They are very useful, and
are one of the nicest syntaxes for a callback system like
this.

## Example code

    import dhttp
    import random

    app = dhttp.DHTTPServer(int(sys.argv[1]) if len(sys.argv) > 1 else 8005)

    app.alias('/index', '/')
    app.alias('/index.htm', '/')
    app.alias('/index.html', '/')

    test_index = """<!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>My first DHTTP server</title>
        </head>

        <body>
            <p><h2>Congratulations!</h2></p>
            <hr>
            <p><b>dhttp {version}</b> is now running on your machine.</p>
            <p>How about <i>{party}</i> to comemorate? :)</p>
        </body>
    </html>"""

    party_stuff = [
        'a bottle of wine', 'a bottle of champagne', 'a big party',
        'THE party, just', 'THE party', 'lots of cats', 'partyception',
        'balloons and cakes', 'a big-endian cake', 'lots of confetti',
        'the Confetti-o-Tron 2000', 'HTTP juice', 'Spicy Bytes',
        'antimatter', 'cats writing code', 'a smile breaking the 4th wall'
    ]

    @app.get('/')
    def serve_index(req, res):
        res.end(test_index.format(
            party = random.choice(party_stuff),
            version = DHTTP_VERSION
        ))

    @app.on_log
    def print_log(log):
        if log.request.get_header('X-Forwarded-For') is not None:
            log.ip = log.request.get_header('X-Forwarded-For')
            print(log, '  (forwarded)')

        else:
            print(log)

    @app.serve_forever
    def on_serve():
        print(f"   == Listening on port: {app.port} ==")
lineparser 0.0.0.dev7
Fast parser for fixed-column line data files
License: MIT

# lineparser
*lineparser* is a small library with one goal: parse fixed-width formatted files extremely quickly.
In order to achieve this, *lineparser* uses **Cython** to obtain the speed offered by good old
**C** code and the convenience of **Python**.

Documentation can be found [here](https://jkarns275.github.io/lineparser/).

# Installing
You should be able to install *lineparser* via pip if you are on a Windows or Linux 64 bit machine.

```
$ pip3 install lineparser
```

# Example

demo.py:
```python
import lineparser
import time

fields = [(lineparser.Float64, 12), (lineparser.Float64, 10), (lineparser.Float64, 12), 
        (lineparser.String, 6), (lineparser.String, 6), (lineparser.String, 14),
        (lineparser.String, 14), (lineparser.Float64, 6)]

try:
    start = time.time()

    # On a successfull parse, result will be a list of lists and numpy arrays (strings will be in 
    # lists, and numbers will be in numpy arrays). 
    result = lineparser.parse(fields, b'data/small_data.par')

    end = time.time()

    print(f"Took {end - start} seconds to parse")
except lineparser.LineParsingError as e:
    print(f"Encountered the following error while trying to parse:\n {str(e)}")

```

data/small_data.par
```
    31.43339 6.531E-28   31.442390     3     2       0.00048       0.00000   100
    41.89467 1.415E-26   62.878170     4     3       0.00065       0.00000   100
    41.89786 3.538E-27   62.876840     4     3       0.00064       0.00000   100
    ...
```

Running the example: `python3 demo.py`

# Installing from Source
Installing from source is also easy. You must have GCC installed on your machine, and you must have
**Cython** installed only if you want to modify the library. Then run this command:

```
$ python3 setup.py install
```
# Building
*lineparser* is simple to build, and should only require one command:

```
$ python3 setup.py build_ext --inplace
```

You should then be able to import it in a python interpreter (in the build directory):

```
$ python3 setup.py build_ext --inplace
$ python3 
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lineparser
>>> ...
```
scrapy-mysql-pipeline 2019.7.19
Asynchronous mysql Scrapy item pipeline
License: MIT

.. figure:: https://img.shields.io/badge/Python-3.6-blue.svg
   :alt: Python 3.6

   Python 3.6

scrapy-mysql-pipeline
---------------------

Asynchronous mysql `Scrapy <https://doc.scrapy.org/en/latest/>`__ item
pipeline

Installation
^^^^^^^^^^^^

.. code:: bash

   pip install scrapy-mysql-pipeline

Configuration
^^^^^^^^^^^^^

Add pipeline

.. code:: python

   ITEM_PIPELINES = {
       'scrapy_mysql_pipeline.MySQLPipeline': 300,
   }

Default values:

.. code:: python

   MYSQL_HOST = 'localhost'
   MYSQL_PORT = 3306
   MYSQL_USER = None
   MYSQL_PASSWORD = ''
   MYSQL_DB = None
   MYSQL_TABLE = None
   MYSQL_UPSERT = False
   MYSQL_RETRIES = 3
   MYSQL_CLOSE_ON_ERROR = True
   MYSQL_CHARSET = 'utf8'

``MYSQL_USER``, ``MYSQL_PASSWORD``, ``MYSQL_DB`` and ``MYSQL_TABLE``,
variables must be set in settings.py
pytest-describe-it 0.1.0
plugin for rich text descriptions
License: MIT

# pytest-describe-it

[![PyPI version](https://badge.fury.io/py/pytest-describe-it.svg)](https://pypi.org/project/pytest-describe-it/) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pytest-describe-it.svg?color=green) [![Build Status](https://travis-ci.org/tkukushkin/pytest-describe-it.svg?branch=master)](https://travis-ci.org/tkukushkin/pytest-describe-it)

## Example

Some simple test:
```python
import pytest


def add(x: int, y: int) -> int:
    return x + y


@pytest.mark.describe('add')
class TestAdd:

    @pytest.mark.parametrize(['x', 'y', 'expected'], [
        (1, 2, 3),
        (3, 4, 7),
        (5, 6, 10),
    ])
    @pytest.mark.it('returns {expected} for add({x}, {y})')
    def test_add(self, x, y, expected):
        assert add(x, y) == expected

```

Pytest output:
```python
collected 3 items

test_add.py ..F                                                                 [100%]

====================================== FAILURES =======================================
________________ TestAdd.test_add[[ add — returns 10 for add(5, 6) ]] _________________

self = <test_add.TestAdd object at 0x10b740b70>, x = 5, y = 6, expected = 10

    @pytest.mark.parametrize(['x', 'y', 'expected'], [
        (1, 2, 3),
        (3, 4, 7),
        (5, 6, 10),
    ])
    @pytest.mark.it('returns {expected} for add({x}, {y})')
    def test_add(self, x, y, expected):
>       assert add(x, y) == expected
E       assert 11 == 10
E        +  where 11 = add(5, 6)

test_add.py:18: AssertionError
========================= 1 failed, 2 passed in 0.05 seconds ==========================
```

With pytest-sugar:
```python
collecting ...
 test_add.py ✓✓                                                          67% ██████▋

―――――――――――――――― TestAdd.test_add[[ add — returns 10 for add(5, 6) ]] ―――――――――――――――――

self = <test_add.TestAdd object at 0x10e4e3550>, x = 5, y = 6, expected = 10

    @pytest.mark.parametrize(['x', 'y', 'expected'], [
        (1, 2, 3),
        (3, 4, 7),
        (5, 6, 10),
    ])
    @pytest.mark.it('returns {expected} for add({x}, {y})')
    def test_add(self, x, y, expected):
>       assert add(x, y) == expected
E       assert 11 == 10
E        +  where 11 = add(5, 6)

test_add.py:18: AssertionError

 test_add.py ⨯                                                          100% ██████████

Results (0.10s):
       2 passed
       1 failed
         - test_add.py:11 TestAdd.test_add[[ add — returns 10 for add(5, 6) ]]
```
CourseZero 0.0.8
Tools for finding what may have been stolen from teachers.
License: MIT
Requires Python: >=3.6.0



# Course Zero

These are tools developed to help me determine when my intellectual property is posted without my permission online. 
These are tools created to help me ensure that content uploaded by students to the site do not infringe my intellectual property rights.

They simply automate the process of searching the site and thus make it easier to determine which items infringe rights and which do not.

They are extremely rough and probably not very user friendly. That said, I am making them public in case others find them useful.  

These tools are provided in the hope that they will be useful to those seeking to protect their intellectual property, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The tools are provided here with no warranty or claim that their use is consistent with any law, policy, terms of use policy, or any other constraint. IF YOU CHOOSE TO USE THEM, YOU AGREE TO REVIEW AND COMPLY WITH ALL RELEVANT POLICIES, INCLUDING SITE TERMS OF SERVICE, AND YOU AGREE THAT YOUR USE IS SOLELY AT YOUR OWN RISK.

Questions, requests, complaints, or other feedback (or pull-requests!) are welcome through this project's github page

        https://github.com/HatakoHaterson/CourseZero

Please understand that this is not an active project for me; I will monitor the project on github very infrequently.

-- 復讐者


View a static image of the main notebook (does not run) on Jupyter: 

    https://nbviewer.jupyter.org/github/HatakoHaterson/CourseZero/blob/master/Notebooks/Gather%20information.ipynb?flush_cache=true

Or run it on your own mini-server using Binder

    https://mybinder.org/v2/gh/HatakoHaterson/CourseZero/master?filepath=Notebooks%2FGather%20information.ipynb