Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-aiofiles for openSUSE:Factory 
checked in at 2022-09-23 14:15:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-aiofiles (Old)
 and      /work/SRC/openSUSE:Factory/.python-aiofiles.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-aiofiles"

Fri Sep 23 14:15:22 2022 rev:5 rq:1005520 version:22.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-aiofiles/python-aiofiles.changes  
2022-01-09 22:50:40.387310758 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-aiofiles.new.2275/python-aiofiles.changes    
    2022-09-23 14:15:59.266088148 +0200
@@ -1,0 +2,55 @@
+Thu Sep 22 22:41:51 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to 22.1.0
+  * Update README
+  * Update test deps
+  * Min Python to 3.7
+  * Bump poetry to 1.2.0
+  * Add missing comma
+  * CI tweaks
+  * Update README.rst
+  * Added os scantdir with is't tests and improved the tests for listdir
+  * Added os listdir function with it's tests
+  * Add notice file
+  * make test skipped below py3.7
+  * add test for `newlines`
+  * move SpooledTempFile.newlines from delegation to property
+  * update docs
+  * Add aiofiles.os.path.islink function
+  * remove symlink file at end of test
+  * Add aiofiles.os.readlink function
+  * Fix typo
+  * Add aiofiles.os.symlink
+  * Add aiofiles.os.unlink
+  * Add aiofiles.os.link function
+  * Add aiofiles.os.renames function
+  * Missing closing quote
+  * Add repo link to pyproject.toml
+- Update to 0.8.0
+  * Tweak README
+  * Update README
+  * Use os.sep
+  * Add prefix, suffix, dir args to TemporaryDirectory
+  * Fix ospath.exists test
+  * Fix typo: aiofiles.ospath.exists
+  * Update Readme with os.makedirs and os.removedirs
+  * Merge branch 'patch-2'
+  * Fix README
+  * Bump poetry
+  * Fix tox.ini
+  * Update README
+  * Black reformat
+  * Skip test on mac
+  * Fixes
+  * Add more os functions
+  * Test for path.sameopenfile
+  * Update README.rst
+  * Provide some async version functions for os.path
+  * Add several async os functions
+  * Add async remove function
+  * Update README
+  * added aiofiles.os.replace
+  * Enable testing on 3.10
+  * Correct license string 
+
+-------------------------------------------------------------------

Old:
----
  aiofiles-0.8.0.tar.gz

New:
----
  aiofiles-22.1.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-aiofiles.spec ++++++
--- /var/tmp/diff_new_pack.jhOqce/_old  2022-09-23 14:15:59.778089341 +0200
+++ /var/tmp/diff_new_pack.jhOqce/_new  2022-09-23 14:15:59.786089360 +0200
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-aiofiles
-Version:        0.8.0
+Version:        22.1.0
 Release:        0
 Summary:        File support for asyncio
 License:        Apache-2.0

++++++ aiofiles-0.8.0.tar.gz -> aiofiles-22.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/.github/workflows/main.yml 
new/aiofiles-22.1.0/.github/workflows/main.yml
--- old/aiofiles-0.8.0/.github/workflows/main.yml       2021-11-27 
16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/.github/workflows/main.yml      2022-09-04 
19:09:08.000000000 +0200
@@ -13,11 +13,11 @@
     name: "Python ${{ matrix.python-version }}"
     runs-on: "ubuntu-latest"
     env:
-      USING_COVERAGE: "3.6,3.7,3.8,3.9,3.10"
+      USING_COVERAGE: "3.7,3.8,3.9,3.10"
 
     strategy:
       matrix:
-        python-version: ["3.6", "3.7", "3.8", "3.9", "3.10.0-rc.2", "pypy-3.7"]
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11.0-rc.1", 
"pypy-3.7"]
 
     steps:
       - uses: "actions/checkout@v2"
@@ -29,7 +29,7 @@
           set -xe
           python -VV
           python -m site
-          python -m pip install --upgrade pip wheel poetry==1.2.0a2
+          python -m pip install --upgrade pip wheel poetry==1.2.0
           python -m pip install --upgrade coverage[toml] virtualenv tox 
tox-gh-actions
       - name: "Run tox targets for ${{ matrix.python-version }}"
         run: "python -m tox"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/NOTICE new/aiofiles-22.1.0/NOTICE
--- old/aiofiles-0.8.0/NOTICE   1970-01-01 01:00:00.000000000 +0100
+++ new/aiofiles-22.1.0/NOTICE  2022-09-04 19:09:08.000000000 +0200
@@ -0,0 +1,2 @@
+Asyncio support for files
+Copyright 2016 Tin Tvrtkovic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/README.rst 
new/aiofiles-22.1.0/README.rst
--- old/aiofiles-0.8.0/README.rst       2021-11-27 16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/README.rst      2022-09-04 19:09:08.000000000 +0200
@@ -102,15 +102,23 @@
 * ``stat``
 * ``sendfile``
 * ``rename``
+* ``renames``
 * ``replace``
 * ``remove``
+* ``unlink``
 * ``mkdir``
 * ``makedirs``
 * ``rmdir``
 * ``removedirs``
+* ``link``
+* ``symlink``
+* ``readlink``
+* ``listdir``
+* ``scandir``
 * ``path.exists``
 * ``path.isfile``
 * ``path.isdir``
+* ``path.islink``
 * ``path.getsize``
 * ``path.getatime``
 * ``path.getctime``
@@ -165,6 +173,26 @@
 
 History
 ~~~~~~~
+22.1.0 (TBC)
+````````````
+* Added ``aiofiles.os.path.islink``.
+  `#126 <https://github.com/Tinche/aiofiles/pull/126>`_
+* Added ``aiofiles.os.readlink``.
+  `#125 <https://github.com/Tinche/aiofiles/pull/125>`_
+* Added ``aiofiles.os.symlink``.
+  `#124 <https://github.com/Tinche/aiofiles/pull/124>`_
+* Added ``aiofiles.os.unlink``.
+  `#123 <https://github.com/Tinche/aiofiles/pull/123>`_
+* Added ``aiofiles.os.link``.
+  `#121 <https://github.com/Tinche/aiofiles/pull/121>`_
+* Added ``aiofiles.os.renames``.
+  `#120 <https://github.com/Tinche/aiofiles/pull/120>`_
+* Added ``aiofiles.os.{listdir, scandir}``.
+  `#143 <https://github.com/Tinche/aiofiles/pull/143>`_
+* Switched to CalVer.
+* Dropped Python 3.6 support. If you require it, use version 0.8.0.
+* aiofiles is now tested on Python 3.11.
+
 0.8.0 (2021-11-27)
 ``````````````````
 * aiofiles is now tested on Python 3.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/poetry.lock 
new/aiofiles-22.1.0/poetry.lock
--- old/aiofiles-0.8.0/poetry.lock      2021-11-27 16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/poetry.lock     2022-09-04 19:09:08.000000000 +0200
@@ -1,6 +1,6 @@
 [[package]]
 name = "atomicwrites"
-version = "1.4.0"
+version = "1.4.1"
 description = "Atomic file writes."
 category = "dev"
 optional = false
@@ -8,36 +8,21 @@
 
 [[package]]
 name = "attrs"
-version = "21.2.0"
+version = "22.1.0"
 description = "Classes Without Boilerplate"
 category = "dev"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.5"
 
 [package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", 
"sphinx", "sphinx-notfound-page", "pre-commit"]
-docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
-
-[[package]]
-name = "backports.entry-points-selectable"
-version = "1.1.0"
-description = "Compatibility shim providing selectable entry points for older 
implementations"
-category = "dev"
-optional = false
-python-versions = ">=2.7"
-
-[package.dependencies]
-importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
-
-[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-flake8", "pytest-cov", "pytest-black 
(>=0.3.7)", "pytest-mypy", "pytest-checkdocs (>=2.4)", "pytest-enabler 
(>=1.0.1)"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope-interface", 
"furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
+docs = ["furo", "sphinx", "zope-interface", "sphinx-notfound-page"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope-interface", 
"cloudpickle"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest 
(>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"]
 
 [[package]]
 name = "colorama"
-version = "0.4.4"
+version = "0.4.5"
 description = "Cross-platform colored terminal text."
 category = "dev"
 optional = false
@@ -45,18 +30,18 @@
 
 [[package]]
 name = "coverage"
-version = "5.5"
+version = "6.4.4"
 description = "Code coverage measurement for Python"
 category = "dev"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+python-versions = ">=3.7"
 
 [package.extras]
-toml = ["toml"]
+toml = ["tomli"]
 
 [[package]]
 name = "distlib"
-version = "0.3.2"
+version = "0.3.6"
 description = "Distribution utilities"
 category = "dev"
 optional = false
@@ -64,43 +49,32 @@
 
 [[package]]
 name = "filelock"
-version = "3.0.12"
+version = "3.8.0"
 description = "A platform independent file lock."
 category = "dev"
 optional = false
-python-versions = "*"
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints 
(>=1.19.1)"]
+testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", 
"pytest-cov (>=3)", "pytest-timeout (>=2.1)"]
 
 [[package]]
 name = "importlib-metadata"
-version = "4.8.1"
+version = "4.12.0"
 description = "Read metadata from Python packages"
 category = "dev"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 
 [package.dependencies]
 typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
 zipp = ">=0.5"
 
 [package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
+docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
 perf = ["ipython"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", 
"flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", 
"pytest-mypy", "importlib-resources (>=1.3)"]
-
-[[package]]
-name = "importlib-resources"
-version = "5.2.2"
-description = "Read resources from Python packages"
-category = "dev"
-optional = false
-python-versions = ">=3.6"
-
-[package.dependencies]
-zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
-
-[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", 
"pytest-mypy"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", 
"flufl-flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy 
(>=0.9.1)", "importlib-resources (>=1.3)"]
 
 [[package]]
 name = "iniconfig"
@@ -112,26 +86,26 @@
 
 [[package]]
 name = "packaging"
-version = "21.0"
+version = "21.3"
 description = "Core utilities for Python packages"
 category = "dev"
 optional = false
 python-versions = ">=3.6"
 
 [package.dependencies]
-pyparsing = ">=2.0.2"
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
 
 [[package]]
 name = "platformdirs"
-version = "2.3.0"
+version = "2.5.2"
 description = "A small Python module for determining appropriate 
platform-specific dirs, e.g. a \"user data dir\"."
 category = "dev"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 
 [package.extras]
-docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", 
"sphinx-autodoc-typehints (>=1.12)"]
-test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", 
"pytest-mock (>=3.6)"]
+docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", 
"sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
+test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", 
"pytest (>=6)"]
 
 [[package]]
 name = "pluggy"
@@ -150,27 +124,30 @@
 
 [[package]]
 name = "py"
-version = "1.10.0"
+version = "1.11.0"
 description = "library with cross-python path, ini-parsing, io, code, log 
facilities"
 category = "dev"
 optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
 name = "pyparsing"
-version = "2.4.7"
-description = "Python parsing module"
+version = "3.0.9"
+description = "pyparsing module - Classes and methods to define and execute 
parsing grammars"
 category = "dev"
 optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = ">=3.6.8"
+
+[package.extras]
+diagrams = ["railroad-diagrams", "jinja2"]
 
 [[package]]
 name = "pytest"
-version = "6.2.5"
+version = "7.1.2"
 description = "pytest: simple powerful testing with Python"
 category = "dev"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 
 [package.dependencies]
 atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
@@ -181,24 +158,25 @@
 packaging = "*"
 pluggy = ">=0.12,<2.0"
 py = ">=1.8.2"
-toml = "*"
+tomli = ">=1.0.0"
 
 [package.extras]
-testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", 
"xmlschema"]
+testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments 
(>=2.7.2)", "requests", "xmlschema"]
 
 [[package]]
 name = "pytest-asyncio"
-version = "0.15.1"
-description = "Pytest support for asyncio."
+version = "0.19.0"
+description = "Pytest support for asyncio"
 category = "dev"
 optional = false
-python-versions = ">= 3.6"
+python-versions = ">=3.7"
 
 [package.dependencies]
-pytest = ">=5.4.0"
+pytest = ">=6.1.0"
+typing-extensions = {version = ">=3.7.2", markers = "python_version < \"3.8\""}
 
 [package.extras]
-testing = ["coverage", "hypothesis (>=5.7.1)"]
+testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)", "flaky (>=3.5.0)", 
"mypy (>=0.931)", "pytest-trio (>=0.7.0)"]
 
 [[package]]
 name = "six"
@@ -217,8 +195,16 @@
 python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
 
 [[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[[package]]
 name = "tox"
-version = "3.24.4"
+version = "3.25.1"
 description = "tox is a generic virtualenv management and test command line 
tool"
 category = "dev"
 optional = false
@@ -237,173 +223,91 @@
 
 [package.extras]
 docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", 
"sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"]
-testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "psutil (>=5.6.1)", 
"pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", 
"pytest-randomly (>=1.0.0)", "pytest-xdist (>=1.22.2)", "pathlib2 (>=2.3.3)"]
+testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", 
"pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", 
"psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"]
 
 [[package]]
 name = "typing-extensions"
-version = "3.10.0.2"
-description = "Backported and Experimental Type Hints for Python 3.5+"
+version = "4.3.0"
+description = "Backported and Experimental Type Hints for Python 3.7+"
 category = "dev"
 optional = false
-python-versions = "*"
+python-versions = ">=3.7"
 
 [[package]]
 name = "virtualenv"
-version = "20.8.0"
+version = "20.16.4"
 description = "Virtual Python Environment builder"
 category = "dev"
 optional = false
-python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+python-versions = ">=3.6"
 
 [package.dependencies]
-"backports.entry-points-selectable" = ">=1.0.4"
-distlib = ">=0.3.1,<1"
-filelock = ">=3.0.0,<4"
-importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
-importlib-resources = {version = ">=1.0", markers = "python_version < \"3.7\""}
-platformdirs = ">=2,<3"
-six = ">=1.9.0,<2"
+distlib = ">=0.3.5,<1"
+filelock = ">=3.4.1,<4"
+importlib-metadata = {version = ">=4.8.3", markers = "python_version < 
\"3.8\""}
+platformdirs = ">=2.4,<3"
 
 [package.extras]
-docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", 
"sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)"]
-testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky 
(>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", 
"pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", 
"packaging (>=20.0)"]
+docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", 
"sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"]
+testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky 
(>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", 
"pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly 
(>=3.10.3)", "pytest-timeout (>=2.1)"]
 
 [[package]]
 name = "zipp"
-version = "3.5.0"
+version = "3.8.1"
 description = "Backport of pathlib-compatible object wrapper for zip files"
 category = "dev"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 
 [package.extras]
-docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", 
"pytest-black (>=0.3.7)", "pytest-mypy"]
+docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", 
"jaraco.tidelift (>=1.4)"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", 
"pytest-cov", "pytest-enabler (>=1.3)", "jaraco-itertools", "func-timeout", 
"pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"]
 
 [metadata]
 lock-version = "1.1"
-python-versions = "^3.6"
-content-hash = 
"50939ecdc645332d6d6d2daa4ab974cf6816d17793584110983d5abf51fe527b"
+python-versions = "^3.7"
+content-hash = 
"f93768f8e11b7774ec6be76e6c45ac6089c9ac91cc14d9f2dc19ea9cca3c7874"
 
 [metadata.files]
-atomicwrites = [
-    {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = 
"sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
-    {file = "atomicwrites-1.4.0.tar.gz", hash = 
"sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
-]
-attrs = [
-    {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = 
"sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
-    {file = "attrs-21.2.0.tar.gz", hash = 
"sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
-]
-"backports.entry-points-selectable" = [
-    {file = "backports.entry_points_selectable-1.1.0-py2.py3-none-any.whl", 
hash = 
"sha256:a6d9a871cde5e15b4c4a53e3d43ba890cc6861ec1332c9c2428c92f977192acc"},
-    {file = "backports.entry_points_selectable-1.1.0.tar.gz", hash = 
"sha256:988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a"},
-]
+atomicwrites = []
+attrs = []
 colorama = [
-    {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = 
"sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
-    {file = "colorama-0.4.4.tar.gz", hash = 
"sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
-]
-coverage = [
-    {file = "coverage-5.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = 
"sha256:b6d534e4b2ab35c9f93f46229363e17f63c53ad01330df9f2d6bd1187e5eaacf"},
-    {file = "coverage-5.5-cp27-cp27m-manylinux1_i686.whl", hash = 
"sha256:b7895207b4c843c76a25ab8c1e866261bcfe27bfaa20c192de5190121770672b"},
-    {file = "coverage-5.5-cp27-cp27m-manylinux1_x86_64.whl", hash = 
"sha256:c2723d347ab06e7ddad1a58b2a821218239249a9e4365eaff6649d31180c1669"},
-    {file = "coverage-5.5-cp27-cp27m-manylinux2010_i686.whl", hash = 
"sha256:900fbf7759501bc7807fd6638c947d7a831fc9fdf742dc10f02956ff7220fa90"},
-    {file = "coverage-5.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = 
"sha256:004d1880bed2d97151facef49f08e255a20ceb6f9432df75f4eef018fdd5a78c"},
-    {file = "coverage-5.5-cp27-cp27m-win32.whl", hash = 
"sha256:06191eb60f8d8a5bc046f3799f8a07a2d7aefb9504b0209aff0b47298333302a"},
-    {file = "coverage-5.5-cp27-cp27m-win_amd64.whl", hash = 
"sha256:7501140f755b725495941b43347ba8a2777407fc7f250d4f5a7d2a1050ba8e82"},
-    {file = "coverage-5.5-cp27-cp27mu-manylinux1_i686.whl", hash = 
"sha256:372da284cfd642d8e08ef606917846fa2ee350f64994bebfbd3afb0040436905"},
-    {file = "coverage-5.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = 
"sha256:8963a499849a1fc54b35b1c9f162f4108017b2e6db2c46c1bed93a72262ed083"},
-    {file = "coverage-5.5-cp27-cp27mu-manylinux2010_i686.whl", hash = 
"sha256:869a64f53488f40fa5b5b9dcb9e9b2962a66a87dab37790f3fcfb5144b996ef5"},
-    {file = "coverage-5.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = 
"sha256:4a7697d8cb0f27399b0e393c0b90f0f1e40c82023ea4d45d22bce7032a5d7b81"},
-    {file = "coverage-5.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = 
"sha256:8d0a0725ad7c1a0bcd8d1b437e191107d457e2ec1084b9f190630a4fb1af78e6"},
-    {file = "coverage-5.5-cp310-cp310-manylinux1_x86_64.whl", hash = 
"sha256:51cb9476a3987c8967ebab3f0fe144819781fca264f57f89760037a2ea191cb0"},
-    {file = "coverage-5.5-cp310-cp310-win_amd64.whl", hash = 
"sha256:c0891a6a97b09c1f3e073a890514d5012eb256845c451bd48f7968ef939bf4ae"},
-    {file = "coverage-5.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = 
"sha256:3487286bc29a5aa4b93a072e9592f22254291ce96a9fbc5251f566b6b7343cdb"},
-    {file = "coverage-5.5-cp35-cp35m-manylinux1_i686.whl", hash = 
"sha256:deee1077aae10d8fa88cb02c845cfba9b62c55e1183f52f6ae6a2df6a2187160"},
-    {file = "coverage-5.5-cp35-cp35m-manylinux1_x86_64.whl", hash = 
"sha256:f11642dddbb0253cc8853254301b51390ba0081750a8ac03f20ea8103f0c56b6"},
-    {file = "coverage-5.5-cp35-cp35m-manylinux2010_i686.whl", hash = 
"sha256:6c90e11318f0d3c436a42409f2749ee1a115cd8b067d7f14c148f1ce5574d701"},
-    {file = "coverage-5.5-cp35-cp35m-manylinux2010_x86_64.whl", hash = 
"sha256:30c77c1dc9f253283e34c27935fded5015f7d1abe83bc7821680ac444eaf7793"},
-    {file = "coverage-5.5-cp35-cp35m-win32.whl", hash = 
"sha256:9a1ef3b66e38ef8618ce5fdc7bea3d9f45f3624e2a66295eea5e57966c85909e"},
-    {file = "coverage-5.5-cp35-cp35m-win_amd64.whl", hash = 
"sha256:972c85d205b51e30e59525694670de6a8a89691186012535f9d7dbaa230e42c3"},
-    {file = "coverage-5.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = 
"sha256:af0e781009aaf59e25c5a678122391cb0f345ac0ec272c7961dc5455e1c40066"},
-    {file = "coverage-5.5-cp36-cp36m-manylinux1_i686.whl", hash = 
"sha256:74d881fc777ebb11c63736622b60cb9e4aee5cace591ce274fb69e582a12a61a"},
-    {file = "coverage-5.5-cp36-cp36m-manylinux1_x86_64.whl", hash = 
"sha256:92b017ce34b68a7d67bd6d117e6d443a9bf63a2ecf8567bb3d8c6c7bc5014465"},
-    {file = "coverage-5.5-cp36-cp36m-manylinux2010_i686.whl", hash = 
"sha256:d636598c8305e1f90b439dbf4f66437de4a5e3c31fdf47ad29542478c8508bbb"},
-    {file = "coverage-5.5-cp36-cp36m-manylinux2010_x86_64.whl", hash = 
"sha256:41179b8a845742d1eb60449bdb2992196e211341818565abded11cfa90efb821"},
-    {file = "coverage-5.5-cp36-cp36m-win32.whl", hash = 
"sha256:040af6c32813fa3eae5305d53f18875bedd079960822ef8ec067a66dd8afcd45"},
-    {file = "coverage-5.5-cp36-cp36m-win_amd64.whl", hash = 
"sha256:5fec2d43a2cc6965edc0bb9e83e1e4b557f76f843a77a2496cbe719583ce8184"},
-    {file = "coverage-5.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = 
"sha256:18ba8bbede96a2c3dde7b868de9dcbd55670690af0988713f0603f037848418a"},
-    {file = "coverage-5.5-cp37-cp37m-manylinux1_i686.whl", hash = 
"sha256:2910f4d36a6a9b4214bb7038d537f015346f413a975d57ca6b43bf23d6563b53"},
-    {file = "coverage-5.5-cp37-cp37m-manylinux1_x86_64.whl", hash = 
"sha256:f0b278ce10936db1a37e6954e15a3730bea96a0997c26d7fee88e6c396c2086d"},
-    {file = "coverage-5.5-cp37-cp37m-manylinux2010_i686.whl", hash = 
"sha256:796c9c3c79747146ebd278dbe1e5c5c05dd6b10cc3bcb8389dfdf844f3ead638"},
-    {file = "coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl", hash = 
"sha256:53194af30d5bad77fcba80e23a1441c71abfb3e01192034f8246e0d8f99528f3"},
-    {file = "coverage-5.5-cp37-cp37m-win32.whl", hash = 
"sha256:184a47bbe0aa6400ed2d41d8e9ed868b8205046518c52464fde713ea06e3a74a"},
-    {file = "coverage-5.5-cp37-cp37m-win_amd64.whl", hash = 
"sha256:2949cad1c5208b8298d5686d5a85b66aae46d73eec2c3e08c817dd3513e5848a"},
-    {file = "coverage-5.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = 
"sha256:217658ec7187497e3f3ebd901afdca1af062b42cfe3e0dafea4cced3983739f6"},
-    {file = "coverage-5.5-cp38-cp38-manylinux1_i686.whl", hash = 
"sha256:1aa846f56c3d49205c952d8318e76ccc2ae23303351d9270ab220004c580cfe2"},
-    {file = "coverage-5.5-cp38-cp38-manylinux1_x86_64.whl", hash = 
"sha256:24d4a7de75446be83244eabbff746d66b9240ae020ced65d060815fac3423759"},
-    {file = "coverage-5.5-cp38-cp38-manylinux2010_i686.whl", hash = 
"sha256:d1f8bf7b90ba55699b3a5e44930e93ff0189aa27186e96071fac7dd0d06a1873"},
-    {file = "coverage-5.5-cp38-cp38-manylinux2010_x86_64.whl", hash = 
"sha256:970284a88b99673ccb2e4e334cfb38a10aab7cd44f7457564d11898a74b62d0a"},
-    {file = "coverage-5.5-cp38-cp38-win32.whl", hash = 
"sha256:01d84219b5cdbfc8122223b39a954820929497a1cb1422824bb86b07b74594b6"},
-    {file = "coverage-5.5-cp38-cp38-win_amd64.whl", hash = 
"sha256:2e0d881ad471768bf6e6c2bf905d183543f10098e3b3640fc029509530091502"},
-    {file = "coverage-5.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = 
"sha256:d1f9ce122f83b2305592c11d64f181b87153fc2c2bbd3bb4a3dde8303cfb1a6b"},
-    {file = "coverage-5.5-cp39-cp39-manylinux1_i686.whl", hash = 
"sha256:13c4ee887eca0f4c5a247b75398d4114c37882658300e153113dafb1d76de529"},
-    {file = "coverage-5.5-cp39-cp39-manylinux1_x86_64.whl", hash = 
"sha256:52596d3d0e8bdf3af43db3e9ba8dcdaac724ba7b5ca3f6358529d56f7a166f8b"},
-    {file = "coverage-5.5-cp39-cp39-manylinux2010_i686.whl", hash = 
"sha256:2cafbbb3af0733db200c9b5f798d18953b1a304d3f86a938367de1567f4b5bff"},
-    {file = "coverage-5.5-cp39-cp39-manylinux2010_x86_64.whl", hash = 
"sha256:44d654437b8ddd9eee7d1eaee28b7219bec228520ff809af170488fd2fed3e2b"},
-    {file = "coverage-5.5-cp39-cp39-win32.whl", hash = 
"sha256:d314ed732c25d29775e84a960c3c60808b682c08d86602ec2c3008e1202e3bb6"},
-    {file = "coverage-5.5-cp39-cp39-win_amd64.whl", hash = 
"sha256:13034c4409db851670bc9acd836243aeee299949bd5673e11844befcb0149f03"},
-    {file = "coverage-5.5-pp36-none-any.whl", hash = 
"sha256:f030f8873312a16414c0d8e1a1ddff2d3235655a2174e3648b4fa66b3f2f1079"},
-    {file = "coverage-5.5-pp37-none-any.whl", hash = 
"sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"},
-    {file = "coverage-5.5.tar.gz", hash = 
"sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
-]
-distlib = [
-    {file = "distlib-0.3.2-py2.py3-none-any.whl", hash = 
"sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c"},
-    {file = "distlib-0.3.2.zip", hash = 
"sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736"},
-]
-filelock = [
-    {file = "filelock-3.0.12-py3-none-any.whl", hash = 
"sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"},
-    {file = "filelock-3.0.12.tar.gz", hash = 
"sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59"},
-]
-importlib-metadata = [
-    {file = "importlib_metadata-4.8.1-py3-none-any.whl", hash = 
"sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15"},
-    {file = "importlib_metadata-4.8.1.tar.gz", hash = 
"sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1"},
-]
-importlib-resources = [
-    {file = "importlib_resources-5.2.2-py3-none-any.whl", hash = 
"sha256:2480d8e07d1890056cb53c96e3de44fead9c62f2ba949b0f2e4c4345f4afa977"},
-    {file = "importlib_resources-5.2.2.tar.gz", hash = 
"sha256:a65882a4d0fe5fbf702273456ba2ce74fe44892c25e42e057aca526b702a6d4b"},
+    {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = 
"sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
+    {file = "colorama-0.4.5.tar.gz", hash = 
"sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
 ]
+coverage = []
+distlib = []
+filelock = []
+importlib-metadata = []
 iniconfig = [
     {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = 
"sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
     {file = "iniconfig-1.1.1.tar.gz", hash = 
"sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
 ]
 packaging = [
-    {file = "packaging-21.0-py3-none-any.whl", hash = 
"sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
-    {file = "packaging-21.0.tar.gz", hash = 
"sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
+    {file = "packaging-21.3-py3-none-any.whl", hash = 
"sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+    {file = "packaging-21.3.tar.gz", hash = 
"sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
 ]
 platformdirs = [
-    {file = "platformdirs-2.3.0-py3-none-any.whl", hash = 
"sha256:8003ac87717ae2c7ee1ea5a84a1a61e87f3fbd16eb5aadba194ea30a9019f648"},
-    {file = "platformdirs-2.3.0.tar.gz", hash = 
"sha256:15b056538719b1c94bdaccb29e5f81879c7f7f0f4a153f46086d155dffcd4f0f"},
+    {file = "platformdirs-2.5.2-py3-none-any.whl", hash = 
"sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
+    {file = "platformdirs-2.5.2.tar.gz", hash = 
"sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
 ]
 pluggy = [
     {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = 
"sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
     {file = "pluggy-1.0.0.tar.gz", hash = 
"sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
 ]
 py = [
-    {file = "py-1.10.0-py2.py3-none-any.whl", hash = 
"sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
-    {file = "py-1.10.0.tar.gz", hash = 
"sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
+    {file = "py-1.11.0-py2.py3-none-any.whl", hash = 
"sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
+    {file = "py-1.11.0.tar.gz", hash = 
"sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
 ]
 pyparsing = [
-    {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = 
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
-    {file = "pyparsing-2.4.7.tar.gz", hash = 
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
+    {file = "pyparsing-3.0.9-py3-none-any.whl", hash = 
"sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
+    {file = "pyparsing-3.0.9.tar.gz", hash = 
"sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
 ]
 pytest = [
-    {file = "pytest-6.2.5-py3-none-any.whl", hash = 
"sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
-    {file = "pytest-6.2.5.tar.gz", hash = 
"sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
-]
-pytest-asyncio = [
-    {file = "pytest-asyncio-0.15.1.tar.gz", hash = 
"sha256:2564ceb9612bbd560d19ca4b41347b54e7835c2f792c504f698e05395ed63f6f"},
-    {file = "pytest_asyncio-0.15.1-py3-none-any.whl", hash = 
"sha256:3042bcdf1c5d978f6b74d96a151c4cfb9dcece65006198389ccd7e6c60eb1eea"},
+    {file = "pytest-7.1.2-py3-none-any.whl", hash = 
"sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"},
+    {file = "pytest-7.1.2.tar.gz", hash = 
"sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"},
 ]
+pytest-asyncio = []
 six = [
     {file = "six-1.16.0-py2.py3-none-any.whl", hash = 
"sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
     {file = "six-1.16.0.tar.gz", hash = 
"sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
@@ -412,20 +316,14 @@
     {file = "toml-0.10.2-py2.py3-none-any.whl", hash = 
"sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
     {file = "toml-0.10.2.tar.gz", hash = 
"sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
 ]
-tox = [
-    {file = "tox-3.24.4-py2.py3-none-any.whl", hash = 
"sha256:5e274227a53dc9ef856767c21867377ba395992549f02ce55eb549f9fb9a8d10"},
-    {file = "tox-3.24.4.tar.gz", hash = 
"sha256:c30b57fa2477f1fb7c36aa1d83292d5c2336cd0018119e1b1c17340e2c2708ca"},
+tomli = [
+    {file = "tomli-2.0.1-py3-none-any.whl", hash = 
"sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+    {file = "tomli-2.0.1.tar.gz", hash = 
"sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
 ]
+tox = []
 typing-extensions = [
-    {file = "typing_extensions-3.10.0.2-py2-none-any.whl", hash = 
"sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7"},
-    {file = "typing_extensions-3.10.0.2-py3-none-any.whl", hash = 
"sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34"},
-    {file = "typing_extensions-3.10.0.2.tar.gz", hash = 
"sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e"},
-]
-virtualenv = [
-    {file = "virtualenv-20.8.0-py2.py3-none-any.whl", hash = 
"sha256:a4b987ec31c3c9996cf1bc865332f967fe4a0512c41b39652d6224f696e69da5"},
-    {file = "virtualenv-20.8.0.tar.gz", hash = 
"sha256:4da4ac43888e97de9cf4fdd870f48ed864bbfd133d2c46cbdec941fed4a25aef"},
-]
-zipp = [
-    {file = "zipp-3.5.0-py3-none-any.whl", hash = 
"sha256:957cfda87797e389580cb8b9e3870841ca991e2125350677b2ca83a0e99390a3"},
-    {file = "zipp-3.5.0.tar.gz", hash = 
"sha256:f5812b1e007e48cff63449a5e9f4e7ebea716b4111f9c4f9a645f91d579bf0c4"},
+    {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = 
"sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"},
+    {file = "typing_extensions-4.3.0.tar.gz", hash = 
"sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"},
 ]
+virtualenv = []
+zipp = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/pyproject.toml 
new/aiofiles-22.1.0/pyproject.toml
--- old/aiofiles-0.8.0/pyproject.toml   2021-11-27 16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/pyproject.toml  2022-09-04 19:09:08.000000000 +0200
@@ -1,19 +1,20 @@
 [tool.poetry]
 name = "aiofiles"
-version = "0.8.0"
+version = "22.1.0"
 description = "File support for asyncio."
 authors = ["Tin Tvrtkovic <[email protected]>"]
 license = "Apache-2.0"
 readme = "README.rst"
+repository = "https://github.com/Tinche/aiofiles";
 
 [tool.poetry.dependencies]
-python = "^3.6"
+python = "^3.7"
 
 [tool.poetry.dev-dependencies]
-pytest = "^6.2.2"
-pytest-asyncio = "^0.15.1"
-coverage = "^5.5"
-tox = "^3.23.0"
+pytest = "^7.1.2"
+pytest-asyncio = "^0.19.0"
+coverage = "^6.4.4"
+tox = "^3.25.1"
 
 [build-system]
 requires = ["poetry-core>=1.0.0"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/src/aiofiles/os.py 
new/aiofiles-22.1.0/src/aiofiles/os.py
--- old/aiofiles-0.8.0/src/aiofiles/os.py       2021-11-27 16:05:37.000000000 
+0100
+++ new/aiofiles-22.1.0/src/aiofiles/os.py      2022-09-04 19:09:08.000000000 
+0200
@@ -20,12 +20,19 @@
 
 stat = wrap(os.stat)
 rename = wrap(os.rename)
+renames = wrap(os.renames)
 replace = wrap(os.replace)
 remove = wrap(os.remove)
+unlink = wrap(os.unlink)
 mkdir = wrap(os.mkdir)
 makedirs = wrap(os.makedirs)
 rmdir = wrap(os.rmdir)
 removedirs = wrap(os.removedirs)
+link = wrap(os.link)
+symlink = wrap(os.symlink)
+readlink = wrap(os.readlink)
+listdir = wrap(os.listdir)
+scandir = wrap(os.scandir)
 
 if hasattr(os, "sendfile"):
     sendfile = wrap(os.sendfile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/src/aiofiles/ospath.py 
new/aiofiles-22.1.0/src/aiofiles/ospath.py
--- old/aiofiles-0.8.0/src/aiofiles/ospath.py   2021-11-27 16:05:37.000000000 
+0100
+++ new/aiofiles-22.1.0/src/aiofiles/ospath.py  2022-09-04 19:09:08.000000000 
+0200
@@ -6,6 +6,7 @@
 exists = wrap(path.exists)
 isfile = wrap(path.isfile)
 isdir = wrap(path.isdir)
+islink = wrap(path.islink)
 getsize = wrap(path.getsize)
 getmtime = wrap(path.getmtime)
 getatime = wrap(path.getatime)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/src/aiofiles/tempfile/temptypes.py 
new/aiofiles-22.1.0/src/aiofiles/tempfile/temptypes.py
--- old/aiofiles-0.8.0/src/aiofiles/tempfile/temptypes.py       2021-11-27 
16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/src/aiofiles/tempfile/temptypes.py      2022-09-04 
19:09:08.000000000 +0200
@@ -18,7 +18,6 @@
     "close",
     "flush",
     "isatty",
-    "newlines",
     "read",
     "readline",
     "readlines",
@@ -26,7 +25,7 @@
     "tell",
     "truncate",
 )
-@proxy_property_directly("closed", "encoding", "mode", "name", "softspace")
+@proxy_property_directly("closed", "encoding", "mode", "name", "newlines", 
"softspace")
 class AsyncSpooledTemporaryFile(AsyncBase):
     """Async wrapper for SpooledTemporaryFile class"""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/tests/test_os.py 
new/aiofiles-22.1.0/tests/test_os.py
--- old/aiofiles-0.8.0/tests/test_os.py 2021-11-27 16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/tests/test_os.py        2022-09-04 19:09:08.000000000 
+0200
@@ -1,6 +1,7 @@
 """Tests for asyncio's os module."""
 import aiofiles.os
 import asyncio
+from os import stat
 from os.path import join, dirname, exists, isdir
 import pytest
 import platform
@@ -29,6 +30,18 @@
 
 
 @pytest.mark.asyncio
+async def test_unlink():
+    """Test the unlink call."""
+    filename = join(dirname(__file__), "resources", "test_file2.txt")
+    with open(filename, "w") as f:
+        f.write("Test file for unlink call")
+
+    assert exists(filename)
+    await aiofiles.os.unlink(filename)
+    assert exists(filename) is False
+
+
[email protected]
 async def test_mkdir_and_rmdir():
     """Test the mkdir and rmdir call."""
     directory = join(dirname(__file__), "resources", "test_dir")
@@ -50,6 +63,23 @@
 
 
 @pytest.mark.asyncio
+async def test_renames():
+    """Test the renames call."""
+    old_filename = join(dirname(__file__), "resources", "test_file1.txt")
+    new_filename = join(
+        dirname(__file__), "resources", "subdirectory", "test_file2.txt"
+    )
+    await aiofiles.os.renames(old_filename, new_filename)
+    assert exists(old_filename) is False and exists(new_filename)
+    await aiofiles.os.renames(new_filename, old_filename)
+    assert (
+        exists(old_filename) and
+        exists(new_filename) is False and
+        exists(dirname(new_filename)) is False
+    )
+
+
[email protected]
 async def test_replace():
     """Test the replace call."""
     old_filename = join(dirname(__file__), "resources", "test_file1.txt")
@@ -163,6 +193,16 @@
 
 
 @pytest.mark.asyncio
+async def test_islink():
+    """Test the path.islink call."""
+    src_filename = join(dirname(__file__), "resources", "test_file1.txt")
+    dst_filename = join(dirname(__file__), "resources", "test_file2.txt")
+    await aiofiles.os.symlink(src_filename, dst_filename)
+    assert await aiofiles.os.path.islink(dst_filename)
+    await aiofiles.os.remove(dst_filename)
+
+
[email protected]
 async def test_getsize():
     """Test path.getsize call."""
     filename = join(dirname(__file__), "resources", "test_file1.txt")
@@ -208,3 +248,179 @@
     filename = join(dirname(__file__), "resources", "test_file1.txt")
     result = await aiofiles.os.path.getctime(filename)
     assert result
+
+
[email protected]
+async def test_link():
+    """Test the link call."""
+    src_filename = join(dirname(__file__), "resources", "test_file1.txt")
+    dst_filename = join(dirname(__file__), "resources", "test_file2.txt")
+    initial_src_nlink = stat(src_filename).st_nlink
+    await aiofiles.os.link(src_filename, dst_filename)
+    assert (
+        exists(src_filename)
+        and exists(dst_filename)
+        and (stat(src_filename).st_ino == stat(dst_filename).st_ino)
+        and (stat(src_filename).st_nlink == initial_src_nlink + 1)
+        and (stat(dst_filename).st_nlink == 2)
+    )
+    await aiofiles.os.remove(dst_filename)
+    assert (
+        exists(src_filename)
+        and exists(dst_filename) is False
+        and (stat(src_filename).st_nlink == initial_src_nlink)
+    )
+
+
[email protected]
+async def test_symlink():
+    """Test the symlink call."""
+    src_filename = join(dirname(__file__), "resources", "test_file1.txt")
+    dst_filename = join(dirname(__file__), "resources", "test_file2.txt")
+    await aiofiles.os.symlink(src_filename, dst_filename)
+    assert (
+        exists(src_filename)
+        and exists(dst_filename)
+        and stat(src_filename).st_ino == stat(dst_filename).st_ino
+    )
+    await aiofiles.os.remove(dst_filename)
+    assert exists(src_filename) and exists(dst_filename) is False
+
+
[email protected]
+async def test_readlink():
+    """Test the readlink call."""
+    src_filename = join(dirname(__file__), "resources", "test_file1.txt")
+    dst_filename = join(dirname(__file__), "resources", "test_file2.txt")
+    await aiofiles.os.symlink(src_filename, dst_filename)
+    symlinked_path = await aiofiles.os.readlink(dst_filename)
+    assert src_filename == symlinked_path
+    await aiofiles.os.remove(dst_filename)
+
+
[email protected]
+async def test_listdir_empty_dir():
+    """Test the listdir call when the dir is empty."""
+    directory = join(dirname(__file__), "resources", "empty_dir")
+    await aiofiles.os.mkdir(directory)
+    dir_list = await aiofiles.os.listdir(directory)
+    assert dir_list == []
+    await aiofiles.os.rmdir(directory)
+
+
[email protected]
+async def test_listdir_dir_with_only_one_file():
+    """Test the listdir call when the dir has one file."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    some_file = join(some_dir, "some_file.txt")
+    await aiofiles.os.mkdir(some_dir)
+    with open(some_file, "w") as f:
+        f.write("Test file")
+    dir_list = await aiofiles.os.listdir(some_dir)
+    assert "some_file.txt" in dir_list
+    await aiofiles.os.remove(some_file)
+    await aiofiles.os.rmdir(some_dir)
+
[email protected]
+async def test_listdir_dir_with_only_one_dir():
+    """Test the listdir call when the dir has one dir."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    other_dir = join(some_dir, "other_dir")
+    await aiofiles.os.mkdir(some_dir)
+    await aiofiles.os.mkdir(other_dir)
+    dir_list = await aiofiles.os.listdir(some_dir)
+    assert "other_dir" in dir_list
+    await aiofiles.os.rmdir(other_dir)
+    await aiofiles.os.rmdir(some_dir)
+
[email protected]
+async def test_listdir_dir_with_multiple_files():
+    """Test the listdir call when the dir has multiple files."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    some_file = join(some_dir, "some_file.txt")
+    other_file = join(some_dir, "other_file.txt")
+    await aiofiles.os.mkdir(some_dir)
+    with open(some_file, "w") as f:
+        f.write("Test file")
+    with open(other_file, "w") as f:
+        f.write("Test file")
+    dir_list = await aiofiles.os.listdir(some_dir)
+    assert "some_file.txt" in dir_list
+    assert "other_file.txt" in dir_list
+    await aiofiles.os.remove(some_file)
+    await aiofiles.os.remove(other_file)
+    await aiofiles.os.rmdir(some_dir)
+
[email protected]
+async def test_listdir_dir_with_a_file_and_a_dir():
+    """Test the listdir call when the dir has files and other dirs."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    other_dir = join(some_dir, "other_dir")
+    some_file = join(some_dir, "some_file.txt")
+    await aiofiles.os.mkdir(some_dir)
+    await aiofiles.os.mkdir(other_dir)
+    with open(some_file, "w") as f:
+        f.write("Test file")
+    dir_list = await aiofiles.os.listdir(some_dir)
+    assert "some_file.txt" in dir_list
+    assert "other_dir" in dir_list
+    await aiofiles.os.remove(some_file)
+    await aiofiles.os.rmdir(other_dir)
+    await aiofiles.os.rmdir(some_dir)
+
+
[email protected]
+async def test_listdir_non_existing_dir():
+    """Test the listdir call when the dir doesn't exist."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    with pytest.raises(FileNotFoundError) as excinfo:
+        await aiofiles.os.listdir(some_dir)
+
+
[email protected]
+async def test_scantdir_empty_dir():
+    """Test the scandir call when the dir is empty."""
+    empty_dir = join(dirname(__file__), "resources", "empty_dir")
+    await aiofiles.os.mkdir(empty_dir)
+    dir_iterator = await aiofiles.os.scandir(empty_dir)
+    dir_list = []
+    for dir_entity in dir_iterator:
+        dir_list.append(dir_entity)
+    assert dir_list == []
+    await aiofiles.os.rmdir(empty_dir)
+
+
[email protected]
+async def test_scandir_dir_with_only_one_file():
+    """Test the scandir call when the dir has one file."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    some_file = join(some_dir, "some_file.txt")
+    await aiofiles.os.mkdir(some_dir)
+    with open(some_file, "w") as f:
+        f.write("Test file")
+    dir_iterator = await aiofiles.os.scandir(some_dir)
+    some_file_entity = next(dir_iterator)
+    assert some_file_entity.name == "some_file.txt"
+    await aiofiles.os.remove(some_file)
+    await aiofiles.os.rmdir(some_dir)
+
[email protected]
+async def test_scandir_dir_with_only_one_dir():
+    """Test the scandir call when the dir has one dir."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    other_dir = join(some_dir, "other_dir")
+    await aiofiles.os.mkdir(some_dir)
+    await aiofiles.os.mkdir(other_dir)
+    dir_iterator = await aiofiles.os.scandir(some_dir)
+    other_dir_entity = next(dir_iterator)
+    assert other_dir_entity.name == "other_dir"
+    await aiofiles.os.rmdir(other_dir)
+    await aiofiles.os.rmdir(some_dir)
+
+
[email protected]
+async def test_scandir_non_existing_dir():
+    """Test the scandir call when the dir doesn't exist."""
+    some_dir = join(dirname(__file__), "resources", "some_dir")
+    with pytest.raises(FileNotFoundError) as excinfo:
+        await aiofiles.os.scandir(some_dir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/tests/test_tempfile.py 
new/aiofiles-22.1.0/tests/test_tempfile.py
--- old/aiofiles-0.8.0/tests/test_tempfile.py   2021-11-27 16:05:37.000000000 
+0100
+++ new/aiofiles-22.1.0/tests/test_tempfile.py  2022-09-04 19:09:08.000000000 
+0200
@@ -3,6 +3,7 @@
 from aiofiles import tempfile
 import os
 import io
+import sys
 
 
 @pytest.mark.asyncio
@@ -65,6 +66,35 @@
 
 
 @pytest.mark.asyncio
[email protected](
+    sys.version_info < (3, 7),
+    reason=(
+       "text-mode SpooledTemporaryFile is implemented with StringIO in py3.6"
+       "it doesn't support `newlines`"
+    )
+)
[email protected](
+    "test_string, newlines", [("LF\n", "\n"), ("CRLF\r\n", "\r\n")]
+)
+async def test_spooled_temporary_file_newlines(test_string, newlines):
+    """
+    Test `newlines` property in spooled temporary file.
+    issue https://github.com/Tinche/aiofiles/issues/118
+    """
+
+    async with tempfile.SpooledTemporaryFile(mode="w+") as f:
+        await f.write(test_string)
+        await f.flush()
+        await f.seek(0)
+
+        assert f.newlines is None
+
+        await f.read()
+
+        assert f.newlines == newlines
+
+
[email protected]
 @pytest.mark.parametrize("prefix, suffix", [("a", "b"), ("c", "d"), ("e", 
"f")])
 async def test_temporary_directory(prefix, suffix, tmp_path):
     """Test temporary directory."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/aiofiles-0.8.0/tox.ini new/aiofiles-22.1.0/tox.ini
--- old/aiofiles-0.8.0/tox.ini  2021-11-27 16:05:37.000000000 +0100
+++ new/aiofiles-22.1.0/tox.ini 2022-09-04 19:09:08.000000000 +0200
@@ -1,14 +1,14 @@
 [gh-actions]
 python =
-    3.6: py36
     3.7: py37
     3.8: py38
     3.9: py39
     3.10: py310
+    3.11: py311
     pypy-3.7: pypy3
 
 [tox]
-envlist = py36, py37, py38, py39, py310, pypy3
+envlist = py37, py38, py39, py310, py311, pypy3
 isolated_build = True
 
 [testenv:lint]

Reply via email to