diff --git a/aiofiles/threadpool/binary.py b/aiofiles/threadpool/binary.py
index fc5fc33..3568ed0 100644
--- a/aiofiles/threadpool/binary.py
+++ b/aiofiles/threadpool/binary.py
@@ -24,7 +24,7 @@ from .utils import (
     "writelines",
 )
 @proxy_method_directly("detach", "fileno", "readable")
-@proxy_property_directly("closed", "raw")
+@proxy_property_directly("closed", "raw", "name", "mode")
 class AsyncBufferedIOBase(AsyncBase):
     """The asyncio executor version of io.BufferedWriter."""
 
@@ -52,6 +52,6 @@ class AsyncBufferedReader(AsyncBufferedIOBase):
     "writelines",
 )
 @proxy_method_directly("fileno", "readable")
-@proxy_property_directly("closed")
+@proxy_property_directly("closed", "name", "mode")
 class AsyncFileIO(AsyncBase):
     """The asyncio executor version of io.FileIO."""
diff --git a/aiofiles/threadpool/text.py b/aiofiles/threadpool/text.py
index 6de80f1..7dd968e 100644
--- a/aiofiles/threadpool/text.py
+++ b/aiofiles/threadpool/text.py
@@ -24,7 +24,7 @@ from .utils import (
 )
 @proxy_method_directly("detach", "fileno", "readable")
 @proxy_property_directly(
-    "buffer", "closed", "encoding", "errors", "line_buffering", "newlines"
+    "buffer", "closed", "encoding", "errors", "line_buffering", "newlines", "name", "mode"
 )
 class AsyncTextIOWrapper(AsyncBase):
     """The asyncio executor version of io.TextIOWrapper."""

Missing .name and .mode attributes
The [FileIO attributes](https://docs.python.org/3/library/io.html#io.FileIO) `.name` and `.mode` are missing from the wrappers.

So this works:

```python
with open(filename) as f:
    print(f.name, f.mode)
```

This doesn't, resulting in attribute errors.

```python
async with aiofiles.open(filename) as f:
    print(f.name, f.mode)
```

diff --git a/tests/threadpool/test_binary.py b/tests/threadpool/test_binary.py
index c497443..faf72a0 100644
--- a/tests/threadpool/test_binary.py
+++ b/tests/threadpool/test_binary.py
@@ -308,3 +308,29 @@ async def test_simple_readall(tmpdir):
 
     await file.close()
     assert file.closed
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize("mode", ["rb", "rb+", "ab+"])
+@pytest.mark.parametrize("buffering", [-1, 0])
+async def test_name_property(mode, buffering):
+    """Test iterating over lines from a file."""
+    filename = join(dirname(__file__), "..", "resources", "multiline_file.txt")
+
+    async with aioopen(filename, mode=mode, buffering=buffering) as file:
+        assert file.name == filename
+
+    assert file.closed
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize("mode", ["rb", "rb+", "ab+"])
+@pytest.mark.parametrize("buffering", [-1, 0])
+async def test_mode_property(mode, buffering):
+    """Test iterating over lines from a file."""
+    filename = join(dirname(__file__), "..", "resources", "multiline_file.txt")
+
+    async with aioopen(filename, mode=mode, buffering=buffering) as file:
+        assert file.mode == mode
+
+    assert file.closed
diff --git a/tests/threadpool/test_text.py b/tests/threadpool/test_text.py
index 1270db2..2a3dbcf 100644
--- a/tests/threadpool/test_text.py
+++ b/tests/threadpool/test_text.py
@@ -262,3 +262,27 @@ async def test_simple_iteration_ctx_mgr(mode):
             counter += 1
 
     assert file.closed
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize('mode', ['r', 'r+', 'a+'])
+async def test_name_property(mode):
+    """Test iterating over lines from a file."""
+    filename = join(dirname(__file__), '..', 'resources', 'multiline_file.txt')
+
+    async with aioopen(filename, mode=mode) as file:
+        assert file.name == filename
+
+    assert file.closed
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize('mode', ['r', 'r+', 'a+'])
+async def test_mode_property(mode):
+    """Test iterating over lines from a file."""
+    filename = join(dirname(__file__), '..', 'resources', 'multiline_file.txt')
+
+    async with aioopen(filename, mode=mode) as file:
+        assert file.mode == mode
+
+    assert file.closed

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-asyncio pytest-cov
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/Tinche/aiofiles.git@72f88e50e48802fec8f988be5cc6c2d80c09a8de#egg=aiofiles
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
exceptiongroup==1.2.2
importlib-metadata==6.7.0
iniconfig==2.0.0
packaging==24.0
pluggy==1.2.0
pytest==7.4.4
pytest-asyncio==0.21.2
pytest-cov==4.1.0
tomli==2.0.1
typing_extensions==4.7.1
zipp==3.15.0

name: aiofiles
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.2.7
      - exceptiongroup==1.2.2
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - packaging==24.0
      - pluggy==1.2.0
      - pytest==7.4.4
      - pytest-asyncio==0.21.2
      - pytest-cov==4.1.0
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - zipp==3.15.0
prefix: /opt/conda/envs/aiofiles

tests/threadpool/test_binary.py::test_name_property[-1-rb] tests/threadpool/test_binary.py::test_name_property[-1-rb+] tests/threadpool/test_binary.py::test_name_property[-1-ab+] tests/threadpool/test_binary.py::test_name_property[0-rb] tests/threadpool/test_binary.py::test_name_property[0-rb+] tests/threadpool/test_binary.py::test_name_property[0-ab+] tests/threadpool/test_binary.py::test_mode_property[-1-rb] tests/threadpool/test_binary.py::test_mode_property[-1-rb+] tests/threadpool/test_binary.py::test_mode_property[-1-ab+] tests/threadpool/test_binary.py::test_mode_property[0-rb] tests/threadpool/test_binary.py::test_mode_property[0-rb+] tests/threadpool/test_binary.py::test_mode_property[0-ab+] tests/threadpool/test_text.py::test_name_property[r] tests/threadpool/test_text.py::test_name_property[r+] tests/threadpool/test_text.py::test_name_property[a+] tests/threadpool/test_text.py::test_mode_property[r] tests/threadpool/test_text.py::test_mode_property[r+] tests/threadpool/test_text.py::test_mode_property[a+]
tests/threadpool/test_binary.py::test_simple_iteration[-1-rb] tests/threadpool/test_binary.py::test_simple_iteration[-1-rb+] tests/threadpool/test_binary.py::test_simple_iteration[-1-ab+] tests/threadpool/test_binary.py::test_simple_iteration[0-rb] tests/threadpool/test_binary.py::test_simple_iteration[0-rb+] tests/threadpool/test_binary.py::test_simple_iteration[0-ab+] tests/threadpool/test_binary.py::test_simple_readlines[-1-rb] tests/threadpool/test_binary.py::test_simple_readlines[-1-rb+] tests/threadpool/test_binary.py::test_simple_readlines[-1-ab+] tests/threadpool/test_binary.py::test_simple_readlines[0-rb] tests/threadpool/test_binary.py::test_simple_readlines[0-rb+] tests/threadpool/test_binary.py::test_simple_readlines[0-ab+] tests/threadpool/test_binary.py::test_simple_flush[-1-rb+] tests/threadpool/test_binary.py::test_simple_flush[-1-wb] tests/threadpool/test_binary.py::test_simple_flush[-1-ab] tests/threadpool/test_binary.py::test_simple_flush[0-rb+] tests/threadpool/test_binary.py::test_simple_flush[0-wb] tests/threadpool/test_binary.py::test_simple_flush[0-ab] tests/threadpool/test_binary.py::test_simple_peek[rb+] tests/threadpool/test_binary.py::test_simple_peek[wb+] tests/threadpool/test_binary.py::test_simple_peek[ab+] tests/threadpool/test_binary.py::test_simple_read[-1-rb] tests/threadpool/test_binary.py::test_simple_read[-1-rb+] tests/threadpool/test_binary.py::test_simple_read[-1-ab+] tests/threadpool/test_binary.py::test_simple_read[0-rb] tests/threadpool/test_binary.py::test_simple_read[0-rb+] tests/threadpool/test_binary.py::test_simple_read[0-ab+] tests/threadpool/test_binary.py::test_staggered_read[-1-rb] tests/threadpool/test_binary.py::test_staggered_read[-1-rb+] tests/threadpool/test_binary.py::test_staggered_read[-1-ab+] tests/threadpool/test_binary.py::test_staggered_read[0-rb] tests/threadpool/test_binary.py::test_staggered_read[0-rb+] tests/threadpool/test_binary.py::test_staggered_read[0-ab+] tests/threadpool/test_binary.py::test_simple_seek[-1-rb] tests/threadpool/test_binary.py::test_simple_seek[-1-rb+] tests/threadpool/test_binary.py::test_simple_seek[-1-ab+] tests/threadpool/test_binary.py::test_simple_seek[0-rb] tests/threadpool/test_binary.py::test_simple_seek[0-rb+] tests/threadpool/test_binary.py::test_simple_seek[0-ab+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-wb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-rb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-rb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-wb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-ab] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[-1-ab+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-wb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-rb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-rb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-wb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-ab] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr_iter[0-ab+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-wb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-rb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-rb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-wb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-ab] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[-1-ab+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-wb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-rb] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-rb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-wb+] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-ab] tests/threadpool/test_binary.py::test_simple_close_ctx_mgr[0-ab+] tests/threadpool/test_binary.py::test_simple_readinto[-1-rb] tests/threadpool/test_binary.py::test_simple_readinto[-1-rb+] tests/threadpool/test_binary.py::test_simple_readinto[-1-ab+] tests/threadpool/test_binary.py::test_simple_readinto[0-rb] tests/threadpool/test_binary.py::test_simple_readinto[0-rb+] tests/threadpool/test_binary.py::test_simple_readinto[0-ab+] tests/threadpool/test_binary.py::test_simple_truncate[-1-rb+] tests/threadpool/test_binary.py::test_simple_truncate[-1-wb] tests/threadpool/test_binary.py::test_simple_truncate[-1-ab+] tests/threadpool/test_binary.py::test_simple_truncate[0-rb+] tests/threadpool/test_binary.py::test_simple_truncate[0-wb] tests/threadpool/test_binary.py::test_simple_truncate[0-ab+] tests/threadpool/test_binary.py::test_simple_write[-1-wb] tests/threadpool/test_binary.py::test_simple_write[-1-rb+] tests/threadpool/test_binary.py::test_simple_write[-1-wb+] tests/threadpool/test_binary.py::test_simple_write[-1-ab] tests/threadpool/test_binary.py::test_simple_write[-1-ab+] tests/threadpool/test_binary.py::test_simple_write[0-wb] tests/threadpool/test_binary.py::test_simple_write[0-rb+] tests/threadpool/test_binary.py::test_simple_write[0-wb+] tests/threadpool/test_binary.py::test_simple_write[0-ab] tests/threadpool/test_binary.py::test_simple_write[0-ab+] tests/threadpool/test_binary.py::test_simple_detach tests/threadpool/test_binary.py::test_simple_readall tests/threadpool/test_text.py::test_simple_iteration[r] tests/threadpool/test_text.py::test_simple_iteration[r+] tests/threadpool/test_text.py::test_simple_iteration[a+] tests/threadpool/test_text.py::test_simple_readlines[r] tests/threadpool/test_text.py::test_simple_readlines[r+] tests/threadpool/test_text.py::test_simple_readlines[a+] tests/threadpool/test_text.py::test_simple_flush[r+] tests/threadpool/test_text.py::test_simple_flush[w] tests/threadpool/test_text.py::test_simple_flush[a] tests/threadpool/test_text.py::test_simple_read[r] tests/threadpool/test_text.py::test_simple_read[r+] tests/threadpool/test_text.py::test_simple_read[a+] tests/threadpool/test_text.py::test_simple_read_fail[w] tests/threadpool/test_text.py::test_simple_read_fail[a] tests/threadpool/test_text.py::test_staggered_read[r] tests/threadpool/test_text.py::test_staggered_read[r+] tests/threadpool/test_text.py::test_staggered_read[a+] tests/threadpool/test_text.py::test_simple_seek[r] tests/threadpool/test_text.py::test_simple_seek[r+] tests/threadpool/test_text.py::test_simple_seek[a+] tests/threadpool/test_text.py::test_simple_close[w] tests/threadpool/test_text.py::test_simple_close[r] tests/threadpool/test_text.py::test_simple_close[r+] tests/threadpool/test_text.py::test_simple_close[w+] tests/threadpool/test_text.py::test_simple_close[a] tests/threadpool/test_text.py::test_simple_close[a+] tests/threadpool/test_text.py::test_simple_truncate[r+] tests/threadpool/test_text.py::test_simple_truncate[w] tests/threadpool/test_text.py::test_simple_truncate[a+] tests/threadpool/test_text.py::test_simple_write[w] tests/threadpool/test_text.py::test_simple_write[r+] tests/threadpool/test_text.py::test_simple_write[w+] tests/threadpool/test_text.py::test_simple_write[a] tests/threadpool/test_text.py::test_simple_write[a+] tests/threadpool/test_text.py::test_simple_detach tests/threadpool/test_text.py::test_simple_iteration_ctx_mgr[r] tests/threadpool/test_text.py::test_simple_iteration_ctx_mgr[r+] tests/threadpool/test_text.py::test_simple_iteration_ctx_mgr[a+]
aiofiles/threadpool/binary.py aiofiles/threadpool/text.py
aiofiles/threadpool/binary.py aiofiles/threadpool/text.py