summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-fs-smbfs.spec434
-rw-r--r--sources1
3 files changed, 436 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..9c928bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/fs.smbfs-1.0.7.tar.gz
diff --git a/python-fs-smbfs.spec b/python-fs-smbfs.spec
new file mode 100644
index 0000000..a2d758a
--- /dev/null
+++ b/python-fs-smbfs.spec
@@ -0,0 +1,434 @@
+%global _empty_manifest_terminate_build 0
+Name: python-fs.smbfs
+Version: 1.0.7
+Release: 1
+Summary: Pyfilesystem2 over SMB using pysmb
+License: MIT
+URL: https://github.com/althonos/fs.smbfs
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/db/42/9b2a0610dde7b0784128553b8f35934fe136ab0e801aef92f3f5eae17254/fs.smbfs-1.0.7.tar.gz
+BuildArch: noarch
+
+Requires: python3-fs
+Requires: python3-pysmb
+Requires: python3-six
+Requires: python3-setuptools
+Requires: python3-configparser
+
+%description
+# `fs.smbfs` [![star me](https://img.shields.io/github/stars/althonos/fs.smbfs.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/fs.smbfs/stargazers)
+
+[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?logo=git&maxAge=36000&style=flat-square)](https://github.com/althonos/fs.smbfs)
+[![PyPI](https://img.shields.io/pypi/v/fs.smbfs.svg?logo=pypi&style=flat-square&maxAge=3600)](https://pypi.python.org/pypi/fs.smbfs)
+[![Actions](https://img.shields.io/github/workflow/status/althonos/fs.smbfs/Test/master?logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/fs.smbfs/actions)
+[![Codecov](https://img.shields.io/codecov/c/github/althonos/fs.smbfs/master.svg?logo=codecov&style=flat-square&maxAge=300)](https://codecov.io/gh/althonos/fs.smbfs)
+[![Codacy](https://img.shields.io/codacy/grade/82d40d17b4734692a9e70c5af5cc2a5b/master.svg?logo=codacy&style=flat-square&maxAge=300)](https://www.codacy.com/app/althonos/fs.smbfs/dashboard)
+[![License](https://img.shields.io/pypi/l/fs.smbfs.svg?style=flat-square&maxAge=300)](https://choosealicense.com/licenses/mit/)
+[![Versions](https://img.shields.io/pypi/pyversions/fs.smbfs.svg?logo=python&style=flat-square&maxAge=300)](https://pypi.org/project/fs.smbfs)
+[![Format](https://img.shields.io/pypi/format/fs.smbfs.svg?style=flat-square&maxAge=300)](https://pypi.python.org/pypi/fs.smbfs)
+[![GitHub issues](https://img.shields.io/github/issues/althonos/fs.smbfs.svg?style=flat-square&maxAge=600)](https://github.com/althonos/fs.smbfs/issues)
+[![Downloads](https://img.shields.io/badge/dynamic/json?style=flat-square&color=303f9f&maxAge=86400&label=downloads&query=%24.total_downloads&url=https%3A%2F%2Fapi.pepy.tech%2Fapi%2Fprojects%2Ffs.smbfs)](https://pepy.tech/project/fs.smbfs)
+[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/fs.smbfs/blob/master/CHANGELOG.md)
+
+
+## Requirements
+
+| **PyFilesystem2** | [![PyPI fs](https://img.shields.io/pypi/v/fs.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/fs) | [![Source fs](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square)](https://github.com/PyFilesystem/pyfilesystem2) | [![License fs](https://img.shields.io/pypi/l/fs.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+|:-|:-|:-|:-|
+| **six** | [![PyPI six](https://img.shields.io/pypi/v/six.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/six) | [![Source six]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/benjaminp/six) | [![License six](https://img.shields.io/pypi/l/six.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+| **PySMB** | [![PyPI pysmb](https://img.shields.io/pypi/v/pysmb.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/pysmb) | [![Source pysmb]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/miketeo/pysmb) | [![License pysmb](https://img.shields.io/pypi/l/pysmb.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/zlib/) |
+
+## Installation
+
+Install directly from PyPI, using [pip](https://pip.pypa.io/) :
+
+```console
+$ pip install fs.smbfs
+```
+
+## Usage
+
+### Opener
+
+Use `fs.open_fs` to open a filesystem with an SMB [FS
+URL](https://pyfilesystem2.readthedocs.io/en/latest/openers.html):
+
+```python
+import fs
+smb_fs = fs.open_fs('smb://username:password@SAMBAHOSTNAME:port/share')
+```
+
+The opener can use either an IPv4 address or a NetBIOS hostname, using the
+[NetBIOS name service](https://en.wikipedia.org/wiki/NetBIOS#Name_service) to
+find the other token. Otherwise, if NetBIOS is not available, a new SMB
+connection can be established by using the IPv4 address and giving the
+hostname with the `hostname` URL parameter.
+
+The following parameters can be passed as URL parameters: `timeout`,
+`name-port`, `direct-tcp`, `hostname`, and `domain`.
+
+
+### Constructor
+
+```python
+import fs.smbfs
+smb_fs = fs.smbfs.SMBFS(
+ host, username="guest", passwd="", timeout=15,
+ port=139, name_port=137, direct_tcp=False, domain=""
+)
+```
+
+with each argument explained below:
+
+- `host`: either the host name (*not* the [FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name))
+ of the SMB server, its IP address, or both in a tuple.
+ *If either the IP address or the host name is not given, NETBIOS is queried to get the missing data.*
+- `user`: the username to connect with, defaults to `"guest"` for anonymous
+ connection.
+- `passwd`: an optional password to connect with, defaults to `""` for
+ anonymous connection.
+- `timeout`: the timeout, in seconds, for NetBIOS and TCP requests.
+- `port`: the port the SMB server is listening on.
+- `name_port`: the port the NetBIOS naming service is listening on.
+- `direct_tcp`: set to *True* if the server is accessible directly
+ through TCP, leave as *False* for maximum compatibility.
+- `domain`: the network domain to connect with, i.e. the workgroup on
+ Windows. Usually safe to leave as empty string, the default.
+
+Once created, the `SMBFS` filesystem behaves like any other filesystem
+(see the [Pyfilesystem2 documentation](https://pyfilesystem2.readthedocs.io)),
+except if it was open in the root directory of the server, in which case the
+root directory of the `SMBFS` instance will be read-only (since SMB clients
+cannot create new shares).
+
+## Feedback
+
+Found a bug ? Have an enhancement request ? Head over to the [GitHub
+issue tracker](https://github.com/althonos/fs.smbfs/issues) of the
+project if you need to report or ask something. If you are filling in on
+a bug, please include as much information as you can about the issue,
+and try to recreate the same bug in a simple, easily reproducible
+situation.
+
+
+## Credits
+
+`fs.smbfs` is developed and maintained by:
+- [Martin Larralde](https://github.com/althonos)
+
+The following people contributed to `fs.sshfs`:
+- [Mike DePalatis](https://github.com/mivade)
+- [Isaac Jackson](https://github.com/Vegemash)
+- [Max Klein](https://github.com/telamonian)
+- [Francesco Frassinelli](https://github.com/frafra)
+- [Josiah Witheford](https://github.com/josiahwitheford)
+
+This project obviously owes a lot to the PyFilesystem2 project and
+[all its contributors](https://github.com/PyFilesystem/pyfilesystem2/blob/master/CONTRIBUTORS.md).
+
+
+## See also
+
+- [fs](https://github.com/Pyfilesystem/pyfilesystem2), the core
+ Pyfilesystem2 library
+- [fs.archive](https://github.com/althonos/fs.archive), enhanced
+ archive filesystems for Pyfilesystem2
+- [fs.sshfs](https://github.com/althonos/fs.sshfs), Pyfilesystem2 over
+ SSH using paramiko
+
+
+%package -n python3-fs.smbfs
+Summary: Pyfilesystem2 over SMB using pysmb
+Provides: python-fs.smbfs
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-fs.smbfs
+# `fs.smbfs` [![star me](https://img.shields.io/github/stars/althonos/fs.smbfs.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/fs.smbfs/stargazers)
+
+[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?logo=git&maxAge=36000&style=flat-square)](https://github.com/althonos/fs.smbfs)
+[![PyPI](https://img.shields.io/pypi/v/fs.smbfs.svg?logo=pypi&style=flat-square&maxAge=3600)](https://pypi.python.org/pypi/fs.smbfs)
+[![Actions](https://img.shields.io/github/workflow/status/althonos/fs.smbfs/Test/master?logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/fs.smbfs/actions)
+[![Codecov](https://img.shields.io/codecov/c/github/althonos/fs.smbfs/master.svg?logo=codecov&style=flat-square&maxAge=300)](https://codecov.io/gh/althonos/fs.smbfs)
+[![Codacy](https://img.shields.io/codacy/grade/82d40d17b4734692a9e70c5af5cc2a5b/master.svg?logo=codacy&style=flat-square&maxAge=300)](https://www.codacy.com/app/althonos/fs.smbfs/dashboard)
+[![License](https://img.shields.io/pypi/l/fs.smbfs.svg?style=flat-square&maxAge=300)](https://choosealicense.com/licenses/mit/)
+[![Versions](https://img.shields.io/pypi/pyversions/fs.smbfs.svg?logo=python&style=flat-square&maxAge=300)](https://pypi.org/project/fs.smbfs)
+[![Format](https://img.shields.io/pypi/format/fs.smbfs.svg?style=flat-square&maxAge=300)](https://pypi.python.org/pypi/fs.smbfs)
+[![GitHub issues](https://img.shields.io/github/issues/althonos/fs.smbfs.svg?style=flat-square&maxAge=600)](https://github.com/althonos/fs.smbfs/issues)
+[![Downloads](https://img.shields.io/badge/dynamic/json?style=flat-square&color=303f9f&maxAge=86400&label=downloads&query=%24.total_downloads&url=https%3A%2F%2Fapi.pepy.tech%2Fapi%2Fprojects%2Ffs.smbfs)](https://pepy.tech/project/fs.smbfs)
+[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/fs.smbfs/blob/master/CHANGELOG.md)
+
+
+## Requirements
+
+| **PyFilesystem2** | [![PyPI fs](https://img.shields.io/pypi/v/fs.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/fs) | [![Source fs](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square)](https://github.com/PyFilesystem/pyfilesystem2) | [![License fs](https://img.shields.io/pypi/l/fs.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+|:-|:-|:-|:-|
+| **six** | [![PyPI six](https://img.shields.io/pypi/v/six.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/six) | [![Source six]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/benjaminp/six) | [![License six](https://img.shields.io/pypi/l/six.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+| **PySMB** | [![PyPI pysmb](https://img.shields.io/pypi/v/pysmb.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/pysmb) | [![Source pysmb]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/miketeo/pysmb) | [![License pysmb](https://img.shields.io/pypi/l/pysmb.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/zlib/) |
+
+## Installation
+
+Install directly from PyPI, using [pip](https://pip.pypa.io/) :
+
+```console
+$ pip install fs.smbfs
+```
+
+## Usage
+
+### Opener
+
+Use `fs.open_fs` to open a filesystem with an SMB [FS
+URL](https://pyfilesystem2.readthedocs.io/en/latest/openers.html):
+
+```python
+import fs
+smb_fs = fs.open_fs('smb://username:password@SAMBAHOSTNAME:port/share')
+```
+
+The opener can use either an IPv4 address or a NetBIOS hostname, using the
+[NetBIOS name service](https://en.wikipedia.org/wiki/NetBIOS#Name_service) to
+find the other token. Otherwise, if NetBIOS is not available, a new SMB
+connection can be established by using the IPv4 address and giving the
+hostname with the `hostname` URL parameter.
+
+The following parameters can be passed as URL parameters: `timeout`,
+`name-port`, `direct-tcp`, `hostname`, and `domain`.
+
+
+### Constructor
+
+```python
+import fs.smbfs
+smb_fs = fs.smbfs.SMBFS(
+ host, username="guest", passwd="", timeout=15,
+ port=139, name_port=137, direct_tcp=False, domain=""
+)
+```
+
+with each argument explained below:
+
+- `host`: either the host name (*not* the [FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name))
+ of the SMB server, its IP address, or both in a tuple.
+ *If either the IP address or the host name is not given, NETBIOS is queried to get the missing data.*
+- `user`: the username to connect with, defaults to `"guest"` for anonymous
+ connection.
+- `passwd`: an optional password to connect with, defaults to `""` for
+ anonymous connection.
+- `timeout`: the timeout, in seconds, for NetBIOS and TCP requests.
+- `port`: the port the SMB server is listening on.
+- `name_port`: the port the NetBIOS naming service is listening on.
+- `direct_tcp`: set to *True* if the server is accessible directly
+ through TCP, leave as *False* for maximum compatibility.
+- `domain`: the network domain to connect with, i.e. the workgroup on
+ Windows. Usually safe to leave as empty string, the default.
+
+Once created, the `SMBFS` filesystem behaves like any other filesystem
+(see the [Pyfilesystem2 documentation](https://pyfilesystem2.readthedocs.io)),
+except if it was open in the root directory of the server, in which case the
+root directory of the `SMBFS` instance will be read-only (since SMB clients
+cannot create new shares).
+
+## Feedback
+
+Found a bug ? Have an enhancement request ? Head over to the [GitHub
+issue tracker](https://github.com/althonos/fs.smbfs/issues) of the
+project if you need to report or ask something. If you are filling in on
+a bug, please include as much information as you can about the issue,
+and try to recreate the same bug in a simple, easily reproducible
+situation.
+
+
+## Credits
+
+`fs.smbfs` is developed and maintained by:
+- [Martin Larralde](https://github.com/althonos)
+
+The following people contributed to `fs.sshfs`:
+- [Mike DePalatis](https://github.com/mivade)
+- [Isaac Jackson](https://github.com/Vegemash)
+- [Max Klein](https://github.com/telamonian)
+- [Francesco Frassinelli](https://github.com/frafra)
+- [Josiah Witheford](https://github.com/josiahwitheford)
+
+This project obviously owes a lot to the PyFilesystem2 project and
+[all its contributors](https://github.com/PyFilesystem/pyfilesystem2/blob/master/CONTRIBUTORS.md).
+
+
+## See also
+
+- [fs](https://github.com/Pyfilesystem/pyfilesystem2), the core
+ Pyfilesystem2 library
+- [fs.archive](https://github.com/althonos/fs.archive), enhanced
+ archive filesystems for Pyfilesystem2
+- [fs.sshfs](https://github.com/althonos/fs.sshfs), Pyfilesystem2 over
+ SSH using paramiko
+
+
+%package help
+Summary: Development documents and examples for fs.smbfs
+Provides: python3-fs.smbfs-doc
+%description help
+# `fs.smbfs` [![star me](https://img.shields.io/github/stars/althonos/fs.smbfs.svg?style=social&maxAge=3600&label=Star)](https://github.com/althonos/fs.smbfs/stargazers)
+
+[![Source](https://img.shields.io/badge/source-GitHub-303030.svg?logo=git&maxAge=36000&style=flat-square)](https://github.com/althonos/fs.smbfs)
+[![PyPI](https://img.shields.io/pypi/v/fs.smbfs.svg?logo=pypi&style=flat-square&maxAge=3600)](https://pypi.python.org/pypi/fs.smbfs)
+[![Actions](https://img.shields.io/github/workflow/status/althonos/fs.smbfs/Test/master?logo=github&style=flat-square&maxAge=300)](https://github.com/althonos/fs.smbfs/actions)
+[![Codecov](https://img.shields.io/codecov/c/github/althonos/fs.smbfs/master.svg?logo=codecov&style=flat-square&maxAge=300)](https://codecov.io/gh/althonos/fs.smbfs)
+[![Codacy](https://img.shields.io/codacy/grade/82d40d17b4734692a9e70c5af5cc2a5b/master.svg?logo=codacy&style=flat-square&maxAge=300)](https://www.codacy.com/app/althonos/fs.smbfs/dashboard)
+[![License](https://img.shields.io/pypi/l/fs.smbfs.svg?style=flat-square&maxAge=300)](https://choosealicense.com/licenses/mit/)
+[![Versions](https://img.shields.io/pypi/pyversions/fs.smbfs.svg?logo=python&style=flat-square&maxAge=300)](https://pypi.org/project/fs.smbfs)
+[![Format](https://img.shields.io/pypi/format/fs.smbfs.svg?style=flat-square&maxAge=300)](https://pypi.python.org/pypi/fs.smbfs)
+[![GitHub issues](https://img.shields.io/github/issues/althonos/fs.smbfs.svg?style=flat-square&maxAge=600)](https://github.com/althonos/fs.smbfs/issues)
+[![Downloads](https://img.shields.io/badge/dynamic/json?style=flat-square&color=303f9f&maxAge=86400&label=downloads&query=%24.total_downloads&url=https%3A%2F%2Fapi.pepy.tech%2Fapi%2Fprojects%2Ffs.smbfs)](https://pepy.tech/project/fs.smbfs)
+[![Changelog](https://img.shields.io/badge/keep%20a-changelog-8A0707.svg?maxAge=2678400&style=flat-square)](https://github.com/althonos/fs.smbfs/blob/master/CHANGELOG.md)
+
+
+## Requirements
+
+| **PyFilesystem2** | [![PyPI fs](https://img.shields.io/pypi/v/fs.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/fs) | [![Source fs](https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square)](https://github.com/PyFilesystem/pyfilesystem2) | [![License fs](https://img.shields.io/pypi/l/fs.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+|:-|:-|:-|:-|
+| **six** | [![PyPI six](https://img.shields.io/pypi/v/six.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/six) | [![Source six]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/benjaminp/six) | [![License six](https://img.shields.io/pypi/l/six.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/mit/) |
+| **PySMB** | [![PyPI pysmb](https://img.shields.io/pypi/v/pysmb.svg?maxAge=300&style=flat-square)](https://pypi.python.org/pypi/pysmb) | [![Source pysmb]( https://img.shields.io/badge/source-GitHub-303030.svg?maxAge=36000&style=flat-square )]( https://github.com/miketeo/pysmb) | [![License pysmb](https://img.shields.io/pypi/l/pysmb.svg?maxAge=36000&style=flat-square)](https://choosealicense.com/licenses/zlib/) |
+
+## Installation
+
+Install directly from PyPI, using [pip](https://pip.pypa.io/) :
+
+```console
+$ pip install fs.smbfs
+```
+
+## Usage
+
+### Opener
+
+Use `fs.open_fs` to open a filesystem with an SMB [FS
+URL](https://pyfilesystem2.readthedocs.io/en/latest/openers.html):
+
+```python
+import fs
+smb_fs = fs.open_fs('smb://username:password@SAMBAHOSTNAME:port/share')
+```
+
+The opener can use either an IPv4 address or a NetBIOS hostname, using the
+[NetBIOS name service](https://en.wikipedia.org/wiki/NetBIOS#Name_service) to
+find the other token. Otherwise, if NetBIOS is not available, a new SMB
+connection can be established by using the IPv4 address and giving the
+hostname with the `hostname` URL parameter.
+
+The following parameters can be passed as URL parameters: `timeout`,
+`name-port`, `direct-tcp`, `hostname`, and `domain`.
+
+
+### Constructor
+
+```python
+import fs.smbfs
+smb_fs = fs.smbfs.SMBFS(
+ host, username="guest", passwd="", timeout=15,
+ port=139, name_port=137, direct_tcp=False, domain=""
+)
+```
+
+with each argument explained below:
+
+- `host`: either the host name (*not* the [FQDN](https://en.wikipedia.org/wiki/Fully_qualified_domain_name))
+ of the SMB server, its IP address, or both in a tuple.
+ *If either the IP address or the host name is not given, NETBIOS is queried to get the missing data.*
+- `user`: the username to connect with, defaults to `"guest"` for anonymous
+ connection.
+- `passwd`: an optional password to connect with, defaults to `""` for
+ anonymous connection.
+- `timeout`: the timeout, in seconds, for NetBIOS and TCP requests.
+- `port`: the port the SMB server is listening on.
+- `name_port`: the port the NetBIOS naming service is listening on.
+- `direct_tcp`: set to *True* if the server is accessible directly
+ through TCP, leave as *False* for maximum compatibility.
+- `domain`: the network domain to connect with, i.e. the workgroup on
+ Windows. Usually safe to leave as empty string, the default.
+
+Once created, the `SMBFS` filesystem behaves like any other filesystem
+(see the [Pyfilesystem2 documentation](https://pyfilesystem2.readthedocs.io)),
+except if it was open in the root directory of the server, in which case the
+root directory of the `SMBFS` instance will be read-only (since SMB clients
+cannot create new shares).
+
+## Feedback
+
+Found a bug ? Have an enhancement request ? Head over to the [GitHub
+issue tracker](https://github.com/althonos/fs.smbfs/issues) of the
+project if you need to report or ask something. If you are filling in on
+a bug, please include as much information as you can about the issue,
+and try to recreate the same bug in a simple, easily reproducible
+situation.
+
+
+## Credits
+
+`fs.smbfs` is developed and maintained by:
+- [Martin Larralde](https://github.com/althonos)
+
+The following people contributed to `fs.sshfs`:
+- [Mike DePalatis](https://github.com/mivade)
+- [Isaac Jackson](https://github.com/Vegemash)
+- [Max Klein](https://github.com/telamonian)
+- [Francesco Frassinelli](https://github.com/frafra)
+- [Josiah Witheford](https://github.com/josiahwitheford)
+
+This project obviously owes a lot to the PyFilesystem2 project and
+[all its contributors](https://github.com/PyFilesystem/pyfilesystem2/blob/master/CONTRIBUTORS.md).
+
+
+## See also
+
+- [fs](https://github.com/Pyfilesystem/pyfilesystem2), the core
+ Pyfilesystem2 library
+- [fs.archive](https://github.com/althonos/fs.archive), enhanced
+ archive filesystems for Pyfilesystem2
+- [fs.sshfs](https://github.com/althonos/fs.sshfs), Pyfilesystem2 over
+ SSH using paramiko
+
+
+%prep
+%autosetup -n fs.smbfs-1.0.7
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-fs.smbfs -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.7-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..55aba95
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+be2a38be2d4e36e5fe20f158c0c19222 fs.smbfs-1.0.7.tar.gz