2023-10-02T02:54:51,543 Created temporary directory: /tmp/pip-build-tracker-28sid6v6 2023-10-02T02:54:51,544 Initialized build tracking at /tmp/pip-build-tracker-28sid6v6 2023-10-02T02:54:51,544 Created build tracker: /tmp/pip-build-tracker-28sid6v6 2023-10-02T02:54:51,545 Entered build tracker: /tmp/pip-build-tracker-28sid6v6 2023-10-02T02:54:51,546 Created temporary directory: /tmp/pip-wheel-i8v08bnz 2023-10-02T02:54:51,549 Created temporary directory: /tmp/pip-ephem-wheel-cache-83mxhp1l 2023-10-02T02:54:51,571 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-10-02T02:54:51,575 2 location(s) to search for versions of logging-formatter-anticrlf: 2023-10-02T02:54:51,575 * https://pypi.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,575 * https://www.piwheels.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,576 Fetching project page and analyzing links: https://pypi.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,576 Getting page https://pypi.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,578 Found index url https://pypi.org/simple/ 2023-10-02T02:54:51,791 Fetched page https://pypi.org/simple/logging-formatter-anticrlf/ as application/vnd.pypi.simple.v1+json 2023-10-02T02:54:51,792 Found link https://files.pythonhosted.org/packages/3e/e9/6e6d578d84c8e72d93ef5665ee81adac5c30c87ff4a7c05affe9e99af546/logging-formatter-anticrlf-1.1.post1.tar.gz (from https://pypi.org/simple/logging-formatter-anticrlf/), version: 1.1.post1 2023-10-02T02:54:51,793 Found link https://files.pythonhosted.org/packages/4f/6f/91f11782adbf1a0993a315e422416af45d83550f21844c08f79edb46bc10/logging-formatter-anticrlf-1.2.tar.gz (from https://pypi.org/simple/logging-formatter-anticrlf/), version: 1.2 2023-10-02T02:54:51,794 Found link https://files.pythonhosted.org/packages/e5/92/e0f174775f91bbfa81ee12f495e5e32495712bb2382589bfa7dbf8278250/logging-formatter-anticrlf-1.2.1.tar.gz (from https://pypi.org/simple/logging-formatter-anticrlf/), version: 1.2.1 2023-10-02T02:54:51,795 Skipping link: No binaries permitted for logging-formatter-anticrlf: https://files.pythonhosted.org/packages/f6/9f/ad0d7783f98fa50ca17eb335acc59a4e49a11314e1d534112b1217f4b6ed/logging_formatter_anticrlf-1.2.1-py3-none-any.whl (from https://pypi.org/simple/logging-formatter-anticrlf/) 2023-10-02T02:54:51,796 Fetching project page and analyzing links: https://www.piwheels.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,797 Getting page https://www.piwheels.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,798 Found index url https://www.piwheels.org/simple/ 2023-10-02T02:54:51,954 Fetched page https://www.piwheels.org/simple/logging-formatter-anticrlf/ as text/html 2023-10-02T02:54:51,956 Skipping link: No binaries permitted for logging-formatter-anticrlf: https://www.piwheels.org/simple/logging-formatter-anticrlf/logging_formatter_anticrlf-1.2-py3-none-any.whl#sha256=cb5e7ec2c1089df2760dd18221a38eb0dfd11a3ac975e404a521ab36f6d53aa7 (from https://www.piwheels.org/simple/logging-formatter-anticrlf/) 2023-10-02T02:54:51,957 Skipping link: No binaries permitted for logging-formatter-anticrlf: https://www.piwheels.org/simple/logging-formatter-anticrlf/logging_formatter_anticrlf-1.1.post1-py3-none-any.whl#sha256=56c8561355596c53f49aab39425d36629aaad1ed417892e4b47a54a0f5e2b884 (from https://www.piwheels.org/simple/logging-formatter-anticrlf/) 2023-10-02T02:54:51,957 Skipping link: not a file: https://www.piwheels.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,958 Skipping link: not a file: https://pypi.org/simple/logging-formatter-anticrlf/ 2023-10-02T02:54:51,978 Given no hashes to check 1 links for project 'logging-formatter-anticrlf': discarding no candidates 2023-10-02T02:54:51,998 Collecting logging-formatter-anticrlf==1.2.1 2023-10-02T02:54:52,000 Created temporary directory: /tmp/pip-unpack-fg_ye8li 2023-10-02T02:54:52,212 Downloading logging-formatter-anticrlf-1.2.1.tar.gz (7.2 kB) 2023-10-02T02:54:52,252 Added logging-formatter-anticrlf==1.2.1 from https://files.pythonhosted.org/packages/e5/92/e0f174775f91bbfa81ee12f495e5e32495712bb2382589bfa7dbf8278250/logging-formatter-anticrlf-1.2.1.tar.gz to build tracker '/tmp/pip-build-tracker-28sid6v6' 2023-10-02T02:54:52,256 Created temporary directory: /tmp/pip-build-env-rjjyqcod 2023-10-02T02:54:52,261 Installing build dependencies: started 2023-10-02T02:54:52,262 Running command pip subprocess to install build dependencies 2023-10-02T02:54:53,408 Using pip 23.2.1 from /home/piwheels/.local/lib/python3.11/site-packages/pip (python 3.11) 2023-10-02T02:54:53,910 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-10-02T02:54:55,462 Collecting setuptools 2023-10-02T02:54:55,547 Using cached https://www.piwheels.org/simple/setuptools/setuptools-68.2.2-py3-none-any.whl (807 kB) 2023-10-02T02:54:55,875 Collecting setuptools-scm 2023-10-02T02:54:55,895 Using cached https://www.piwheels.org/simple/setuptools-scm/setuptools_scm-8.0.3-py3-none-any.whl (41 kB) 2023-10-02T02:54:56,241 Collecting packaging>=20 (from setuptools-scm) 2023-10-02T02:54:56,242 Obtaining dependency information for packaging>=20 from https://files.pythonhosted.org/packages/ec/1a/610693ac4ee14fcdf2d9bf3c493370e4f2ef7ae2e19217d7a237ff42367d/packaging-23.2-py3-none-any.whl.metadata 2023-10-02T02:54:56,248 Using cached packaging-23.2-py3-none-any.whl.metadata (3.2 kB) 2023-10-02T02:54:56,265 Using cached packaging-23.2-py3-none-any.whl (53 kB) 2023-10-02T02:54:58,874 Installing collected packages: setuptools, packaging, setuptools-scm 2023-10-02T02:55:01,390 Successfully installed packaging-23.2 setuptools-68.2.2 setuptools-scm-8.0.3 2023-10-02T02:55:01,888 Installing build dependencies: finished with status 'done' 2023-10-02T02:55:02,105 Getting requirements to build wheel: started 2023-10-02T02:55:02,106 Running command Getting requirements to build wheel 2023-10-02T02:55:02,661 /tmp/pip-build-env-rjjyqcod/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:73: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-10-02T02:55:02,661 !! 2023-10-02T02:55:02,662 ******************************************************************************** 2023-10-02T02:55:02,663 ########################################################################## 2023-10-02T02:55:02,664 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-10-02T02:55:02,664 ########################################################################## 2023-10-02T02:55:02,666 The following seems to be defined outside of `pyproject.toml`: 2023-10-02T02:55:02,667 `readme = '==========================\nlogging-formatter-anticrlf\n==========================\n--------------------------------------------------------------------------\nPython logging Formatter for CRLF Injection (CWE-93 / CWE-117) prevention\n--------------------------------------------------------------------------\n\nlogging Formatter to sanitize CRLF errors (CWE-93, some forms of CWE-117)\n\nThis class is a drop-in replacement for ``logging.Formatter``, and has the\nexact same construction arguments. However, as a final step of formatting a\nlog line, it escapes carriage returns (\\\\r) and linefeeds (\\\\n).\n\nBy default, these are replaced with their escaped equivalents (see `Examples`_),\nbut the ``replacements`` dictionary can be modified to change this behavior.\n\nThis sanitization should solve CWE-93 errors and CRLF-based versions of\nCWE-117. Some CWE-117 errors are concerns about e.g. XSS flaws in logs that\nare likely to be viewed in a browser; this formatter can\'t handle every\nform of CWE-117.\n\nInstallation\n============\n\n::\n\n pip install logging-formatter-anticrlf\n\n\nExamples\n========\n\n::\n\n import sys\n import logging\n import anticrlf\n\n handler = logging.StreamHandler(sys.stderr)\n handler.setFormatter(anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\'))\n\n logger = logging.getLogger(__name__)\n logger.addHandler(handler)\n logger.setLevel(logging.INFO)\n\n logger.info("Example text with a newline\\nhere")\n\nThis results in::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\\nhere\n\nWhereas with the default ``Formatter``, it would be::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\n here\n\nIf you wanted newlines to be replaced with \\\\x0A instead, you could::\n\n formatter = anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\')\n formatter.replacements["\\n"] = "\\\\x0A" # Note the double backslash for literal!\n handler.setFormatter(formatter)\n\n\nChanging Replacements\n=====================\n\nThe ``replacements`` field of the formatter is a ``SubstitutionMap`` object that behaves\nlike a ``dict`` with a few exceptions designed to help developers avoid making insecure mistakes.\n\nSpecifically:\n\n* an "empty" ``SubstitutionMap`` object will contain the default mappings for CR and LF chars\n* calling ``del`` on either the CR or LF key will *reset the value* rather than *delete* the key\n* any attempt to create a key-value pair that results in any value containing any of the keys\n will raise an ``UnsafeSubstitutionError``\n\nThe rationale for the last item is that the keys of the ``replacements`` field are strings\nthat are considered unsafe. Replacing one unsafe string with another defeats the purpose of\nusing this module.\n\nAdditionally, if you assign a regular ``dict`` to the ``replacements`` field, and try to log\nsomething using that configuration, ``anticrlf.LogFormatter`` will reset the ``replacements``\nfield to its default value and issue a ``UserWarning`` to that effect.\n\nThat means the following::\n\n formatter.replacements["\\n"] = "\\\\x0A" # replace LF chars with \'\\x0A\'\n del formatter.replacements["\\n"] # return to replacing LF with \'\\n\'\n formatter.replacements["\\t"] = "\\\\t" # replace tabs with \'\\t\'\n formatter.replacements["\\n"] = "<\\t>" # raises UnsafeSubstitutionError\n\nThe last occurs because the value ``<\\t>`` contains ``\\t``, which was previously created as a key.\n\nAnd::\n\n formatter.replacements = { "\\n": "\\r" } # this is a mistake!\n logger.info("example")\n\nWill result, if that logger is using that formatter, in ``replacements`` being returned to its\nsafe default value and a ``UserWarning`` about that being issued.\n'` 2023-10-02T02:55:02,669 According to the spec (see the link below), however, setuptools CANNOT 2023-10-02T02:55:02,670 consider this value unless `readme` is listed as `dynamic`. 2023-10-02T02:55:02,671 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-10-02T02:55:02,672 For the time being, `setuptools` will still consider the given value (as a 2023-10-02T02:55:02,673 **transitional** measure), but please note that future releases of setuptools will 2023-10-02T02:55:02,673 follow strictly the standard. 2023-10-02T02:55:02,675 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-10-02T02:55:02,675 remove the `[project]` table from your file and rely entirely on other means of 2023-10-02T02:55:02,676 configuration. 2023-10-02T02:55:02,677 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-10-02T02:55:02,678 or your builds will no longer be supported. 2023-10-02T02:55:02,678 ******************************************************************************** 2023-10-02T02:55:02,679 !! 2023-10-02T02:55:02,680 _handle_missing_dynamic(dist, project_table) 2023-10-02T02:55:02,907 running egg_info 2023-10-02T02:55:02,912 writing logging_formatter_anticrlf.egg-info/PKG-INFO 2023-10-02T02:55:02,916 writing dependency_links to logging_formatter_anticrlf.egg-info/dependency_links.txt 2023-10-02T02:55:02,918 writing requirements to logging_formatter_anticrlf.egg-info/requires.txt 2023-10-02T02:55:02,920 writing top-level names to logging_formatter_anticrlf.egg-info/top_level.txt 2023-10-02T02:55:02,957 ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any 2023-10-02T02:55:02,960 reading manifest file 'logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:02,962 adding license file 'LICENSE' 2023-10-02T02:55:02,964 writing manifest file 'logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:03,082 Getting requirements to build wheel: finished with status 'done' 2023-10-02T02:55:03,092 Installing backend dependencies: started 2023-10-02T02:55:03,093 Running command pip subprocess to install backend dependencies 2023-10-02T02:55:04,234 Using pip 23.2.1 from /home/piwheels/.local/lib/python3.11/site-packages/pip (python 3.11) 2023-10-02T02:55:04,739 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-10-02T02:55:05,236 Collecting wheel 2023-10-02T02:55:05,253 Using cached https://www.piwheels.org/simple/wheel/wheel-0.41.2-py3-none-any.whl (64 kB) 2023-10-02T02:55:07,589 Installing collected packages: wheel 2023-10-02T02:55:07,806 Creating /tmp/pip-build-env-rjjyqcod/normal/local/bin 2023-10-02T02:55:07,808 changing mode of /tmp/pip-build-env-rjjyqcod/normal/local/bin/wheel to 755 2023-10-02T02:55:07,819 Successfully installed wheel-0.41.2 2023-10-02T02:55:08,263 Installing backend dependencies: finished with status 'done' 2023-10-02T02:55:08,265 Created temporary directory: /tmp/pip-modern-metadata-aa7uv_f7 2023-10-02T02:55:08,267 Preparing metadata (pyproject.toml): started 2023-10-02T02:55:08,268 Running command Preparing metadata (pyproject.toml) 2023-10-02T02:55:08,821 /tmp/pip-build-env-rjjyqcod/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:73: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-10-02T02:55:08,821 !! 2023-10-02T02:55:08,822 ******************************************************************************** 2023-10-02T02:55:08,823 ########################################################################## 2023-10-02T02:55:08,823 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-10-02T02:55:08,824 ########################################################################## 2023-10-02T02:55:08,825 The following seems to be defined outside of `pyproject.toml`: 2023-10-02T02:55:08,826 `readme = '==========================\nlogging-formatter-anticrlf\n==========================\n--------------------------------------------------------------------------\nPython logging Formatter for CRLF Injection (CWE-93 / CWE-117) prevention\n--------------------------------------------------------------------------\n\nlogging Formatter to sanitize CRLF errors (CWE-93, some forms of CWE-117)\n\nThis class is a drop-in replacement for ``logging.Formatter``, and has the\nexact same construction arguments. However, as a final step of formatting a\nlog line, it escapes carriage returns (\\\\r) and linefeeds (\\\\n).\n\nBy default, these are replaced with their escaped equivalents (see `Examples`_),\nbut the ``replacements`` dictionary can be modified to change this behavior.\n\nThis sanitization should solve CWE-93 errors and CRLF-based versions of\nCWE-117. Some CWE-117 errors are concerns about e.g. XSS flaws in logs that\nare likely to be viewed in a browser; this formatter can\'t handle every\nform of CWE-117.\n\nInstallation\n============\n\n::\n\n pip install logging-formatter-anticrlf\n\n\nExamples\n========\n\n::\n\n import sys\n import logging\n import anticrlf\n\n handler = logging.StreamHandler(sys.stderr)\n handler.setFormatter(anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\'))\n\n logger = logging.getLogger(__name__)\n logger.addHandler(handler)\n logger.setLevel(logging.INFO)\n\n logger.info("Example text with a newline\\nhere")\n\nThis results in::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\\nhere\n\nWhereas with the default ``Formatter``, it would be::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\n here\n\nIf you wanted newlines to be replaced with \\\\x0A instead, you could::\n\n formatter = anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\')\n formatter.replacements["\\n"] = "\\\\x0A" # Note the double backslash for literal!\n handler.setFormatter(formatter)\n\n\nChanging Replacements\n=====================\n\nThe ``replacements`` field of the formatter is a ``SubstitutionMap`` object that behaves\nlike a ``dict`` with a few exceptions designed to help developers avoid making insecure mistakes.\n\nSpecifically:\n\n* an "empty" ``SubstitutionMap`` object will contain the default mappings for CR and LF chars\n* calling ``del`` on either the CR or LF key will *reset the value* rather than *delete* the key\n* any attempt to create a key-value pair that results in any value containing any of the keys\n will raise an ``UnsafeSubstitutionError``\n\nThe rationale for the last item is that the keys of the ``replacements`` field are strings\nthat are considered unsafe. Replacing one unsafe string with another defeats the purpose of\nusing this module.\n\nAdditionally, if you assign a regular ``dict`` to the ``replacements`` field, and try to log\nsomething using that configuration, ``anticrlf.LogFormatter`` will reset the ``replacements``\nfield to its default value and issue a ``UserWarning`` to that effect.\n\nThat means the following::\n\n formatter.replacements["\\n"] = "\\\\x0A" # replace LF chars with \'\\x0A\'\n del formatter.replacements["\\n"] # return to replacing LF with \'\\n\'\n formatter.replacements["\\t"] = "\\\\t" # replace tabs with \'\\t\'\n formatter.replacements["\\n"] = "<\\t>" # raises UnsafeSubstitutionError\n\nThe last occurs because the value ``<\\t>`` contains ``\\t``, which was previously created as a key.\n\nAnd::\n\n formatter.replacements = { "\\n": "\\r" } # this is a mistake!\n logger.info("example")\n\nWill result, if that logger is using that formatter, in ``replacements`` being returned to its\nsafe default value and a ``UserWarning`` about that being issued.\n'` 2023-10-02T02:55:08,828 According to the spec (see the link below), however, setuptools CANNOT 2023-10-02T02:55:08,828 consider this value unless `readme` is listed as `dynamic`. 2023-10-02T02:55:08,829 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-10-02T02:55:08,830 For the time being, `setuptools` will still consider the given value (as a 2023-10-02T02:55:08,831 **transitional** measure), but please note that future releases of setuptools will 2023-10-02T02:55:08,832 follow strictly the standard. 2023-10-02T02:55:08,833 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-10-02T02:55:08,833 remove the `[project]` table from your file and rely entirely on other means of 2023-10-02T02:55:08,834 configuration. 2023-10-02T02:55:08,835 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-10-02T02:55:08,835 or your builds will no longer be supported. 2023-10-02T02:55:08,836 ******************************************************************************** 2023-10-02T02:55:08,837 !! 2023-10-02T02:55:08,838 _handle_missing_dynamic(dist, project_table) 2023-10-02T02:55:09,120 running dist_info 2023-10-02T02:55:09,127 creating /tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info 2023-10-02T02:55:09,131 writing /tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/PKG-INFO 2023-10-02T02:55:09,149 writing dependency_links to /tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/dependency_links.txt 2023-10-02T02:55:09,152 writing requirements to /tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/requires.txt 2023-10-02T02:55:09,153 writing top-level names to /tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/top_level.txt 2023-10-02T02:55:09,155 writing manifest file '/tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:09,189 ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any 2023-10-02T02:55:09,192 reading manifest file '/tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:09,194 adding license file 'LICENSE' 2023-10-02T02:55:09,196 writing manifest file '/tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:09,197 creating '/tmp/pip-modern-metadata-aa7uv_f7/logging_formatter_anticrlf-1.2.1.dist-info' 2023-10-02T02:55:09,350 Preparing metadata (pyproject.toml): finished with status 'done' 2023-10-02T02:55:09,354 Source in /tmp/pip-wheel-i8v08bnz/logging-formatter-anticrlf_da3de7152813423a93a83e17849264a5 has version 1.2.1, which satisfies requirement logging-formatter-anticrlf==1.2.1 from https://files.pythonhosted.org/packages/e5/92/e0f174775f91bbfa81ee12f495e5e32495712bb2382589bfa7dbf8278250/logging-formatter-anticrlf-1.2.1.tar.gz 2023-10-02T02:55:09,355 Removed logging-formatter-anticrlf==1.2.1 from https://files.pythonhosted.org/packages/e5/92/e0f174775f91bbfa81ee12f495e5e32495712bb2382589bfa7dbf8278250/logging-formatter-anticrlf-1.2.1.tar.gz from build tracker '/tmp/pip-build-tracker-28sid6v6' 2023-10-02T02:55:09,360 Created temporary directory: /tmp/pip-unpack-19akmg62 2023-10-02T02:55:09,361 Created temporary directory: /tmp/pip-unpack-krrxs536 2023-10-02T02:55:09,369 Building wheels for collected packages: logging-formatter-anticrlf 2023-10-02T02:55:09,374 Created temporary directory: /tmp/pip-wheel-79me9je2 2023-10-02T02:55:09,374 Destination directory: /tmp/pip-wheel-79me9je2 2023-10-02T02:55:09,377 Building wheel for logging-formatter-anticrlf (pyproject.toml): started 2023-10-02T02:55:09,378 Running command Building wheel for logging-formatter-anticrlf (pyproject.toml) 2023-10-02T02:55:09,895 /tmp/pip-build-env-rjjyqcod/overlay/local/lib/python3.11/dist-packages/setuptools/config/_apply_pyprojecttoml.py:73: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-10-02T02:55:09,895 !! 2023-10-02T02:55:09,897 ******************************************************************************** 2023-10-02T02:55:09,897 ########################################################################## 2023-10-02T02:55:09,898 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-10-02T02:55:09,899 ########################################################################## 2023-10-02T02:55:09,900 The following seems to be defined outside of `pyproject.toml`: 2023-10-02T02:55:09,901 `readme = '==========================\nlogging-formatter-anticrlf\n==========================\n--------------------------------------------------------------------------\nPython logging Formatter for CRLF Injection (CWE-93 / CWE-117) prevention\n--------------------------------------------------------------------------\n\nlogging Formatter to sanitize CRLF errors (CWE-93, some forms of CWE-117)\n\nThis class is a drop-in replacement for ``logging.Formatter``, and has the\nexact same construction arguments. However, as a final step of formatting a\nlog line, it escapes carriage returns (\\\\r) and linefeeds (\\\\n).\n\nBy default, these are replaced with their escaped equivalents (see `Examples`_),\nbut the ``replacements`` dictionary can be modified to change this behavior.\n\nThis sanitization should solve CWE-93 errors and CRLF-based versions of\nCWE-117. Some CWE-117 errors are concerns about e.g. XSS flaws in logs that\nare likely to be viewed in a browser; this formatter can\'t handle every\nform of CWE-117.\n\nInstallation\n============\n\n::\n\n pip install logging-formatter-anticrlf\n\n\nExamples\n========\n\n::\n\n import sys\n import logging\n import anticrlf\n\n handler = logging.StreamHandler(sys.stderr)\n handler.setFormatter(anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\'))\n\n logger = logging.getLogger(__name__)\n logger.addHandler(handler)\n logger.setLevel(logging.INFO)\n\n logger.info("Example text with a newline\\nhere")\n\nThis results in::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\\nhere\n\nWhereas with the default ``Formatter``, it would be::\n\n 2017-02-03 08:43:52,557 - __main__ - INFO - Example text with a newline\n here\n\nIf you wanted newlines to be replaced with \\\\x0A instead, you could::\n\n formatter = anticrlf.LogFormatter(\'%(asctime)s - %(name)s - %(levelname)s - %(message)s\')\n formatter.replacements["\\n"] = "\\\\x0A" # Note the double backslash for literal!\n handler.setFormatter(formatter)\n\n\nChanging Replacements\n=====================\n\nThe ``replacements`` field of the formatter is a ``SubstitutionMap`` object that behaves\nlike a ``dict`` with a few exceptions designed to help developers avoid making insecure mistakes.\n\nSpecifically:\n\n* an "empty" ``SubstitutionMap`` object will contain the default mappings for CR and LF chars\n* calling ``del`` on either the CR or LF key will *reset the value* rather than *delete* the key\n* any attempt to create a key-value pair that results in any value containing any of the keys\n will raise an ``UnsafeSubstitutionError``\n\nThe rationale for the last item is that the keys of the ``replacements`` field are strings\nthat are considered unsafe. Replacing one unsafe string with another defeats the purpose of\nusing this module.\n\nAdditionally, if you assign a regular ``dict`` to the ``replacements`` field, and try to log\nsomething using that configuration, ``anticrlf.LogFormatter`` will reset the ``replacements``\nfield to its default value and issue a ``UserWarning`` to that effect.\n\nThat means the following::\n\n formatter.replacements["\\n"] = "\\\\x0A" # replace LF chars with \'\\x0A\'\n del formatter.replacements["\\n"] # return to replacing LF with \'\\n\'\n formatter.replacements["\\t"] = "\\\\t" # replace tabs with \'\\t\'\n formatter.replacements["\\n"] = "<\\t>" # raises UnsafeSubstitutionError\n\nThe last occurs because the value ``<\\t>`` contains ``\\t``, which was previously created as a key.\n\nAnd::\n\n formatter.replacements = { "\\n": "\\r" } # this is a mistake!\n logger.info("example")\n\nWill result, if that logger is using that formatter, in ``replacements`` being returned to its\nsafe default value and a ``UserWarning`` about that being issued.\n'` 2023-10-02T02:55:09,902 According to the spec (see the link below), however, setuptools CANNOT 2023-10-02T02:55:09,903 consider this value unless `readme` is listed as `dynamic`. 2023-10-02T02:55:09,904 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-10-02T02:55:09,905 For the time being, `setuptools` will still consider the given value (as a 2023-10-02T02:55:09,906 **transitional** measure), but please note that future releases of setuptools will 2023-10-02T02:55:09,906 follow strictly the standard. 2023-10-02T02:55:09,908 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-10-02T02:55:09,908 remove the `[project]` table from your file and rely entirely on other means of 2023-10-02T02:55:09,909 configuration. 2023-10-02T02:55:09,910 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-10-02T02:55:09,911 or your builds will no longer be supported. 2023-10-02T02:55:09,912 ******************************************************************************** 2023-10-02T02:55:09,914 !! 2023-10-02T02:55:09,915 _handle_missing_dynamic(dist, project_table) 2023-10-02T02:55:10,169 running bdist_wheel 2023-10-02T02:55:10,191 running build 2023-10-02T02:55:10,192 running build_py 2023-10-02T02:55:10,197 creating build 2023-10-02T02:55:10,198 creating build/lib 2023-10-02T02:55:10,198 creating build/lib/anticrlf 2023-10-02T02:55:10,199 copying anticrlf/__init__.py -> build/lib/anticrlf 2023-10-02T02:55:10,201 copying anticrlf/types.py -> build/lib/anticrlf 2023-10-02T02:55:10,203 copying anticrlf/exception.py -> build/lib/anticrlf 2023-10-02T02:55:10,204 running egg_info 2023-10-02T02:55:10,209 writing logging_formatter_anticrlf.egg-info/PKG-INFO 2023-10-02T02:55:10,212 writing dependency_links to logging_formatter_anticrlf.egg-info/dependency_links.txt 2023-10-02T02:55:10,214 writing requirements to logging_formatter_anticrlf.egg-info/requires.txt 2023-10-02T02:55:10,215 writing top-level names to logging_formatter_anticrlf.egg-info/top_level.txt 2023-10-02T02:55:10,239 ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any 2023-10-02T02:55:10,242 reading manifest file 'logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:10,244 adding license file 'LICENSE' 2023-10-02T02:55:10,246 writing manifest file 'logging_formatter_anticrlf.egg-info/SOURCES.txt' 2023-10-02T02:55:10,248 /tmp/pip-build-env-rjjyqcod/overlay/local/lib/python3.11/dist-packages/setuptools/command/build_py.py:204: _Warning: Package 'anticrlf.tests' is absent from the `packages` configuration. 2023-10-02T02:55:10,249 !! 2023-10-02T02:55:10,250 ******************************************************************************** 2023-10-02T02:55:10,250 ############################ 2023-10-02T02:55:10,251 # Package would be ignored # 2023-10-02T02:55:10,251 ############################ 2023-10-02T02:55:10,252 Python recognizes 'anticrlf.tests' as an importable package[^1], 2023-10-02T02:55:10,252 but it is absent from setuptools' `packages` configuration. 2023-10-02T02:55:10,253 This leads to an ambiguous overall configuration. If you want to distribute this 2023-10-02T02:55:10,254 package, please make sure that 'anticrlf.tests' is explicitly added 2023-10-02T02:55:10,254 to the `packages` configuration field. 2023-10-02T02:55:10,255 Alternatively, you can also rely on setuptools' discovery methods 2023-10-02T02:55:10,256 (for example by using `find_namespace_packages(...)`/`find_namespace:` 2023-10-02T02:55:10,256 instead of `find_packages(...)`/`find:`). 2023-10-02T02:55:10,257 You can read more about "package discovery" on setuptools documentation page: 2023-10-02T02:55:10,260 - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 2023-10-02T02:55:10,262 If you don't want 'anticrlf.tests' to be distributed and are 2023-10-02T02:55:10,262 already explicitly excluding 'anticrlf.tests' via 2023-10-02T02:55:10,263 `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 2023-10-02T02:55:10,263 you can try to use `exclude_package_data`, or `include-package-data=False` in 2023-10-02T02:55:10,264 combination with a more fine grained `package-data` configuration. 2023-10-02T02:55:10,265 You can read more about "package data files" on setuptools documentation page: 2023-10-02T02:55:10,266 - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 2023-10-02T02:55:10,268 [^1]: For Python, any directory (with suitable naming) can be imported, 2023-10-02T02:55:10,268 even if it does not contain any `.py` files. 2023-10-02T02:55:10,269 On the other hand, currently there is no concept of package data 2023-10-02T02:55:10,270 directory, all directories are treated like packages. 2023-10-02T02:55:10,270 ******************************************************************************** 2023-10-02T02:55:10,272 !! 2023-10-02T02:55:10,272 check.warn(importable) 2023-10-02T02:55:10,272 creating build/lib/anticrlf/tests 2023-10-02T02:55:10,273 copying anticrlf/tests/__init__.py -> build/lib/anticrlf/tests 2023-10-02T02:55:10,273 copying anticrlf/tests/test_formatter.py -> build/lib/anticrlf/tests 2023-10-02T02:55:10,274 copying anticrlf/tests/test_substitutionmap.py -> build/lib/anticrlf/tests 2023-10-02T02:55:10,274 installing to build/bdist.linux-armv7l/wheel 2023-10-02T02:55:10,275 running install 2023-10-02T02:55:10,294 running install_lib 2023-10-02T02:55:10,300 creating build/bdist.linux-armv7l 2023-10-02T02:55:10,300 creating build/bdist.linux-armv7l/wheel 2023-10-02T02:55:10,302 creating build/bdist.linux-armv7l/wheel/anticrlf 2023-10-02T02:55:10,303 copying build/lib/anticrlf/__init__.py -> build/bdist.linux-armv7l/wheel/anticrlf 2023-10-02T02:55:10,304 copying build/lib/anticrlf/types.py -> build/bdist.linux-armv7l/wheel/anticrlf 2023-10-02T02:55:10,306 copying build/lib/anticrlf/exception.py -> build/bdist.linux-armv7l/wheel/anticrlf 2023-10-02T02:55:10,309 creating build/bdist.linux-armv7l/wheel/anticrlf/tests 2023-10-02T02:55:10,309 copying build/lib/anticrlf/tests/__init__.py -> build/bdist.linux-armv7l/wheel/anticrlf/tests 2023-10-02T02:55:10,311 copying build/lib/anticrlf/tests/test_substitutionmap.py -> build/bdist.linux-armv7l/wheel/anticrlf/tests 2023-10-02T02:55:10,313 copying build/lib/anticrlf/tests/test_formatter.py -> build/bdist.linux-armv7l/wheel/anticrlf/tests 2023-10-02T02:55:10,314 running install_egg_info 2023-10-02T02:55:10,319 Copying logging_formatter_anticrlf.egg-info to build/bdist.linux-armv7l/wheel/logging_formatter_anticrlf-1.2.1-py3.11.egg-info 2023-10-02T02:55:10,329 running install_scripts 2023-10-02T02:55:10,342 creating build/bdist.linux-armv7l/wheel/logging_formatter_anticrlf-1.2.1.dist-info/WHEEL 2023-10-02T02:55:10,344 creating '/tmp/pip-wheel-79me9je2/.tmp-avf74vet/logging_formatter_anticrlf-1.2.1-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-10-02T02:55:10,347 adding 'anticrlf/__init__.py' 2023-10-02T02:55:10,348 adding 'anticrlf/exception.py' 2023-10-02T02:55:10,349 adding 'anticrlf/types.py' 2023-10-02T02:55:10,351 adding 'anticrlf/tests/__init__.py' 2023-10-02T02:55:10,352 adding 'anticrlf/tests/test_formatter.py' 2023-10-02T02:55:10,354 adding 'anticrlf/tests/test_substitutionmap.py' 2023-10-02T02:55:10,356 adding 'logging_formatter_anticrlf-1.2.1.dist-info/LICENSE' 2023-10-02T02:55:10,357 adding 'logging_formatter_anticrlf-1.2.1.dist-info/METADATA' 2023-10-02T02:55:10,358 adding 'logging_formatter_anticrlf-1.2.1.dist-info/WHEEL' 2023-10-02T02:55:10,359 adding 'logging_formatter_anticrlf-1.2.1.dist-info/top_level.txt' 2023-10-02T02:55:10,360 adding 'logging_formatter_anticrlf-1.2.1.dist-info/RECORD' 2023-10-02T02:55:10,361 removing build/bdist.linux-armv7l/wheel 2023-10-02T02:55:10,490 Building wheel for logging-formatter-anticrlf (pyproject.toml): finished with status 'done' 2023-10-02T02:55:10,494 Created wheel for logging-formatter-anticrlf: filename=logging_formatter_anticrlf-1.2.1-py3-none-any.whl size=7647 sha256=6eff8033322a4a738fbdb16686745301c7633e6df3a52684d1c11b518d6f10e3 2023-10-02T02:55:10,495 Stored in directory: /tmp/pip-ephem-wheel-cache-83mxhp1l/wheels/d4/f9/2f/24625e64f743f9421f9abc60207d2f662e90979969ce608aab 2023-10-02T02:55:10,505 Successfully built logging-formatter-anticrlf 2023-10-02T02:55:10,508 Removed build tracker: '/tmp/pip-build-tracker-28sid6v6'