semvec/pypi-packages huggingface dataset:
dpsbin 0.0.4
Compute exact DPS for turn-based games
Requires Python: >=3

# dpsbin

Computes the probability mass function for an extended negative binomial distribution essential for accurate DPS calculations in a variety of turn/tick-based games.


# Description

Common methods for estimating how long it takes to finish off an opponent in typical hack-and-slash games are inaccurate due to factors like overkill. Those crude calculations are often good enough, but in case they're not you can turn to this library to get an exact answer.

# Installation

dpsbin requires Python 3 or greater and is available on PyPI.

```
python -m pip install dpsbin
```

Alternatively, the latest version can be easily downloaded and installed locally.
```
git clone https://github.com/hmusgrave/dpsbin.git
cd dpsbin
python -m pip install -e .
```

# Using dpsbin

The only notable entry point is `dpsbin.pmf`. Suppose you want to know how many times you'll have to roll a 6-sided die to reach a total of 40 or more.

```
import dpsbin, numpy as np, math

probs = dpsbin.pmf(6, 40)

# probs[k] is the probability you need to roll k times.
assert math.isclose(np.sum(probs), 1)

# easily find out how many rolls you'll need on average.
avg = np.dot(probs, np.arange(len(probs)))

# if you have a 90% chance to miss and not deal the 1d6 damage then
# you can use with_zeros() to translate the old probability mass array
# into one that accounts for zeros. Truncate to only considering up
# to 80 rolls.
hard_to_hit = dpsbin.with_zeros(80, .9, probs)
```
xmelange 0.1.2
Python library for working with xml, xsd, wsdl and soap web services
Requires Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, >=3.6
Keywords: python packages import

# XMelange

Python library for working with xml, xsd, wsdl and soap web services

## Installation

```$ pip install xmelange```

## Run from command line

## Complex Types
Complex types allow elements in their content (via `<xsd:sequence>` and `<xsd:element>`)
Complex types also can carry attributes (via `<xsd:attributes>`).

## Simple Types
Simple types cannot have element content.
Simple types cannot carry attributes.
sharedvault 2020.9.6
SharedVault is a small application that allows you to define a secret that will require multiple people to unlock.
Requires Python: >=3.6

# SharedVault
SharedVault is a small application that allows you to define a secret that will require multiple people to unlock.

# How does it work ?
At the core, SharedVault uses Shamir's Secret Sharing algorythm (some code is directly copied from the wikipedia page). This allows us to define a key(M, N) and N parts where the key can be recovered from M parts. 
On top of that we add a layer where each user has a public/private key that encrypts the shares they hold.
This allows the following features:
* A user change chose and change their password.
* A user has a single password to remember (instead of one per share).
* We can grant users access without having to communicate the share over untrusted network.

# Security consideration
## Private keys
Private keys are stored in the main database and encrypted with the user's password. A weak/leaked password will compromise the private key and therefore all the shares it can decrypt.

## Secret encryption
The secret itself is encrypted using the Fernet algorithm. The key is derived with Scrypt from the secret number generated by Shamir's Secret Sharing algorithm. 
Note that I have no idea what I am doing so it is likely that there is a flaw related to the scrypt configuration that could compromise a secret's safety.

## Revoking access
Everytime a secret is updated we generate a brand new set of keys for the new encryption. This allows us to deny future access to a user that has their key removed from the secret.

## Deletion 
SharedVault uses the database you provide, therefore it is impossible for us to protect against deletion since the database itself could be deleted.

## Past password/keys
For the same reason, we cannot enforce that previous version of the database have been permanently deleted. This means that if an old password or key leaks, and the past database is available, then that key is compromized. 

# How to use it ?

I will add more ways to use this tool but right now there is a cli that you can run with:
```
$ pipenv run python -m cli --db=$DB_CONN_STR --help
```

Depending on the type of database you use, you might need additional dependencies. You can read more about the connection string format, available backends and additional dependencies at https://docs.sqlalchemy.org/en/13/core/engines.html.