head 1.27; access; symbols pkgsrc-2023Q4:1.26.0.2 pkgsrc-2023Q4-base:1.26 pkgsrc-2023Q3:1.24.0.2 pkgsrc-2023Q3-base:1.24 pkgsrc-2023Q2:1.23.0.2 pkgsrc-2023Q2-base:1.23 pkgsrc-2023Q1:1.22.0.10 pkgsrc-2023Q1-base:1.22 pkgsrc-2022Q4:1.22.0.8 pkgsrc-2022Q4-base:1.22 pkgsrc-2022Q3:1.22.0.6 pkgsrc-2022Q3-base:1.22 pkgsrc-2022Q2:1.22.0.4 pkgsrc-2022Q2-base:1.22 pkgsrc-2022Q1:1.22.0.2 pkgsrc-2022Q1-base:1.22 pkgsrc-2021Q4:1.20.0.10 pkgsrc-2021Q4-base:1.20 pkgsrc-2021Q3:1.20.0.8 pkgsrc-2021Q3-base:1.20 pkgsrc-2021Q2:1.20.0.6 pkgsrc-2021Q2-base:1.20 pkgsrc-2021Q1:1.20.0.4 pkgsrc-2021Q1-base:1.20 pkgsrc-2020Q4:1.20.0.2 pkgsrc-2020Q4-base:1.20 pkgsrc-2020Q3:1.19.0.4 pkgsrc-2020Q3-base:1.19 pkgsrc-2020Q2:1.19.0.2 pkgsrc-2020Q2-base:1.19 pkgsrc-2020Q1:1.17.0.2 pkgsrc-2020Q1-base:1.17 pkgsrc-2019Q4:1.16.0.4 pkgsrc-2019Q4-base:1.16 pkgsrc-2019Q3:1.14.0.2 pkgsrc-2019Q3-base:1.14 pkgsrc-2019Q2:1.13.0.2 pkgsrc-2019Q2-base:1.13 pkgsrc-2019Q1:1.12.0.2 pkgsrc-2019Q1-base:1.12 pkgsrc-2018Q4:1.9.0.2 pkgsrc-2018Q4-base:1.9 pkgsrc-2018Q3:1.7.0.2 pkgsrc-2018Q3-base:1.7 pkgsrc-2018Q2:1.4.0.2 pkgsrc-2018Q2-base:1.4 pkgsrc-2018Q1:1.1.0.2 pkgsrc-2018Q1-base:1.1; locks; strict; comment @# @; 1.27 date 2024.02.02.16.09.00; author adam; state Exp; branches; next 1.26; commitid tvgYJRxcAK9CmSWE; 1.26 date 2023.11.09.06.54.18; author adam; state Exp; branches; next 1.25; commitid EZ16TjczEuvH1ULE; 1.25 date 2023.11.03.08.21.59; author adam; state Exp; branches; next 1.24; commitid fqBZB4vrXdrJH8LE; 1.24 date 2023.09.06.20.17.50; author adam; state Exp; branches; next 1.23; commitid MH8BL4yP8fVFwKDE; 1.23 date 2023.03.29.09.34.15; author wiz; state Exp; branches; next 1.22; commitid dE79P0WicMkX80jE; 1.22 date 2022.01.13.19.31.25; author wiz; state Exp; branches; next 1.21; commitid o03xQdIEki5GAvoD; 1.21 date 2022.01.04.20.55.36; author wiz; state Exp; branches; next 1.20; commitid CYyhdK9qtoffkmnD; 1.20 date 2020.10.02.19.31.39; author adam; state Exp; branches; next 1.19; commitid QWnq2szznPNqDmqC; 1.19 date 2020.05.16.18.02.59; author adam; state Exp; branches; next 1.18; commitid frxwhpds37P9Cu8C; 1.18 date 2020.04.06.16.55.46; author adam; state Exp; branches; next 1.17; commitid N67wXhkV8p1Cwl3C; 1.17 date 2020.01.14.16.05.04; author adam; state Exp; branches; next 1.16; commitid kRfWasKFs4sHUFSB; 1.16 date 2019.11.13.20.56.56; author adam; state Exp; branches; next 1.15; commitid LAE5YMPH6kgowJKB; 1.15 date 2019.11.05.07.49.37; author adam; state Exp; branches; next 1.14; commitid 6MskecaEAhH8qDJB; 1.14 date 2019.07.01.11.02.31; author adam; state Exp; branches; next 1.13; commitid xaJHLAVC1tsyzktB; 1.13 date 2019.06.05.05.14.05; author adam; state Exp; branches; next 1.12; commitid avWY2UeaLSCEtXpB; 1.12 date 2019.02.27.12.07.14; author adam; state Exp; branches; next 1.11; commitid nExnjr02FJqTUodB; 1.11 date 2019.02.06.08.51.48; author adam; state Exp; branches; next 1.10; commitid rinKC5SxhuxlvGaB; 1.10 date 2019.01.08.09.13.11; author adam; state Exp; branches; next 1.9; commitid uynkAJiDIlNGyX6B; 1.9 date 2018.11.14.09.10.45; author adam; state Exp; branches; next 1.8; commitid Ws7zg02B9TssjTZA; 1.8 date 2018.10.02.08.45.10; author adam; state Exp; branches; next 1.7; commitid hIyvq2xOq4avymUA; 1.7 date 2018.08.28.11.02.37; author adam; state Exp; branches; next 1.6; commitid 38sqxiWllq8lrSPA; 1.6 date 2018.08.18.21.14.49; author adam; state Exp; branches; next 1.5; commitid cDhwfu3YqHbR8EOA; 1.5 date 2018.08.07.10.11.22; author adam; state Exp; branches; next 1.4; commitid 5HTJNBpznbmDPaNA; 1.4 date 2018.06.24.11.19.33; author adam; state Exp; branches; next 1.3; commitid jVgqJdu4JkLFCwHA; 1.3 date 2018.06.16.06.23.35; author adam; state Exp; branches; next 1.2; commitid eP5lzAIGldv4ftGA; 1.2 date 2018.04.18.07.09.02; author adam; state Exp; branches; next 1.1; commitid jy7rxb7equUaoTyA; 1.1 date 2018.01.11.14.07.11; author adam; state Exp; branches; next ; commitid Y3CYzJZBI3k3PsmA; desc @@ 1.27 log @py-test-django: updated to 4.8.0 v4.8.0 (2024-01-30) Improvements * Add `pytest.asserts.assertMessages()` to mimic the behaviour of the ``django.contrib.messages.test.MessagesTestMixin.assertMessages`` function for Django versions >= 5.0. Bugfixes * Fix `--help`/`--version` crash in a partially configured app. @ text @# $NetBSD: Makefile,v 1.26 2023/11/09 06:54:18 adam Exp $ DISTNAME= pytest-django-4.8.0 PKGNAME= ${PYPKGPREFIX}-${DISTNAME:S/^py//} CATEGORIES= www python MASTER_SITES= ${MASTER_SITE_PYPI:=p/pytest-django/} MAINTAINER= pkgsrc-users@@NetBSD.org HOMEPAGE= https://pytest-django.readthedocs.io/ COMMENT= Django plugin for pytest LICENSE= modified-bsd TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools>=61.0.0:../../devel/py-setuptools TOOL_DEPENDS+= ${PYPKGPREFIX}-setuptools_scm>=5.0.0:../../devel/py-setuptools_scm TOOL_DEPENDS+= ${PYPKGPREFIX}-wheel-[0-9]*:../../devel/py-wheel DEPENDS+= ${PYPKGPREFIX}-test>=7.0.0:../../devel/py-test USE_LANGUAGES= # none PYTHON_VERSIONS_INCOMPATIBLE= 27 .include "../../lang/python/wheel.mk" .include "../../mk/bsd.pkg.mk" @ 1.26 log @py-test-django: updated to 4.7.0 v4.7.0 (2023-11-08) ------------------- Compatibility * Official Django 5.0 support. * Official Python 3.12 support. Improvements * The Django test tags from the previous release now works on any :class:`~django.test.SimpleTestCase` (i.e. any Django test framework test class), not just :class:`~django.test.TransactionTestCase` classes. * Some improvements for those of us who like to type their tests: - Add ``pytest_django.DjangoAssertNumQueries`` for typing :fixture:`django_assert_num_queries` and :fixture:`django_assert_max_num_queries`. - Add ``pytest_django.DjangoCaptureOnCommitCallbacks`` for typing :fixture:`django_capture_on_commit_callbacks`. - Add ``pytest_django.DjangoDbBlocker`` for typing :fixture:`django_db_blocker`. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.25 2023/11/03 08:21:59 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-4.7.0 @ 1.25 log @py-test-django: updated to 4.6.0 v4.6.0 (2023-10-30) ------------------- Compatibility * Official Django 4.1 & 4.2 support. * Official Python 3.11 support. * Drop support for Python version 3.5, 3.6 & 3.7. * Drop official support for Django 4.0. * Drop support for pytest < 7. Improvements * Add support for setting :py:attr:`available_apps ` in the :func:`django_db ` marker. * Convert Django :ref:`test tags ` to :ref:`Pytest markers `. * Show Django's version in the pytest ``django`` report header. * Add precise ``pytest_django.asserts.assertQuerySetEqual`` typing. Bugfixes * Fix bug where the effect of :func:`@@pytest.mark.ignore_template_errors ` was not reset when using ``--fail-on-template-vars``. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.24 2023/09/06 20:17:50 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-4.6.0 @ 1.24 log @py-test-django: updated to 4.5.2 v4.5.2 (2021-12-07) ------------------- Bugfixes * Fix regression in v4.5.0 - ``pytest.mark.django_db(reset_sequence=True)`` now implies ``transaction=True`` again. v4.5.1 (2021-12-02) ------------------- Bugfixes * Fix regression in v4.5.0 - database tests inside (non-unittest) classes were not ordered correctly to run before non-database tests, same for transactional tests before non-transactional tests. v4.5.0 (2021-12-01) ------------------- Improvements * Add support for :ref:`rollback emulation/serialized rollback `. The :func:`pytest.mark.django_db` marker has a new ``serialized_rollback`` option, and a :fixture:`django_db_serialized_rollback` fixture is added. * Official Python 3.10 support. * Official Django 4.0 support (tested against 4.0rc1 at the time of release). * Drop official Django 3.0 support. Django 2.2 is still supported, and 3.0 will likely keep working until 2.2 is dropped, but it's not tested. * Added pyproject.toml file. * Skip Django's `setUpTestData` mechanism in pytest-django tests. It is not used for those, and interferes with some planned features. Note that this does not affect ``setUpTestData`` in unittest tests (test classes which inherit from Django's `TestCase`). Bugfixes * Fix :fixture:`live_server` when using an in-memory SQLite database. * Fix typing of ``assertTemplateUsed`` and ``assertTemplateNotUsed``. v4.4.0 (2021-06-06) ------------------- Improvements * Add a fixture :fixture:`django_capture_on_commit_callbacks` to capture :func:`transaction.on_commit() ` callbacks in tests. v4.3.0 (2021-05-15) ------------------- Improvements * Add experimental :ref:`multiple databases ` (multi db) support. * Add type annotations. If you previously excluded ``pytest_django`` from your type-checker, you can remove the exclusion. * Documentation improvements. v4.2.0 (2021-04-10) ------------------- Improvements * Official Django 3.2 support. * Documentation improvements. Bugfixes * Disable atomic durability check on non-transactional tests v4.1.0 (2020-10-22) ------------------- Improvements * Add the :fixture:`async_client` and :fixture:`async_rf` fixtures * Add :ref:`django_debug_mode ` to configure how ``DEBUG`` is set in tests * Documentation improvements. Bugfixes * Make :fixture:`admin_user` work for custom user models without an ``email`` field. v4.0.0 (2020-10-16) ------------------- Compatibility This release contains no breaking changes, except dropping compatibility with some older/unsupported versions. * Drop support for Python versions before 3.5 Previously 2.7 and 3.4 were supported. Running ``pip install pytest-django`` on Python 2.7 or 3.4 would continue to install the compatible 3.x series. * Drop support for Django versions before 2.2 Previously Django>=1.8 was supported. * Drop support for pytest versions before 5.4 Previously pytest>=3.6 was supported. Improvements * Officially support Python 3.9. * Add ``pytest_django.__version__`` * Minor documentation improvements Bugfixes * Make the ``admin_user`` and ``admin_client`` fixtures compatible with custom user models which don't have a ``username`` field * Change the ``admin_user`` fixture to use ``get_by_natural_key()`` to get the user instead of directly using ``USERNAME_FIELD``, in case it is overridden, and to match Django Misc * Fix pytest-django's own tests failing due to some deprecation warnings @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.23 2023/03/29 09:34:15 wiz Exp $ d3 1 a3 1 DISTNAME= pytest-django-4.5.2 d13 1 d15 2 a16 1 DEPENDS+= ${PYPKGPREFIX}-test>=5.4.0:../../devel/py-test d22 1 a22 1 .include "../../lang/python/egg.mk" @ 1.23 log @*: use PYTHON_VERSION instead of _PYTHON_VERSION @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.22 2022/01/13 19:31:25 wiz Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.10.0 a4 1 PKGREVISION= 1 d13 2 a14 1 .include "../../lang/python/pyversion.mk" d16 1 a16 6 .if ${PYTHON_VERSION} == 207 DEPENDS+= ${PYPKGPREFIX}-pathlib2-[0-9]*:../../devel/py-pathlib2 .endif PYTHON_VERSIONED_DEPENDENCIES= test PYTHON_VERSIONED_DEPENDENCIES= setuptools_scm:build d18 1 a18 1 USE_LANGUAGES= # none a20 1 .include "../../lang/python/versioned_dependencies.mk" @ 1.22 log @*: setuptools_scm: switch to versioned_dependencies @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.21 2022/01/04 20:55:36 wiz Exp $ d15 2 a16 1 .if ${_PYTHON_VERSION} == 27 @ 1.21 log @*: bump PKGREVISION for egg.mk users They now have a tool dependency on py-setuptools instead of a DEPENDS @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.20 2020/10/02 19:31:39 adam Exp $ a13 2 BUILD_DEPENDS+= ${PYPKGPREFIX}-setuptools_scm>=1.11.1:../../devel/py-setuptools_scm d20 1 @ 1.20 log @py-test-django: updated to 3.10.0 v3.10.0 Improvements Officialy support Django 3.1 Preliminary supoprt for upcoming Django 3.2 Support for pytest-xdist 2.0 Misc Fix running pytest-django’s own tests against pytest 6.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.19 2020/05/16 18:02:59 adam Exp $ d5 1 @ 1.19 log @pytest from versioned depends @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.18 2020/04/06 16:55:46 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.9.0 d15 5 @ 1.18 log @py-test-django: updated to 3.9.0 v3.9.0: Improvements * Improve test ordering with Django test classes * Remove import of pkg_resources for parsing pytest version (performance) Bugfixes * Work around unittest issue with pytest 5.4.{0,1} * Don't break --failed-first when re-ordering tests * pytest_addoption: use `group.addoption` Misc * Remove Django version from --nomigrations heading * docs: changelog: prefix headers with v for permalink anchors * changelog: add custom/fixed anchor for last version * setup.py: add Changelog to project_urls @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.17 2020/01/14 16:05:04 adam Exp $ a12 1 DEPENDS+= ${PYPKGPREFIX}-test>=3.6:../../devel/py-test d15 2 d20 1 @ 1.17 log @py-test-django: updated to 3.8.0 3.8.0: * Make Django's assertion helpers available in pytest_django.asserts. * Report django-configurations setting @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.16 2019/11/13 20:56:56 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.8.0 @ 1.16 log @py-test-django: updated to 3.7.0 3.7.0: Bugfixes * Monkeypatch pytest to not use ``TestCase.debug`` with unittests, instead of patching it into Django. * Work around pytest crashing due to ``pytest.fail`` being used from within the DB blocker, and pytest trying to display an object representation involving DB access. pytest-django uses a ``RuntimeError`` now instead. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.15 2019/11/05 07:49:37 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.7.0 @ 1.15 log @py-test-django: updated to 3.6.0 3.6.0: Features * Rename test databases when running parallel Tox Bugfixes * Django unittests: restore "debug" function Misc * Improve/harden internal tests / infrastructure. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.14 2019/07/01 11:02:31 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.6.0 @ 1.14 log @py-test-django: updated to 3.5.1 3.5.1: Bugfixes Fix compatibility with pytest 5.x @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.13 2019/06/05 05:14:05 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.5.1 @ 1.13 log @py-test-django: updated to 3.5.0 3.5.0: Features * Run tests in the same order as Django * Use verbosity=0 with disabled migrations Bugfixes * django_db_setup: warn instead of crash with teardown errors Misc * tests: fix test_sqlite_database_renamed * tests/conftest.py: move import of db_helpers * Cleanup/improve coverage, mainly with tests * Slightly revisit unittest handling @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.12 2019/02/27 12:07:14 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.5.0 @ 1.12 log @py-test-django: updated to 3.4.8 3.4.8: Fix DB renaming fixture for Multi-DB environment with SQLite @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.11 2019/02/06 08:51:48 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.8 @ 1.11 log @py-test-django: updated to 3.4.7 3.4.7: Bugfixes * Fix disabling/handling of unittest methods with pytest 4.2+ 3.4.6: Bugfixes * django_find_project: add cwd as fallback always Misc * Enable tests for Django 2.2 and add classifier * Disallow pytest 4.2.0 in install_requires @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.10 2019/01/08 09:13:11 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.7 @ 1.10 log @py-test-django: updated to 3.4.5 3.4.5: Bugfixes * Use request.config instead of pytest.config * :fixture:admin_user: handle "email" username_field Misc * Minor doc fixes * tests: fix for pytest 4 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.9 2018/11/14 09:10:45 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.5 @ 1.9 log @py-test-django: updated to 3.4.4 3.4.4: Bugfixes * Refine the django.conf module check to see if the settings really are configured. * Avoid crash after OSError during Django path detection. Features * Add parameter info to fixture assert_num_queries to display additional message on failure. Docs * Improve doc for django_assert_num_queries/django_assert_max_num_queries. * Add warning about sqlite specific snippet + fix typos. Misc * MANIFEST.in: include tests for downstream distros. * Ensure that the LICENSE file is included in wheels. * Run black on source. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.8 2018/10/02 08:45:10 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.4 @ 1.8 log @py-test-django: updated to 3.4.3 3.4.3: Bugfixes Fix OSError with arguments containing :: on Windows @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.7 2018/08/28 11:02:37 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.3 @ 1.7 log @py-test-django: updated to 3.4.2 3.4.2: Bugfixes - Changed dependency for pathlib to pathlib2. - Fixed code for inserting the project to sys.path with pathlib to use an absolute path, regression in 3.4.0 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.6 2018/08/18 21:14:49 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.2 @ 1.6 log @py-test-django: updated to 3.4.1 3.4.1: Unknown changes 3.4.0: Features Added new fixture django_assert_max_num_queries. Added support for connection and returning the wrapped context manager with django_assert_num_queries. Added support for resetting sequences via django_db_reset_sequences. Bugfixes Made sure to not call django.setup() multiple times. Compatibility Removed py dependency, use pathlib instead @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.5 2018/08/07 10:11:22 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.4.1 @ 1.5 log @py-test-django: updated to 3.3.3 3.3.3: Bug fixes Fixed registration of ignore_template_errors() marker, which is required with pytest --strict Fixed another regression with unittest Docs Use sphinx_rtf_theme Minor fixes. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.4 2018/06/24 11:19:33 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.3.3 d13 1 a13 1 DEPENDS+= ${PYPKGPREFIX}-test>=2.9:../../devel/py-test @ 1.4 log @py-test-django: updated to 3.3.2 3.3.2: Unknown changes 3.3.1: Bug fixes * Fixed test for classmethod with Django TestCases again Compatibility * Support Django 2.1 (no changes necessary) @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.3 2018/06/16 06:23:35 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.3.2 @ 1.3 log @py-test-django: updated to 3.3.0 3.3.0: Features Added new fixtures django_mail_dnsname and django_mail_patch_dns, used by mailoutbox to monkeypatch the DNS_NAME used in django.core.mail to improve performance and reproducibility. Bug fixes Fixed test for classmethod with Django TestCases Fixed RemovedInPytest4Warning: MarkInfo objects are deprecated Fixed scope of overridden settings with live_server fixture: previously they were visible to following tests @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.2 2018/04/18 07:09:02 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.3.0 @ 1.2 log @py-test-django: updated to 3.2.1 3.2.1 Fix automatic deployment to PyPI. 3.2.0 Features: Added new fixture django_assert_num_queries for testing the number of database queries –fail-on-template-vars has been improved and should now return full/absolute path Support for setting the live server port unittest: help with setUpClass not being a classmethod Bug fixes: Fix –reuse-db and –create-db not working together Numerous fixes in the documentation. These should not go unnoticed. Compatibilitya: Support for Django 2.0 has been added. Support for Django before 1.8 has been dropped. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.1 2018/01/11 14:07:11 adam Exp $ d3 1 a3 1 DISTNAME= pytest-django-3.2.1 @ 1.1 log @py-test-django: added version 3.1.2 pytest-django allows you to test your Django project/applications with the pytest testing tool. Running your test suite with pytest-django allows you to tap into the features that are already present in pytest. Here are some advantages: * Manage test dependencies with pytest fixtures. * Less boilerplate tests: no need to import unittest, create a subclass with methods. Write tests as regular functions. * Database re-use: no need to re-create the test database for every test run. * Run tests in multiple processes for increased speed (with the pytest-xdist plugin). * Make use of other pytest plugins. * Works with both worlds: Existing unittest-style TestCase's still work without any modifications. @ text @d1 1 a1 1 # $NetBSD$ d3 1 a3 1 DISTNAME= pytest-django-3.1.2 @