summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-10 15:21:13 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-10 15:21:13 +0000
commitd3379b29643937aac39eaff44c36dd9058262b19 (patch)
treecbd427b7c337920200b77a4edd6e62f138a8120b
parent6d3aacdbbba26f9bafec32894e07925f82c52657 (diff)
automatic import of python-ipfshttpclient
-rw-r--r--.gitignore1
-rw-r--r--python-ipfshttpclient.spec824
-rw-r--r--sources1
3 files changed, 826 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..ea6a094 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/ipfshttpclient-0.7.0.tar.gz
diff --git a/python-ipfshttpclient.spec b/python-ipfshttpclient.spec
new file mode 100644
index 0000000..59d36fd
--- /dev/null
+++ b/python-ipfshttpclient.spec
@@ -0,0 +1,824 @@
+%global _empty_manifest_terminate_build 0
+Name: python-ipfshttpclient
+Version: 0.7.0
+Release: 1
+Summary: Python IPFS HTTP CLIENT library
+License: MIT License
+URL: https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/5e/c2/179b22ebf1ba5a4ea788fa72c65e4aebec4bf7b0b5e5f7621d938a311f0c/ipfshttpclient-0.7.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-multiaddr
+Requires: python3-requests
+
+%description
+# py-ipfs-http-client
+
+[![Made by the IPFS Community](https://img.shields.io/badge/made%20by-IPFS%20Community-blue.svg?style=flat-square)](https://docs.ipfs.io/community/)
+[![IRC #py-ipfs on chat.freenode.net](https://img.shields.io/badge/freenode%20IRC-%23py--ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23py-ipfs)
+[![Matrix #py-ipfs:ninetailed.ninja](https://img.shields.io/matrix/py-ipfs:ninetailed.ninja?color=blue&label=matrix%20chat&server_fqdn=matrix.ninetailed.ninja&style=flat-square)](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=matrix.ninetailed.ninja&via=librem.one)
+[![Standard README Compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
+[![PyPI Package ipfshttpclient](https://img.shields.io/pypi/dm/ipfshttpclient.svg?style=flat-square)](https://pypi.python.org/pypi/ipfshttpclient)
+[![Build Status](https://img.shields.io/travis/com/ipfs-shipyard/py-ipfs-http-client/master.svg?style=flat-square)](https://travis-ci.com/github/ipfs-shipyard/py-ipfs-http-client)
+
+![Python IPFS HTTP Client Library](https://ipfs.io/ipfs/QmQJ68PFMDdAsgCZvA1UVzzn18asVcf7HVvCDgpjiSCAse)
+
+Check out [the HTTP Client reference](https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/) for the full command reference.
+
+**Note**: The `ipfsapi` PIP package and Python module have both been renamed to `ipfshttpclient`!
+See the [relevant section of the CHANGELOG](CHANGELOG.md#py-ipfs-http-client-0411-13052019) for details. There is also a `ipfsApi` library from which this library originated that is completely
+unmaintained and does not work with any recent go-IPFS version.
+
+**Note**: This library occasionally has to change to stay compatible with the IPFS HTTP API.
+Currently, this library is tested against [go-ipfs v0.7.0](https://github.com/ipfs/go-ipfs/releases/tag/v0.7.0).
+We strive to support the last 5 releases of go-IPFS at any given time; go-IPFS v0.4.23 therefore
+being to oldest supported version at this time.
+
+## Table of Contents
+
+- [Install](#install)
+- [Usage](#usage)
+- [Documentation](#documentation)
+ - [Migrating from 0.4.x to 0.6.0](#migrating-from-04x-to-060)
+- [Featured Projects](#featured-projects)
+- [Contributing](#contributing)
+ - [Bug reports](#bug-reports)
+ - [Pull requests](#pull-requests)
+ - [Chat with Us (IRC/Matrix)](#chat-with-us-ircmatrix)
+- [License](#license)
+
+## Install
+
+Install with pip:
+
+```sh
+pip install ipfshttpclient
+```
+
+### Development install from Source
+
+```sh
+# Clone the source repository
+git clone https://github.com/ipfs/py-ipfs-http-client.git
+cd py-ipfs-http-client
+
+# Link ipfs-api-client into your Python Path
+flit install --pth-file
+```
+
+## Usage
+
+Basic use-case (requires a running instance of IPFS daemon):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect() # Connects to: /dns/localhost/tcp/5001/http
+>>> res = client.add('test.txt')
+>>> res
+{'Hash': 'QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb22', 'Name': 'test.txt'}
+>>> client.cat(res['Hash'])
+'fdsafkljdskafjaksdjf\n'
+```
+
+*Please note*: You should specify the address for an IPFS *API server*, using the address of a *gateway* (such as the public `ipfs.io` one at `/dns/ipfs.io/tcp/443/https`) will only give you [extremely limited access](https://github.com/ipfs/go-ipfs/blob/master/docs/gateway.md#read-only-api) and may not work at all. If you are only interested in downloading IPFS content through public gateway servers then this library is unlikely of being of much help.
+
+For real-world scripts you can reuse TCP connections using a context manager or manually closing the session after use:
+
+```py
+import ipfshttpclient
+
+# Share TCP connections using a context manager
+with ipfshttpclient.connect() as client:
+ hash = client.add('test.txt')['Hash']
+ print(client.stat(hash))
+
+# Share TCP connections until the client session is closed
+class SomeObject:
+ def __init__(self):
+ self._client = ipfshttpclient.connect(session=True)
+
+ def do_something(self):
+ hash = self._client.add('test.txt')['Hash']
+ print(self._client.stat(hash))
+
+ def close(self): # Call this when your done
+ self._client.close()
+```
+
+Administrative functions:
+
+```py
+>>> client.id()
+{'Addresses': ['/ip4/127.0.0.1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ '/ip6/::1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS'],
+ 'AgentVersion': 'go-ipfs/0.4.10',
+ 'ID': 'QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ 'ProtocolVersion': 'ipfs/0.1.0',
+ 'PublicKey': 'CAASpgIwgg ... 3FcjAgMBAAE='}
+```
+
+Pass in API options:
+
+```py
+>>> client.pin.ls(type='all')
+{'Keys': {'QmNMELyizsfFdNZW3yKTi1SE2pErifwDTXx6vvQBfwcJbU': {'Count': 1,
+ 'Type': 'indirect'},
+ 'QmNQ1h6o1xJARvYzwmySPsuv9L5XfzS4WTvJSTAWwYRSd8': {'Count': 1,
+ 'Type': 'indirect'},
+ …
+```
+
+Add a directory and match against a filename pattern:
+
+```py
+>>> client.add('photos', pattern='*.jpg')
+[{'Hash': 'QmcqBstfu5AWpXUqbucwimmWdJbu89qqYmE3WXVktvaXhX',
+ 'Name': 'photos/photo1.jpg'},
+ {'Hash': 'QmSbmgg7kYwkSNzGLvWELnw1KthvTAMszN5TNg3XQ799Fu',
+ 'Name': 'photos/photo2.jpg'},
+ {'Hash': 'Qma6K85PJ8dN3qWjxgsDNaMjWjTNy8ygUWXH2kfoq9bVxH',
+ 'Name': 'photos/photo3.jpg'}]
+```
+
+Or add a directory recursively:
+
+```py
+>>> client.add('fake_dir', recursive=True)
+[{'Hash': 'QmQcCtMgLVwvMQGu6mvsRYLjwqrZJcYtH4mboM9urWW9vX',
+ 'Name': 'fake_dir/fsdfgh'},
+ {'Hash': 'QmNuvmuFeeWWpxjCQwLkHshr8iqhGLWXFzSGzafBeawTTZ',
+ 'Name': 'fake_dir/test2/llllg'},
+ {'Hash': 'QmX1dd5DtkgoiYRKaPQPTCtXArUu4jEZ62rJBUcd5WhxAZ',
+ 'Name': 'fake_dir/test2'},
+ {'Hash': 'Qmenzb5J4fR9c69BbpbBhPTSp2Snjthu2hKPWGPPJUHb9M',
+ 'Name': 'fake_dir'}]
+```
+
+This module also contains some helper functions for adding strings and JSON to IPFS:
+
+```py
+>>> lst = [1, 77, 'lol']
+>>> client.add_json(lst)
+'QmQ4R5cCUYBWiJpNL7mFe4LDrwD6qBr5Re17BoRAY9VNpd'
+>>> client.get_json(_)
+[1, 77, 'lol']
+```
+
+Use an IPFS server with basic auth (replace username and password with real creds):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', auth=("username", "password"))
+```
+
+Pass custom headers to the IPFS daemon with each request:
+```py
+>>> import ipfshttpclient
+>>> headers = {"CustomHeader": "foobar"}
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', headers=headers)
+```
+
+Connect to the IPFS daemon using a Unix domain socket (plain HTTP only):
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect("/unix/run/ipfs/ipfs.sock")
+```
+
+
+
+## Documentation
+
+Documentation (currently mostly API documentation unfortunately) is available on IPFS:
+
+https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/
+
+The `ipfs` [command-line Client documentation](https://ipfs.io/docs/commands/) may also be useful in some cases.
+
+### Migrating from `0.4.x` to `0.6.0`
+
+Please see the CHANGELOG for [the minor breaking changes between these releases](CHANGELOG.md#py-ipfs-http-client-060-30062020).
+
+## Featured Projects
+
+Projects that currently use py-ipfs-http-client. If your project isn't here, feel free to submit a PR to add it!
+
+- [InterPlanetary Wayback](https://github.com/oduwsdl/ipwb) interfaces web archive ([WARC](https://www.iso.org/standard/44717.html)) files for distributed indexing and replay using IPFS.
+
+## Contributing
+
+### Easy Tasks
+
+Over time many smaller day-to-day tasks have piled up (mostly supporting some
+newer APIs). If want to help out without getting too involved picking up one
+of tasks of our [help wanted issue list](https://github.com/ipfs-shipyard/py-ipfs-http-client/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
+would go a long way towards making this library more feature-complete. 👍
+
+### Bug reports
+
+You can submit bug reports using the
+[GitHub issue tracker](https://github.com/ipfs/py-ipfs-http-client/issues).
+
+### Pull requests
+
+Pull requests are welcome. Before submitting a new pull request, please
+make sure that your code passes both the
+[code formatting](https://www.python.org/dev/peps/pep-0008/)
+(PEP-8 with tab indentation) and
+[typing](https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html)
+(PEP-484 using mypy) checks:
+
+ $ tox -e styleck -e typeck
+
+As well as the unit tests:
+
+ $ tox -e py3 -e py3-httpx
+
+If you are unsure, don't hasitate to just submit your code and a human will
+take a look. 🙂
+
+If you can, Please make sure to include new unit tests for new features or
+changes in behavior. We aim to bring coverage to 100% at some point.
+
+#### Installing the pre-commit Hook
+
+You can arrange for the code style and typing tests to be run automatically
+before each commit by installing the GIT `pre-commit` hook:
+
+ $ ./tools/pre-commit --install
+
+### Chat with Us (IRC/Matrix)
+
+You can find us on [#py-ipfs on chat.freenode.org](http://webchat.freenode.net/?channels=%23py-ipfs)
+or in our [Matrix chat room](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=ninetailed.ninja&via=librem.one).
+Join us if you have any suggestions, questions or if you just want to discuss
+IPFS and Python in general.
+
+Please note that the channel is not monitored all the time and hence you may
+only receive a reply to your message later that day. Using Matrix makes it
+easier to stay connected in the background, so please prefer the Matrix option
+or use an IRC bouncer.
+
+## License
+
+This code is distributed under the terms of the [MIT license](https://opensource.org/licenses/MIT). Details can be found in the file
+[LICENSE](LICENSE) in this repository.
+
+
+%package -n python3-ipfshttpclient
+Summary: Python IPFS HTTP CLIENT library
+Provides: python-ipfshttpclient
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-ipfshttpclient
+# py-ipfs-http-client
+
+[![Made by the IPFS Community](https://img.shields.io/badge/made%20by-IPFS%20Community-blue.svg?style=flat-square)](https://docs.ipfs.io/community/)
+[![IRC #py-ipfs on chat.freenode.net](https://img.shields.io/badge/freenode%20IRC-%23py--ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23py-ipfs)
+[![Matrix #py-ipfs:ninetailed.ninja](https://img.shields.io/matrix/py-ipfs:ninetailed.ninja?color=blue&label=matrix%20chat&server_fqdn=matrix.ninetailed.ninja&style=flat-square)](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=matrix.ninetailed.ninja&via=librem.one)
+[![Standard README Compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
+[![PyPI Package ipfshttpclient](https://img.shields.io/pypi/dm/ipfshttpclient.svg?style=flat-square)](https://pypi.python.org/pypi/ipfshttpclient)
+[![Build Status](https://img.shields.io/travis/com/ipfs-shipyard/py-ipfs-http-client/master.svg?style=flat-square)](https://travis-ci.com/github/ipfs-shipyard/py-ipfs-http-client)
+
+![Python IPFS HTTP Client Library](https://ipfs.io/ipfs/QmQJ68PFMDdAsgCZvA1UVzzn18asVcf7HVvCDgpjiSCAse)
+
+Check out [the HTTP Client reference](https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/) for the full command reference.
+
+**Note**: The `ipfsapi` PIP package and Python module have both been renamed to `ipfshttpclient`!
+See the [relevant section of the CHANGELOG](CHANGELOG.md#py-ipfs-http-client-0411-13052019) for details. There is also a `ipfsApi` library from which this library originated that is completely
+unmaintained and does not work with any recent go-IPFS version.
+
+**Note**: This library occasionally has to change to stay compatible with the IPFS HTTP API.
+Currently, this library is tested against [go-ipfs v0.7.0](https://github.com/ipfs/go-ipfs/releases/tag/v0.7.0).
+We strive to support the last 5 releases of go-IPFS at any given time; go-IPFS v0.4.23 therefore
+being to oldest supported version at this time.
+
+## Table of Contents
+
+- [Install](#install)
+- [Usage](#usage)
+- [Documentation](#documentation)
+ - [Migrating from 0.4.x to 0.6.0](#migrating-from-04x-to-060)
+- [Featured Projects](#featured-projects)
+- [Contributing](#contributing)
+ - [Bug reports](#bug-reports)
+ - [Pull requests](#pull-requests)
+ - [Chat with Us (IRC/Matrix)](#chat-with-us-ircmatrix)
+- [License](#license)
+
+## Install
+
+Install with pip:
+
+```sh
+pip install ipfshttpclient
+```
+
+### Development install from Source
+
+```sh
+# Clone the source repository
+git clone https://github.com/ipfs/py-ipfs-http-client.git
+cd py-ipfs-http-client
+
+# Link ipfs-api-client into your Python Path
+flit install --pth-file
+```
+
+## Usage
+
+Basic use-case (requires a running instance of IPFS daemon):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect() # Connects to: /dns/localhost/tcp/5001/http
+>>> res = client.add('test.txt')
+>>> res
+{'Hash': 'QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb22', 'Name': 'test.txt'}
+>>> client.cat(res['Hash'])
+'fdsafkljdskafjaksdjf\n'
+```
+
+*Please note*: You should specify the address for an IPFS *API server*, using the address of a *gateway* (such as the public `ipfs.io` one at `/dns/ipfs.io/tcp/443/https`) will only give you [extremely limited access](https://github.com/ipfs/go-ipfs/blob/master/docs/gateway.md#read-only-api) and may not work at all. If you are only interested in downloading IPFS content through public gateway servers then this library is unlikely of being of much help.
+
+For real-world scripts you can reuse TCP connections using a context manager or manually closing the session after use:
+
+```py
+import ipfshttpclient
+
+# Share TCP connections using a context manager
+with ipfshttpclient.connect() as client:
+ hash = client.add('test.txt')['Hash']
+ print(client.stat(hash))
+
+# Share TCP connections until the client session is closed
+class SomeObject:
+ def __init__(self):
+ self._client = ipfshttpclient.connect(session=True)
+
+ def do_something(self):
+ hash = self._client.add('test.txt')['Hash']
+ print(self._client.stat(hash))
+
+ def close(self): # Call this when your done
+ self._client.close()
+```
+
+Administrative functions:
+
+```py
+>>> client.id()
+{'Addresses': ['/ip4/127.0.0.1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ '/ip6/::1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS'],
+ 'AgentVersion': 'go-ipfs/0.4.10',
+ 'ID': 'QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ 'ProtocolVersion': 'ipfs/0.1.0',
+ 'PublicKey': 'CAASpgIwgg ... 3FcjAgMBAAE='}
+```
+
+Pass in API options:
+
+```py
+>>> client.pin.ls(type='all')
+{'Keys': {'QmNMELyizsfFdNZW3yKTi1SE2pErifwDTXx6vvQBfwcJbU': {'Count': 1,
+ 'Type': 'indirect'},
+ 'QmNQ1h6o1xJARvYzwmySPsuv9L5XfzS4WTvJSTAWwYRSd8': {'Count': 1,
+ 'Type': 'indirect'},
+ …
+```
+
+Add a directory and match against a filename pattern:
+
+```py
+>>> client.add('photos', pattern='*.jpg')
+[{'Hash': 'QmcqBstfu5AWpXUqbucwimmWdJbu89qqYmE3WXVktvaXhX',
+ 'Name': 'photos/photo1.jpg'},
+ {'Hash': 'QmSbmgg7kYwkSNzGLvWELnw1KthvTAMszN5TNg3XQ799Fu',
+ 'Name': 'photos/photo2.jpg'},
+ {'Hash': 'Qma6K85PJ8dN3qWjxgsDNaMjWjTNy8ygUWXH2kfoq9bVxH',
+ 'Name': 'photos/photo3.jpg'}]
+```
+
+Or add a directory recursively:
+
+```py
+>>> client.add('fake_dir', recursive=True)
+[{'Hash': 'QmQcCtMgLVwvMQGu6mvsRYLjwqrZJcYtH4mboM9urWW9vX',
+ 'Name': 'fake_dir/fsdfgh'},
+ {'Hash': 'QmNuvmuFeeWWpxjCQwLkHshr8iqhGLWXFzSGzafBeawTTZ',
+ 'Name': 'fake_dir/test2/llllg'},
+ {'Hash': 'QmX1dd5DtkgoiYRKaPQPTCtXArUu4jEZ62rJBUcd5WhxAZ',
+ 'Name': 'fake_dir/test2'},
+ {'Hash': 'Qmenzb5J4fR9c69BbpbBhPTSp2Snjthu2hKPWGPPJUHb9M',
+ 'Name': 'fake_dir'}]
+```
+
+This module also contains some helper functions for adding strings and JSON to IPFS:
+
+```py
+>>> lst = [1, 77, 'lol']
+>>> client.add_json(lst)
+'QmQ4R5cCUYBWiJpNL7mFe4LDrwD6qBr5Re17BoRAY9VNpd'
+>>> client.get_json(_)
+[1, 77, 'lol']
+```
+
+Use an IPFS server with basic auth (replace username and password with real creds):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', auth=("username", "password"))
+```
+
+Pass custom headers to the IPFS daemon with each request:
+```py
+>>> import ipfshttpclient
+>>> headers = {"CustomHeader": "foobar"}
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', headers=headers)
+```
+
+Connect to the IPFS daemon using a Unix domain socket (plain HTTP only):
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect("/unix/run/ipfs/ipfs.sock")
+```
+
+
+
+## Documentation
+
+Documentation (currently mostly API documentation unfortunately) is available on IPFS:
+
+https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/
+
+The `ipfs` [command-line Client documentation](https://ipfs.io/docs/commands/) may also be useful in some cases.
+
+### Migrating from `0.4.x` to `0.6.0`
+
+Please see the CHANGELOG for [the minor breaking changes between these releases](CHANGELOG.md#py-ipfs-http-client-060-30062020).
+
+## Featured Projects
+
+Projects that currently use py-ipfs-http-client. If your project isn't here, feel free to submit a PR to add it!
+
+- [InterPlanetary Wayback](https://github.com/oduwsdl/ipwb) interfaces web archive ([WARC](https://www.iso.org/standard/44717.html)) files for distributed indexing and replay using IPFS.
+
+## Contributing
+
+### Easy Tasks
+
+Over time many smaller day-to-day tasks have piled up (mostly supporting some
+newer APIs). If want to help out without getting too involved picking up one
+of tasks of our [help wanted issue list](https://github.com/ipfs-shipyard/py-ipfs-http-client/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
+would go a long way towards making this library more feature-complete. 👍
+
+### Bug reports
+
+You can submit bug reports using the
+[GitHub issue tracker](https://github.com/ipfs/py-ipfs-http-client/issues).
+
+### Pull requests
+
+Pull requests are welcome. Before submitting a new pull request, please
+make sure that your code passes both the
+[code formatting](https://www.python.org/dev/peps/pep-0008/)
+(PEP-8 with tab indentation) and
+[typing](https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html)
+(PEP-484 using mypy) checks:
+
+ $ tox -e styleck -e typeck
+
+As well as the unit tests:
+
+ $ tox -e py3 -e py3-httpx
+
+If you are unsure, don't hasitate to just submit your code and a human will
+take a look. 🙂
+
+If you can, Please make sure to include new unit tests for new features or
+changes in behavior. We aim to bring coverage to 100% at some point.
+
+#### Installing the pre-commit Hook
+
+You can arrange for the code style and typing tests to be run automatically
+before each commit by installing the GIT `pre-commit` hook:
+
+ $ ./tools/pre-commit --install
+
+### Chat with Us (IRC/Matrix)
+
+You can find us on [#py-ipfs on chat.freenode.org](http://webchat.freenode.net/?channels=%23py-ipfs)
+or in our [Matrix chat room](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=ninetailed.ninja&via=librem.one).
+Join us if you have any suggestions, questions or if you just want to discuss
+IPFS and Python in general.
+
+Please note that the channel is not monitored all the time and hence you may
+only receive a reply to your message later that day. Using Matrix makes it
+easier to stay connected in the background, so please prefer the Matrix option
+or use an IRC bouncer.
+
+## License
+
+This code is distributed under the terms of the [MIT license](https://opensource.org/licenses/MIT). Details can be found in the file
+[LICENSE](LICENSE) in this repository.
+
+
+%package help
+Summary: Development documents and examples for ipfshttpclient
+Provides: python3-ipfshttpclient-doc
+%description help
+# py-ipfs-http-client
+
+[![Made by the IPFS Community](https://img.shields.io/badge/made%20by-IPFS%20Community-blue.svg?style=flat-square)](https://docs.ipfs.io/community/)
+[![IRC #py-ipfs on chat.freenode.net](https://img.shields.io/badge/freenode%20IRC-%23py--ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23py-ipfs)
+[![Matrix #py-ipfs:ninetailed.ninja](https://img.shields.io/matrix/py-ipfs:ninetailed.ninja?color=blue&label=matrix%20chat&server_fqdn=matrix.ninetailed.ninja&style=flat-square)](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=matrix.ninetailed.ninja&via=librem.one)
+[![Standard README Compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
+[![PyPI Package ipfshttpclient](https://img.shields.io/pypi/dm/ipfshttpclient.svg?style=flat-square)](https://pypi.python.org/pypi/ipfshttpclient)
+[![Build Status](https://img.shields.io/travis/com/ipfs-shipyard/py-ipfs-http-client/master.svg?style=flat-square)](https://travis-ci.com/github/ipfs-shipyard/py-ipfs-http-client)
+
+![Python IPFS HTTP Client Library](https://ipfs.io/ipfs/QmQJ68PFMDdAsgCZvA1UVzzn18asVcf7HVvCDgpjiSCAse)
+
+Check out [the HTTP Client reference](https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/) for the full command reference.
+
+**Note**: The `ipfsapi` PIP package and Python module have both been renamed to `ipfshttpclient`!
+See the [relevant section of the CHANGELOG](CHANGELOG.md#py-ipfs-http-client-0411-13052019) for details. There is also a `ipfsApi` library from which this library originated that is completely
+unmaintained and does not work with any recent go-IPFS version.
+
+**Note**: This library occasionally has to change to stay compatible with the IPFS HTTP API.
+Currently, this library is tested against [go-ipfs v0.7.0](https://github.com/ipfs/go-ipfs/releases/tag/v0.7.0).
+We strive to support the last 5 releases of go-IPFS at any given time; go-IPFS v0.4.23 therefore
+being to oldest supported version at this time.
+
+## Table of Contents
+
+- [Install](#install)
+- [Usage](#usage)
+- [Documentation](#documentation)
+ - [Migrating from 0.4.x to 0.6.0](#migrating-from-04x-to-060)
+- [Featured Projects](#featured-projects)
+- [Contributing](#contributing)
+ - [Bug reports](#bug-reports)
+ - [Pull requests](#pull-requests)
+ - [Chat with Us (IRC/Matrix)](#chat-with-us-ircmatrix)
+- [License](#license)
+
+## Install
+
+Install with pip:
+
+```sh
+pip install ipfshttpclient
+```
+
+### Development install from Source
+
+```sh
+# Clone the source repository
+git clone https://github.com/ipfs/py-ipfs-http-client.git
+cd py-ipfs-http-client
+
+# Link ipfs-api-client into your Python Path
+flit install --pth-file
+```
+
+## Usage
+
+Basic use-case (requires a running instance of IPFS daemon):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect() # Connects to: /dns/localhost/tcp/5001/http
+>>> res = client.add('test.txt')
+>>> res
+{'Hash': 'QmWxS5aNTFEc9XbMX1ASvLET1zrqEaTssqt33rVZQCQb22', 'Name': 'test.txt'}
+>>> client.cat(res['Hash'])
+'fdsafkljdskafjaksdjf\n'
+```
+
+*Please note*: You should specify the address for an IPFS *API server*, using the address of a *gateway* (such as the public `ipfs.io` one at `/dns/ipfs.io/tcp/443/https`) will only give you [extremely limited access](https://github.com/ipfs/go-ipfs/blob/master/docs/gateway.md#read-only-api) and may not work at all. If you are only interested in downloading IPFS content through public gateway servers then this library is unlikely of being of much help.
+
+For real-world scripts you can reuse TCP connections using a context manager or manually closing the session after use:
+
+```py
+import ipfshttpclient
+
+# Share TCP connections using a context manager
+with ipfshttpclient.connect() as client:
+ hash = client.add('test.txt')['Hash']
+ print(client.stat(hash))
+
+# Share TCP connections until the client session is closed
+class SomeObject:
+ def __init__(self):
+ self._client = ipfshttpclient.connect(session=True)
+
+ def do_something(self):
+ hash = self._client.add('test.txt')['Hash']
+ print(self._client.stat(hash))
+
+ def close(self): # Call this when your done
+ self._client.close()
+```
+
+Administrative functions:
+
+```py
+>>> client.id()
+{'Addresses': ['/ip4/127.0.0.1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ '/ip6/::1/tcp/4001/ipfs/QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS'],
+ 'AgentVersion': 'go-ipfs/0.4.10',
+ 'ID': 'QmS2C4MjZsv2iP1UDMMLCYqJ4WeJw8n3vXx1VKxW1UbqHS',
+ 'ProtocolVersion': 'ipfs/0.1.0',
+ 'PublicKey': 'CAASpgIwgg ... 3FcjAgMBAAE='}
+```
+
+Pass in API options:
+
+```py
+>>> client.pin.ls(type='all')
+{'Keys': {'QmNMELyizsfFdNZW3yKTi1SE2pErifwDTXx6vvQBfwcJbU': {'Count': 1,
+ 'Type': 'indirect'},
+ 'QmNQ1h6o1xJARvYzwmySPsuv9L5XfzS4WTvJSTAWwYRSd8': {'Count': 1,
+ 'Type': 'indirect'},
+ …
+```
+
+Add a directory and match against a filename pattern:
+
+```py
+>>> client.add('photos', pattern='*.jpg')
+[{'Hash': 'QmcqBstfu5AWpXUqbucwimmWdJbu89qqYmE3WXVktvaXhX',
+ 'Name': 'photos/photo1.jpg'},
+ {'Hash': 'QmSbmgg7kYwkSNzGLvWELnw1KthvTAMszN5TNg3XQ799Fu',
+ 'Name': 'photos/photo2.jpg'},
+ {'Hash': 'Qma6K85PJ8dN3qWjxgsDNaMjWjTNy8ygUWXH2kfoq9bVxH',
+ 'Name': 'photos/photo3.jpg'}]
+```
+
+Or add a directory recursively:
+
+```py
+>>> client.add('fake_dir', recursive=True)
+[{'Hash': 'QmQcCtMgLVwvMQGu6mvsRYLjwqrZJcYtH4mboM9urWW9vX',
+ 'Name': 'fake_dir/fsdfgh'},
+ {'Hash': 'QmNuvmuFeeWWpxjCQwLkHshr8iqhGLWXFzSGzafBeawTTZ',
+ 'Name': 'fake_dir/test2/llllg'},
+ {'Hash': 'QmX1dd5DtkgoiYRKaPQPTCtXArUu4jEZ62rJBUcd5WhxAZ',
+ 'Name': 'fake_dir/test2'},
+ {'Hash': 'Qmenzb5J4fR9c69BbpbBhPTSp2Snjthu2hKPWGPPJUHb9M',
+ 'Name': 'fake_dir'}]
+```
+
+This module also contains some helper functions for adding strings and JSON to IPFS:
+
+```py
+>>> lst = [1, 77, 'lol']
+>>> client.add_json(lst)
+'QmQ4R5cCUYBWiJpNL7mFe4LDrwD6qBr5Re17BoRAY9VNpd'
+>>> client.get_json(_)
+[1, 77, 'lol']
+```
+
+Use an IPFS server with basic auth (replace username and password with real creds):
+
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', auth=("username", "password"))
+```
+
+Pass custom headers to the IPFS daemon with each request:
+```py
+>>> import ipfshttpclient
+>>> headers = {"CustomHeader": "foobar"}
+>>> client = ipfshttpclient.connect('/dns/ipfs-api.example.com/tcp/443/https', headers=headers)
+```
+
+Connect to the IPFS daemon using a Unix domain socket (plain HTTP only):
+```py
+>>> import ipfshttpclient
+>>> client = ipfshttpclient.connect("/unix/run/ipfs/ipfs.sock")
+```
+
+
+
+## Documentation
+
+Documentation (currently mostly API documentation unfortunately) is available on IPFS:
+
+https://ipfs.io/ipns/12D3KooWEqnTdgqHnkkwarSrJjeMP2ZJiADWLYADaNvUb6SQNyPF/docs/
+
+The `ipfs` [command-line Client documentation](https://ipfs.io/docs/commands/) may also be useful in some cases.
+
+### Migrating from `0.4.x` to `0.6.0`
+
+Please see the CHANGELOG for [the minor breaking changes between these releases](CHANGELOG.md#py-ipfs-http-client-060-30062020).
+
+## Featured Projects
+
+Projects that currently use py-ipfs-http-client. If your project isn't here, feel free to submit a PR to add it!
+
+- [InterPlanetary Wayback](https://github.com/oduwsdl/ipwb) interfaces web archive ([WARC](https://www.iso.org/standard/44717.html)) files for distributed indexing and replay using IPFS.
+
+## Contributing
+
+### Easy Tasks
+
+Over time many smaller day-to-day tasks have piled up (mostly supporting some
+newer APIs). If want to help out without getting too involved picking up one
+of tasks of our [help wanted issue list](https://github.com/ipfs-shipyard/py-ipfs-http-client/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
+would go a long way towards making this library more feature-complete. 👍
+
+### Bug reports
+
+You can submit bug reports using the
+[GitHub issue tracker](https://github.com/ipfs/py-ipfs-http-client/issues).
+
+### Pull requests
+
+Pull requests are welcome. Before submitting a new pull request, please
+make sure that your code passes both the
+[code formatting](https://www.python.org/dev/peps/pep-0008/)
+(PEP-8 with tab indentation) and
+[typing](https://mypy.readthedocs.io/en/stable/cheat_sheet_py3.html)
+(PEP-484 using mypy) checks:
+
+ $ tox -e styleck -e typeck
+
+As well as the unit tests:
+
+ $ tox -e py3 -e py3-httpx
+
+If you are unsure, don't hasitate to just submit your code and a human will
+take a look. 🙂
+
+If you can, Please make sure to include new unit tests for new features or
+changes in behavior. We aim to bring coverage to 100% at some point.
+
+#### Installing the pre-commit Hook
+
+You can arrange for the code style and typing tests to be run automatically
+before each commit by installing the GIT `pre-commit` hook:
+
+ $ ./tools/pre-commit --install
+
+### Chat with Us (IRC/Matrix)
+
+You can find us on [#py-ipfs on chat.freenode.org](http://webchat.freenode.net/?channels=%23py-ipfs)
+or in our [Matrix chat room](https://matrix.to/#/#py-ipfs:ninetailed.ninja?via=ninetailed.ninja&via=librem.one).
+Join us if you have any suggestions, questions or if you just want to discuss
+IPFS and Python in general.
+
+Please note that the channel is not monitored all the time and hence you may
+only receive a reply to your message later that day. Using Matrix makes it
+easier to stay connected in the background, so please prefer the Matrix option
+or use an IRC bouncer.
+
+## License
+
+This code is distributed under the terms of the [MIT license](https://opensource.org/licenses/MIT). Details can be found in the file
+[LICENSE](LICENSE) in this repository.
+
+
+%prep
+%autosetup -n ipfshttpclient-0.7.0
+
+%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-ipfshttpclient -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..db0fe4f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+d76dc0a32abc1984633137d80eceae32 ipfshttpclient-0.7.0.tar.gz