Home

Awesome

py-ipfs

IPFS Logo

Made by the IPFS Community IRC #py-ipfs on chat.freenode.net Matrix #py-ipfs:ninetailed.ninja Standard README Compliant

Python implementation of IPFS

Python implementation of IPFS, the InterPlanetary File System. Not even remotely done yet.

For the current status, and where you can help, please see issue 49.

Table of Contents

Background

IPFS is a distributed file system that seeks to connect all computing devices with the same system of files. In some ways, this is similar to the original aims of the Web, but IPFS is actually more similar to a single bittorrent swarm exchanging git objects.

IPFS could become a new major subsystem of the internet. If built right, it could complement or replace HTTP. It could complement or replace even more. It sounds crazy. It is crazy.

<!-- ### Organization This repository contains the Python package `ipfs`, which contains the subpackages `block`, `merkledag`, `naming`, and `routing`, which function as laid out in [the main IPFS repo](http://github.com/ipfs/ipfs) The repo roughly looks like this:: ipfs ├─ block ├─ merkledag ├─ naming ├─ network └─ routing -->

Install

Not ready for prime time yet

Usage

Also not ready for prime time yet

Documentation

To build the Sphinx docs, execute:

$ make -C docs/ <your favorite docs format> # html, pdf etc.
<!-- ## Roadmap Note: This is based on the roadmap from [js-ipfs](https://github.com/ipfs/js-ipfs) . As such, it may still contain inconsistencies until further editing. - Block - MerkleDAG - [ ] MerkleDAG Python implementation (needs IPLD). - [ ] [py-merkledag-store] No spec yet. - [Go Impl](https://github.com/ipfs/go-ipfs/blob/master/merkledag/merkledag.go) - [JS Impl](https://github.com/diasdavid/js-merkledag-store). - Network - [ ] The `libp2p-website` [is the spec](https://github.com/diasdavid/libp2p-website), but for now the place to go is the [roadmap readme](https://github.com/diasdavid/go-libp2p/blob/docs/roadmap/README.md) in the `go-libp2p` docs. - [ ] [py-libp2p](https://github.com/libp2p/py-libp2p) - Please see the [py-libp2p repository](https://github.com/libp2p/py-libp2p#feature-breakdown) for the most up-to-date status of different components. - [ ] Swarm - The following modules are required, as a minimum, for basic connectivity: - [ ] libp2p-identify [JS implementation](https://github.com/diasdavid/js-libp2p-swarm/tree/master/src/identify). - Transports (just the baseline requirements, every module helps) - [X] TCP [JS Impl](https://github.com/diasdavid/js-libp2p-tcp) - Stream Multiplexer - [X] mplex - Upgrades/Crypto channel - [ ] libp2p-secio - Peer Discovery (just the baseline requirements, every module helps) - [X] bootstrap list - [ ] Kademlia DHT - [ ] mDNS - Content Discovery (just the baseline requirements, every module helps) - [ ] Kademlia DHT - NAT Traversal (just the baseline requirements, every module helps) - [ ] UPnP - [ ] NAT-PmP - Exchange - [ ] py-bitswap [JS Impl](https://github.com/diasdavid/js-bitswap). [JS Discussion issue](https://github.com/ipfs/js-ipfs/issues/17). - Supporting modules - [X] [py-cid](https://github.com/ipld/py-cid) - [X] [py-multiaddr](https://github.com/multiformats/py-multiaddr) [Spec](https://github.com/jbenet/multiaddr) [Go Impl](https://github.com/jbenet/go-multiaddr). [JS Impl](https://github.com/jbenet/js-multiaddr). - [ ] [py-multistream-select](https://github.com/dheatovwil/py-multistream-select) [Spec](https://github.com/jbenet/multistream). [JS Impl](https://github.com/diasdavid/js-multistream) _protocol muxer_. [JS Discussion issue](https://github.com/ipfs/js-ipfs/issues/24). - [X] [py-multicodec](https://github.com/multiformats/py-multicodec). [Spec](https://github.com/jbenet/multicodec). [Go Impl](https://github.com/jbenet/go-multicodec) - [ ] [py-ipld](https://github.com/ipld/py-ipld-dag). [Spec](https://github.com/ipfs/specs/pull/37). [Discussion](https://github.com/ipfs/go-ipld/issues/8). [Go Impl.](https://github.com/ipfs/go-ipld). [JS Impl.](https://github.com/diasdavid/js-ipld) -->

Contribute

IPFS implementation in Python is a work in progress. As such, there's a few things you can do right now to help out:

Please be aware that all interactions related to IPFS, libp2p and Multiformats are subject to the IPFS Code of Conduct.

License

MIT