Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(asyncio): add tutorial on how to use asyncio
[Roguelynn tutorial](https://www.roguelynn.com/words/asyncio-we-did-it-wrong/) feat(feedparser#issues): Add issue when using `updated_parser` [Deprecation warning when using `updated_parsed`](kurtmckee/feedparser#151) fix(pytest): update the tmpdir_factory type hints You should now use `TempPathFactory` instead of `TempdirFactory` fix(pytest#global-usage): Use `pytest-freezegun` globally [Most of the tests](https://medium.com/@boxed/flaky-tests-part-3-freeze-the-world-e4929a0da00e) work with frozen time, so it's better to freeze it by default and unfreeze it on the ones that actually need time to move. To do that set in your `tests/conftest.py` a globally used fixture: ```python if TYPE_CHECKING: from freezegun.api import FrozenDateTimeFactory @pytest.fixture(autouse=True) def frozen_time() -> Generator['FrozenDateTimeFactory', None, None]: """Freeze all tests time""" with freezegun.freeze_time() as freeze: yield freeze ``` feat(pytest): Ignore a warning of a specific package In the `pyproject.toml` ```toml filterwarnings = [ "error", # Until ktosiek/pytest-freezegun#35 is merged "ignore::DeprecationWarning:pytest_freezegun.*" ] ``` feat(python_snippets#How to raise a warning): How to raise a warning Warning messages are typically issued in situations where it is useful to alert the user of some condition in a program, where that condition (normally) doesn’t warrant raising an exception and terminating the program. For example, one might want to issue a warning when a program uses an obsolete module. ```python import warnings def f(): warnings.warn('Message', DeprecationWarning) ``` To test the function with pytest you can use [`pytest.warns`](https://docs.pytest.org/en/stable/how-to/capture-warnings.html#warns): ```python import warnings import pytest def test_warning(): with pytest.warns(UserWarning, match='my warning'): warnings.warn("my warning", UserWarning) ``` feat(python_snippets#Parse XML file with beautifulsoup): Parse XML file with beautifulsoup You need both `beautifulsoup4` and `lxml`: ```python bs = BeautifulSoup(requests.get(url), "lxml") ``` feat(python_snippets#Get a traceback from an exception): Get a traceback from an exception ```python import traceback traceback_str = ''.join(traceback.format_tb(e.__traceback__)) ``` feat(flakeheaven): Deprecate flakehell in favour of flakeheaven It's a fork maintained by the community, instead of an absent code dictator. feat(fastapi#Resolve the 307 error): Resolve the 307 error Probably you've introduced an ending `/` to the endpoint, so instead of asking for `/my/endpoint` you tried to do `/my/endpoint/`. feat(pdm): Version overriding now supports constrains Before you had to pin specific versions, which is not maintainable, now you can use constrains ```toml [tool.pdm.overrides] asgiref = ">=3.2.10" ``` feat(pdm#Show outdated packages): Show outdated packages ```bash pdm update --dry-run --unconstrained ``` fix(pydantic_factories): correct the type hints of the factory Use `Any` ```python class PersonFactory(ModelFactory[Any]): ... ``` feat(pydantic_factories#issues): Track issue when using with `pytest-freezegun` [Use pydantic-factories with pytest-freezegun](litestar-org/polyfactory#29) feat(python#install): Install a specific version * Install dependencies ```bash sudo apt install wget software-properties-common build-essential libnss3-dev zlib1g-dev libgdbm-dev libncurses5-dev libssl-dev libffi-dev libreadline-dev libsqlite3-dev libbz2-dev ``` * Select the version in https://www.python.org/ftp/python/ and download it ```bash wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz cd Python-3.9.2/ ./configure --enable-optimizations sudo make altinstall ``` perf(regicide): fix typos fix(wallabag): Remove Wallabag rss issue as it's solved Rss feeds linked to the wallabag instance instead to the referenced article, not anymore.
- Loading branch information