https://github.com/pybites-open-source/pybites-faker
A package to get fake PyBites data
https://github.com/pybites-open-source/pybites-faker
hacktoberfest
Last synced: 11 months ago
JSON representation
A package to get fake PyBites data
- Host: GitHub
- URL: https://github.com/pybites-open-source/pybites-faker
- Owner: PyBites-Open-Source
- Created: 2021-05-22T09:39:50.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-05-25T07:43:38.000Z (almost 5 years ago)
- Last Synced: 2025-03-22T15:12:13.543Z (11 months ago)
- Topics: hacktoberfest
- Language: Python
- Homepage:
- Size: 46.9 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
README
PyBites Faker
=============
This package is an extension of the awesome `Faker package `_. It brings together a bunch of PyBites objects that can be randomly chosen.
We started with our Bites and articles, but we can add more objects based on our content or personal preferences (think music for example).
Setup
-----
The package is not yet on PyPI, so you can play with it doing the following::
$ git clone git@github.com:bbelderbos/pybites-faker.git
$ cd pybites-faker
$ poetry install
$ poetry run python
>>> from faker import Faker
>>> from pybites_faker import PyBitesProvider
>>> fake = Faker()
>>> fake.add_provider(PyBitesProvider)
>>> fake.bite()
Bite(number=157, title='Filter out accented characters', level='Intermediate')
>>> fake.pybites_birthday()
datetime.date(2019, 12, 19)
>>> fake.pybites_cofounder()
'Julian'
>>> fake.pybites_tag()
['requests']
>>> fake.pybites_tag(n=3)
['flask', 'machine learning', 'opencv']
...
We cache the data in a pickle file which is stored in `/tmp` by default. To store this file somewhere else set the `PYBITES_FAKER_DIR` environment variable, for example::
$ export PYBITES_FAKER_DIR=$HOME/Downloads/pybites-faker
If the `pybites-faker` directory does not exist it creates it (not recursively though).
Some more functionality (continuation previous REPL session)::
>>> fake.article()
Article(author='PyBites', title='Code Challenge 64 - PyCon ES 2019 Marvel Challenge', tags=['code challenge', 'challenges', 'data analysis', 'pycon', 'Marvel', 'data visualization', 'story telling', 'hacktoberfest'])
>>> art = fake.article()
>>> art.author
'PyBites'
>>> art.title
'Twitter digest 2017 week 27'
>>> art.tags[:5]
['twitter', 'news', 'tips', 'python', 'pybites']
>>> fake.article(title="pandas")
Article(author='Bob', title='Next Time I Will Use Pandas to Parse Html Tables', tags=['BeautifulSoup', 'regex', 'Pandas', 'parsing', 'data', 'data cleaning', 'energy', 'json', 'csv', 'html'])
>>> fake.bite(level="advanced")
Bite(number=160, title='15-way Rock Paper Scissors', level='Advanced')
Exceptions
----------
If you filter on the wrong keyword arguments you get a `ValueError`::
>>> fake.bite(foo='bar')
Traceback (most recent call last):
File "", line 1, in
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 43, in bite
return self.get_one("bites", **kwargs)
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 25, in get_one
raise ValueError(
ValueError: One or more invalid kw args: {'foo': 'bar'}, valid filters are: ('number', 'title', 'level')
Same for article::
>>> fake.article(foo='bar')
Traceback (most recent call last):
File "", line 1, in
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 64, in article
return self.get_one("articles", **kwargs)
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 25, in get_one
raise ValueError(
ValueError: One or more invalid kw args: {'foo': 'bar'}, valid filters are: ('author', 'title', 'tags')
If you specify wrong filer criteria it raises a `NoDataForCriteria` exception::
>>> fake.bite(level="expert")
Traceback (most recent call last):
File "", line 1, in
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 43, in bite
return self.get_one("bites", **kwargs)
File "/Users/bbelderbos/code/pybites-faker/pybites_faker/provider.py", line 36, in get_one
raise NoDataForCriteria(
pybites_faker.exceptions.NoDataForCriteria: No results for filter criteria: {'level': 'expert'}
Tests
-----
You can run the tests with::
poetry run tox