Package: h-matchers
h-matchersTest objects which pass equality checks with other objects.Usagefromh_matchersimportAnyimportreassert[1,2,ValueError(),print,print]==[Any(),Any.int(),Any.instance_of(ValueError),Any.function(),Any.callable()]assert["easy","string","matching"]==[Any.string(),Any.string.containing("in"),Any.string.matching('^.*CHING!',re.IGNORECASE)]assert"http://www.example.com?a=3&b=2"==Any.url(host='www.example.com',query=Any.mapping.containing({'a':3}))assert5==Any.of([5,None])assert"foo bar"==All.of([Any.string.containing('foo'),Any.string.containing('bar')])assertuser==Any.object.of_type(MyUser).with_attrs({"name":"Username"})assert"http://example.com/path"==Any.url.with_host("example.com")assertprepared_request==(Any.request.with_url(Any.url.with_host("example.com")).containing_headers({'Content-Type':'application/json'}))# ... and lots moreFor more details see:Matching data structures- For details
of matching collections and objectsMatching web objects- For details about matching
URLs, and web requestsMatching numbers- For details about matching
ints, floats etc. with conditionsSetting up Your h-matchers Development EnvironmentFirst you'll need to install:Git.
On Ubuntu:sudo apt install git, on macOS:brew install git.GNU Make.
This is probably already installed, runmake --versionto check.pyenv.
Follow the instructions in pyenv's README to install it.
TheHomebrewmethod works best on macOS.
TheBasic GitHub Checkoutmethod works best on Ubuntu.
Youdon'tneed to set up pyenv's shell integration ("shims"), you canuse pyenv without shims.Then to set up your development environment:git clone https://github.com/hypothesis/h-matchers.git
cd h_matchers
make helpReleasing a New Version of the ProjectFirst, to get PyPI publishing working you need to go to:https://github.com/organizations/hypothesis/settings/secrets/actions/PYPI_TOKENand add h-matchers to thePYPI_TOKENsecret's selected
repositories.Now that the h-matchers project has access to thePYPI_TOKENsecret
you can release a new version by justcreating a new GitHub release.
Publishing a new GitHub release will automatically triggera GitHub Actions workflowthat will build the new version of your Python package and upload it tohttps://pypi.org/project/h-matchers.Changing the Project's Python VersionsTo change what versions of Python the project uses:Change the Python versions in thecookiecutter.jsonfile. For example:"python_versions":"3.10.4, 3.9.12",Re-run the cookiecutter template:make templateCommit everything to git and send a pull requestChanging the Project's Python DependenciesTo change the production dependencies in thesetup.cfgfile:Change the dependencies in the.cookiecutter/includes/setuptools/install_requiresfile.
If this file doesn't exist yet create it and add some dependencies to it.
For example:pyramid
sqlalchemy
celeryRe-run the cookiecutter template:make templateCommit everything to git and send a pull requestTo change the project's formatting, linting and test dependencies:Change the dependencies in the.cookiecutter/includes/tox/depsfile.
If this file doesn't exist yet create it and add some dependencies to it.
Use tox'sfactor-conditional settingsto limit which environment(s) each dependency is used in.
For example:lint: flake8,
format: autopep8,
lint,tests: pytest-faker,Re-run the cookiecutter template:make templateCommit everything to git and send a pull request