semvec/pypi-packages huggingface dataset:
matplotlib-backend-qtquick 0.0.8
A QtQuick backend for matplotlib
Requires Python: >=3.6

# matplotlib_backend_qtquick
This package implements a QtQuick backend for matplotlib. It started from [maplotlib_qtquick_playground](https://github.com/fcollonval/matplotlib_qtquick_playground), written by Frédéric Collonval, but it has been updated to work with the current version (3.2.1) of matplotlib.

## Usage

In order to use matplotlib plots with QtQuick, do the following:

1. In your main.py, use `QtQml.qmlRegisterType` to register `FigureCanvasQtQuickAgg` under whichever name you want to use.
1. In your QML files, instantiate an object with the QML type defined above. Its `objectName` property specifies the name of the object that can be found in the QML engine. It can be retrieved in python with `win.findChild(QtCore.QObject, "spectFigure")`, for example, where `"spectFigure"` is the `objectName` in this case.
1. One can then pass this object as needed. This is the FigureCanvasQtQuickAgg object. The figure can be found in its `figure` property.

For interactive plots, if you want to use the toolbar, to the `Bridge` class add slots like:

```python
    @QtCore.Slot()
    def zoom(self, *args):
        """activate zoom tool."""
        self.toolbar.zoom(*args)
```

One can also connect to Matplotlib events:

```python
       self._figure.canvas.mpl_connect('button_press_event', self.onClick)
       self._figure.canvas.mpl_connect('scroll_event', self.onScroll)
```

and provide the callbacks, for example:

```python
    def onClick(self, event):
        """
        Handle mouse clicks in the three slices:
        set the slice to what is clicked.
        """
        if event.button == MouseButton.LEFT:
            if event.inaxes == self.axeses[0]:
                self.x = self._findBin(self.xAxis, event.xdata)
                self.y = self._findBin(self.yAxis, event.ydata)
                self.setSlice()
            elif event.inaxes == self.axeses[1]:
                self.x = self._findBin(self.xAxis, event.xdata)
                self.z = self._findBin(self.zAxis, event.ydata)
                self.setSlice()
            elif event.inaxes == self.axeses[2]:
                self.y = self._findBin(self.yAxis, event.xdata)
                self.z = self._findBin(self.zAxis, event.ydata)
                self.setSlice()

    def onScroll(self, event):
        """
        Handle mouse scroll in the three slices
        - scroll the independent variable
        """
        if event.inaxes == self.axeses[0]:
            self.z += int(event.step)
            self.setSlice()
        elif event.inaxes == self.axeses[1]:
            self.y += int(event.step)
            self.setSlice()
        elif event.inaxes == self.axeses[2]:
            self.x += int(event.step)
            self.setSlice()
```

Please let me know if you have any suggestions or better ways I should do this.

## Examples

The example in the `examples` directory gives a simple example of how to use this backend, including interactions.
wired-injector 0.2.0
Dependency injection system for wired.
Requires Python: >=3.6
Keywords: ioc container,inversion of control,dependency injection,service locator,singleton,service factory

# wired_injector

Type-based calling of functions, dataclasses, classes, and more, based on 
wired containers.



# Changes

## Unreleased

- Add `InjectorRegistry` and `InjectorContainer` to improve DX

- Make the decorator designed to be subclassed, to allow `use_props`
  and `for_` to be automated
sec-password 0.1.2
Secure Password library using only Python standard lib
Requires Python: >=3.8,<4.0

Secure Password Library using only Python standard lib
======================================================

A small Python library that aids in securely storing and authenticating passwords.

Based on best practice suggestions from:
https://crackstation.net/hashing-security.htm?=rd

Usage
-----

>>> hashed = hash_password(
...    password='secure password',
...    key='string from keyfile',
...    iterations=500
... )
>>> verify_password(
...    stored_password=hashed,
...    provided_password='secure password',
...    key='string from keyfile',
...    iterations=500
... )
True

Note that iterations is a multiplied by 1,000. 500 is probably a reasonable
default.

Keyed Hashes
------------

If ``key`` is used it should be a string read from a file or outside source that
is not stored in the database or hardcoded into the program.

Keyed Hashes are not required. By default an empty string is used.

See https://crackstation.net/hashing-security.htm?=rd for Keyed Hashes

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

    poetry add sec-password

or

    pip install sec-password