hypothesis_sqlalchemy
In what follows python is an alias for python3.10 or pypy3.10
or any later version (python3.11, pypy3.11 and so on).
Installation
Prerequisites
Install the latest pip & setuptools packages versions
python -m pip install --upgrade pip setuptools
User
Download and install the latest stable version from PyPI repository
python -m pip install --upgrade hypothesis_sqlalchemy
Developer
Download the latest version from GitHub repository
git clone https://github.com/lycantropos/hypothesis_sqlalchemy.git
cd hypothesis_sqlalchemy
Install
python -m pip install -e '.'
Usage
With setup
>>> import warnings
>>> from hypothesis.errors import NonInteractiveExampleWarning
>>> # ignore hypothesis warnings caused by `example` method call
... warnings.filterwarnings('ignore', category=NonInteractiveExampleWarning)
let's take a look at what can be generated and how.
Tables
We can write a strategy that produces tables
>>> from hypothesis_sqlalchemy import scheme
>>> from sqlalchemy.engine.default import DefaultDialect
>>> dialect = DefaultDialect()
>>> tables = scheme.tables(dialect,
... min_size=3,
... max_size=10)
>>> table = tables.example()
>>> from sqlalchemy.schema import Table
>>> isinstance(table, Table)
True
>>> from sqlalchemy.schema import Column
>>> all(isinstance(column, Column) for column in table.columns)
True
>>> 3 <= len(table.columns) <= 10
True
Records
Suppose we have a table
>>> from sqlalchemy.schema import (Column,
... MetaData,
... Table)
>>> from sqlalchemy.sql.sqltypes import (Integer,
... String)
>>> metadata = MetaData()
>>> user_table = Table('user', metadata,
... Column('user_id', Integer,
... primary_key=True),
... Column('user_name', String(16),
... nullable=False),
... Column('email_address', String(60)),
... Column('password', String(20),
... nullable=False))
and we can write strategy that
-
produces single records (as
tuples)>>> from hypothesis import strategies >>> from hypothesis_sqlalchemy.sample import table_records >>> records = table_records(user_table, ... email_address=strategies.emails()) >>> record = records.example() >>> isinstance(record, tuple) True >>> len(record) == len(user_table.columns) True >>> all(column.nullable and value is None ... or isinstance(value, column.type.python_type) ... for value, column in zip(record, user_table.columns)) True
-
produces records
lists (with configurablelistsize bounds)>>> from hypothesis_sqlalchemy.sample import table_records_lists >>> records_lists = table_records_lists(user_table, ... min_size=2, ... max_size=5, ... email_address=strategies.emails()) >>> records_list = records_lists.example() >>> isinstance(records_list, list) True >>> 2 <= len(records_list) <= 5 True >>> all(isinstance(record, tuple) for record in records_list) True >>> all(len(record) == len(user_table.columns) for record in records_list) True
Development
Bumping version
Prerequisites
Install bump-my-version.
Release
Choose which version number category to bump following semver specification.
Test bumping version
bump-my-version bump --dry-run --verbose $CATEGORY
where $CATEGORY is the target version number category name, possible
values are patch/minor/major.
Bump version
bump-my-version bump --verbose $CATEGORY
This will set version to major.minor.patch.
Running tests
Plain
Install with dependencies
python -m pip install -e '.[tests]'
Run
pytest
Docker container
Run
-
with
CPythondocker-compose --file docker-compose.cpython.yml up
-
with
PyPydocker-compose --file docker-compose.pypy.yml up
Bash script
Run
-
with
CPython./run-tests.sh
or
./run-tests.sh cpython -
with
PyPy./run-tests.sh pypy
PowerShell script
Run
-
with
CPython.\run-tests.ps1
or
.\run-tests.ps1 cpython
-
with
PyPy.\run-tests.ps1 pypy
Metadata
Release files for hypothesis-sqlalchemy 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hypothesis_sqlalchemy-1.2.0.tar.gz | 13.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hypothesis_sqlalchemy-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.9 kB
Release files / hypothesis_sqlalchemy-1.2.0.tar.gz
| Download URL | hypothesis_sqlalchemy-1.2.0.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30524f6a73b0ebe0493a94e7ae5d55c4731616855462d798a57192b0d103b8ec
|
|
BLAKE2b-256 checksum How to use checksums |
6dfcd21c13004cf0c011d026c29dc033de36daf27401b24ca80746c609431b7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / hypothesis_sqlalchemy-1.2.0-py3-none-any.whl
| Download URL | hypothesis_sqlalchemy-1.2.0-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c133a89f0f459101af4e456e00e4c7db7b920fe745161c816221fe7938225da2
|
|
BLAKE2b-256 checksum How to use checksums |
a84ef7bdc42af1294a5325c69b78224a2fb8b4e4ca78cae49940034abe70ce31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for hypothesis-sqlalchemy 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.