semvec/pypi-packages huggingface dataset:
toolforge 6.1.0
Small library for common tasks on Wikimedia Toolforge
Requires Python: >=3.7
Keywords: toolforge, wikimedia

Toolforge python helper library
===============================

``toolforge`` is a Python library that contains helper functions for some
common tasks that Toolforge_ users might encounter.


Installation
------------

Use ``pip`` to install the latest stable version of ``toolforge``:

.. code-block:: bash

    python3 -m pip install --upgrade toolforge

The current development version is available on gitlab.wikimedia.org_, and can
be installed directly from the git repository:

.. code-block:: bash

    python3 -m pip install --upgrade git+https://gitlab.wikimedia.org/toolforge-repos/python-toolforge.git

Usage
-----

See the `API reference and user guide`_ for usage instructions.

Contributing
------------

See CONTRIBUTING.rst_ for guidelines on contributing to ``toolforge``.

Bug reports
-----------

Please report bugs and feature requests at https://phabricator.wikimedia.org/tag/tool-python-toolforge/.

License
-------

Licensed under the `GPL-3.0-or-later`_ license. See COPYING_ for the full
license.

.. _Toolforge: https://wikitech.wikimedia.org/wiki/Portal:Toolforge
.. _gitlab.wikimedia.org: https://gitlab.wikimedia.org/toolforge-repos/python-toolforge
.. _API reference and user guide: https://python-toolforge.readthedocs.io/
.. _CONTRIBUTING.rst: https://gitlab.wikimedia.org/toolforge-repos/python-toolforge/-/blob/main/CONTRIBUTING.rst
.. _GPL-3.0-or-later: https://www.gnu.org/licenses/gpl-3.0.html
.. _COPYING: https://gitlab.wikimedia.org/toolforge-repos/python-toolforge/-/blob/main/COPYING
pandoctylus 0.2.0
A crazy and opinionated way of generating documents.
Requires Python: >=3.9

# Pandoctylus

![Pandoctylus Logo](doc/pandoctylus_small.png)

A crazy and opinionated way of generating documents.

## Installation

```bash
pip install pandoctylus
```

## Use

Check out the example project in [examples/project1](examples/project1) to understand
how to make a document. Key ingredients:
- define the document as yaml file in `docs/` sub-dir
- create or pick an existing jinja template and refernece it in the yaml file
- create or pick an existing docx template and reference it in the yaml file
- run the tool: 
  ```bash
  python pandoctylus/pandoctylus.py \
    --root-dir examples/project1 \
    --output-dir ./output
  ```
- enjoy the generated docs in `./output`

## Development

This project uses modern Python packaging with `pyproject.toml`. To set up the development environment:

1. Clone the repository:

```bash
git clone https://github.com/yourusername/pandoctylus.git
cd pandoctylus
```

2. Create a virtual environment and install development dependencies:

```bash
uv venv pandoctylus-venv
source .pandoctylus-venv/bin/activate 
uv pip install -e ".[dev]"
```

3. Run tests:
```bash
pytest
```

## Packaging and Publishing

To build and publish the package to PyPI:

1. Install build tools:
```bash
uv pip install build twine
```

2. Build the package:
```bash
python -m build
```

3. Verify the distributions:
```bash
python -m twine check dist/*
```

4. Upload to PyPI:
```bash
python -m twine upload dist/*
```

The package will be available at https://pypi.org/project/pandoctylus/

## Features

- Generate multiple documents from shared Markdown and YAML and a docx template.

## License

MIT License
pyjssocket 1.0.5
A Python library that lets you communicate through JavaScript WebSocket client
Requires Python: >=3.9

# PyJSSocket
This is a Python library that lets you communicate through JavaScript WebSocket client.

## Installation
To install this library run `pip install pyjssocket` in your terminal.

## Example
Here is an example of a server that can handle multiple calls from a different JS clients
```
import json
import jsserver
import socketserver

import threading
import time

class MyJsRequestHandler(jsserver.JSBaseRequestHandler):

    def on_handshake(self, host: str, url: str, seqKey: str):
        def target():
            while True:
                self.send_response(json.dumps({'success': True, 'time': time.time()}))
                time.sleep(1)

        super().on_handshake(host, url, seqKey)

        thread = threading.Thread(target=target, daemon=True)
        thread.start()

    def on_message(self, data: bytes):
        self.send_response(json.dumps({'success': True, 'time': time.time()}))

    def on_error(self, value: str):
        self.send_response(json.dumps({'success': False, 'message': value}))

if __name__ == '__main__':
    with socketserver.ThreadingTCPServer(('0.0.0.0', 451), MyJsRequestHandler) as tcpServer:
        tcpServer.serve_forever()
```