Skip to content
Open
Show file tree
Hide file tree
Changes from 75 commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
cbb0660
Problem: Ledger wallet users cannot use Aleph to send transactions.
Sep 10, 2025
4e8c9b6
Fix: Solve code quality issues.
Sep 10, 2025
f4c0f2a
Fix: Solve issue loading the good configuration.
Sep 10, 2025
c52f9dc
Fix: Solved definitively the wallet selection issue and also solved a…
Sep 10, 2025
b994c79
Fix: Solved code-quality issue.
Sep 10, 2025
cb798b5
Feature: cli load_account to handle account selections
1yam Oct 31, 2025
9c347b5
Fix: using load_account instead of _load_account
1yam Oct 31, 2025
f770d0f
fix: unit test mock
1yam Oct 31, 2025
677799d
Feature: aleph account init to create based config for new user using…
1yam Oct 31, 2025
725e042
fix: aleph account list now handle ledger device
1yam Oct 31, 2025
051b0e4
fix: aleph account address now handle ledger device
1yam Oct 31, 2025
55308d6
fix: aleph account export-private-key handle ledger case (can't expor…
1yam Oct 31, 2025
d433012
Feature: missing unit test for ledger
1yam Nov 3, 2025
f61e497
fix: Update aleph.im & twentysix to aleph.cloud (#414)
RezaRahemtola Nov 3, 2025
def2144
Fix: handle common error using ledger (OsError / LedgerError)
1yam Nov 4, 2025
46bbbdf
Fix: handle change from account on sdk side
1yam Nov 7, 2025
96ee9cd
Fix: remove init commands and ensure that config file/folder and subf…
1yam Nov 7, 2025
edd5f07
Fix: AccountLike renamed to AccountTypes
1yam Nov 7, 2025
ffc634e
fix: AlephAccount should bez AccountTypes
1yam Nov 7, 2025
5e66ce2
fix: account init commands unit test should be removed since not usef…
1yam Nov 7, 2025
bb5e3be
Fix: use arguments instead of get_closest_tier (#416)
1yam Nov 13, 2025
25b31ef
Fix: instance create crn is none when when giving --crn-hash or --crn…
1yam Nov 13, 2025
681b59d
Feature: utils functions for ledger
1yam Nov 19, 2025
47e5128
Fix: ensure ledger is connected before loading ledger account
1yam Nov 19, 2025
41b7da6
Fix: avoid connecting to ledger when not needed
1yam Nov 19, 2025
3bdc3b3
Fix: use BaseEthAccount instead of EthAccount in instance create and …
1yam Nov 19, 2025
9116552
fix: refactor aleph account configure and list to handle ledger
1yam Nov 19, 2025
f884163
Fix: call_program_crn_list can now filter node when fetching if they …
1yam Nov 19, 2025
8db0817
Fix: unit test
1yam Nov 19, 2025
c79a795
Feature: --no args for aleph account configure
1yam Nov 19, 2025
703cb47
fix: linting issue
1yam Nov 19, 2025
2a41932
Feature: load acount unit test
1yam Nov 19, 2025
5386882
Feature: ledger can be load from derivation path
1yam Nov 20, 2025
c96ed54
Unit: test_aggregate.py for ledger
1yam Nov 20, 2025
263021a
Unit: new tests for utils func around ledger (wait_for_ledger_connect…
1yam Nov 20, 2025
9ee1acb
Unit: new tests for non interactive account config
1yam Nov 20, 2025
b864806
Problem: Ledger wallet users cannot use Aleph to send transactions.
Sep 10, 2025
3db1512
Fix: Solve code quality issues.
Sep 10, 2025
dd9f469
Fix: Solve issue loading the good configuration.
Sep 10, 2025
5640671
Fix: Solved definitively the wallet selection issue and also solved a…
Sep 10, 2025
dea3db7
Fix: Solved code-quality issue.
Sep 10, 2025
679ea56
Feature: cli load_account to handle account selections
1yam Oct 31, 2025
14805ff
Fix: using load_account instead of _load_account
1yam Oct 31, 2025
a140f15
fix: unit test mock
1yam Oct 31, 2025
7d58847
Feature: aleph account init to create based config for new user using…
1yam Oct 31, 2025
a918403
fix: aleph account list now handle ledger device
1yam Oct 31, 2025
f57a4d3
fix: aleph account address now handle ledger device
1yam Oct 31, 2025
9900347
fix: aleph account export-private-key handle ledger case (can't expor…
1yam Oct 31, 2025
47d2d9f
Feature: missing unit test for ledger
1yam Nov 3, 2025
18f0940
Fix: handle common error using ledger (OsError / LedgerError)
1yam Nov 4, 2025
764a5f6
Fix: handle change from account on sdk side
1yam Nov 7, 2025
8b9ad59
Fix: remove init commands and ensure that config file/folder and subf…
1yam Nov 7, 2025
332f2cc
Fix: AccountLike renamed to AccountTypes
1yam Nov 7, 2025
51a2cac
fix: AlephAccount should bez AccountTypes
1yam Nov 7, 2025
2e9c044
fix: account init commands unit test should be removed since not usef…
1yam Nov 7, 2025
a14a73e
Feature: utils functions for ledger
1yam Nov 19, 2025
1b9a7ed
Fix: ensure ledger is connected before loading ledger account
1yam Nov 19, 2025
db0a9e8
Fix: avoid connecting to ledger when not needed
1yam Nov 19, 2025
bdfd6f2
Fix: use BaseEthAccount instead of EthAccount in instance create and …
1yam Nov 19, 2025
96edd86
fix: refactor aleph account configure and list to handle ledger
1yam Nov 19, 2025
7170a85
Fix: call_program_crn_list can now filter node when fetching if they …
1yam Nov 19, 2025
285723c
Fix: unit test
1yam Nov 19, 2025
94c626a
Feature: --no args for aleph account configure
1yam Nov 19, 2025
e96afe1
fix: linting issue
1yam Nov 19, 2025
bc68f0c
Feature: load acount unit test
1yam Nov 19, 2025
3203b21
Feature: ledger can be load from derivation path
1yam Nov 20, 2025
4527f17
Unit: test_aggregate.py for ledger
1yam Nov 20, 2025
e3e84be
Unit: new tests for utils func around ledger (wait_for_ledger_connect…
1yam Nov 20, 2025
d466231
Unit: new tests for non interactive account config
1yam Nov 20, 2025
896cec5
Merge remote-tracking branch 'origin/andres-feature-implement_ledger'…
1yam Nov 20, 2025
6802a2b
fix: allow user to specify how many ledger account they want to load …
1yam Nov 20, 2025
0ede706
fix: use the already existing args chain to load_account
1yam Nov 20, 2025
1588839
fix: lint issue
1yam Nov 20, 2025
d608925
Refactor: remove code duplication
1yam Nov 20, 2025
a5a83b6
Fix: aggregate unit test
1yam Nov 20, 2025
225474d
Fix: non-evm account couldn't be used using --private-key or --privat…
1yam Nov 21, 2025
fbb442a
fix: rename --no of configure commands to --non-it
1yam Nov 21, 2025
21caad6
fix: non interactive args for aleph account config is --non-it not --no
1yam Nov 21, 2025
5686f45
Fix: allow user to increase number of ledger account fetch using alep…
1yam Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 43 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# aleph-client

Python Client for the [aleph.im network](https://www.aleph.im), next generation network of
Python Client for the [Aleph Cloud network](https://www.aleph.cloud), next generation network of
decentralized big data applications. Development follows the [Aleph
Whitepaper](https://github.com/aleph-im/aleph-whitepaper).

## Documentation

Documentation can be found on https://docs.aleph.im/tools/aleph-client/
Documentation can be found on https://docs.aleph.cloud/devhub/sdks-and-tools/aleph-cli/

## Requirements

Expand All @@ -15,12 +15,16 @@ Documentation can be found on https://docs.aleph.im/tools/aleph-client/
Some cryptographic functionalities use curve secp256k1 and require
installing [libsecp256k1](https://github.com/bitcoin-core/secp256k1).

> apt-get install -y python3-pip libsecp256k1-dev squashfs-tools
```sh
apt-get install -y python3-pip libsecp256k1-dev squashfs-tools
```

### macOs

> brew tap cuber/homebrew-libsecp256k1
> brew install libsecp256k1
```sh
brew tap cuber/homebrew-libsecp256k1
brew install libsecp256k1
```

### Windows

Expand All @@ -32,13 +36,17 @@ We recommend using [WSL](https://learn.microsoft.com/en-us/windows/wsl/install)

Using pip and [PyPI](https://pypi.org/project/aleph-client/):

> pip install aleph-client
```sh
pip install aleph-client
```

### Using a container

Use the Aleph client and it\'s CLI from within Docker or Podman with:

> docker run --rm -ti -v $(pwd)/<data:/data> ghcr.io/aleph-im/aleph-client/aleph-client:master --help
```sh
docker run --rm -ti -v $(pwd)/<data:/data> ghcr.io/aleph-im/aleph-client/aleph-client:master --help
```

Warning: This will use an ephemeral key pair that will be discarded when
stopping the container
Expand All @@ -47,40 +55,56 @@ stopping the container

We recommend using [hatch](https://hatch.pypa.io/) for development.

Hatch is a modern, extensible Python project manager.
Hatch is a modern, extensible Python project manager.
It creates a virtual environment for each project and manages dependencies.

> pip install hatch

```sh
pip install hatch
```

### Running tests

> hatch test
```sh
hatch test
```

or

> hatch run testing:cov
```sh
hatch run testing:cov
```

### Formatting code

> hatch run linting:fmt
```sh
hatch run linting:fmt
```

### Checking types

> hatch run linting:typing
```
hatch run linting:typing
```

## Publish to PyPI

> hatch build
> hatch upload
```sh
hatch build
hatch upload
```

If you want NULS2 support you will need to install nuls2-python
(currently only available on github):

> pip install aleph-sdk-python[nuls2]
```
pip install aleph-sdk-python[nuls2]
```

To install from source and still be able to modify the source code:

> pip install -e .
```sh
pip install -e .
```

## Updating the User Documentation

Expand All @@ -95,4 +119,4 @@ command to generate updated documentation:
--output ../aleph-docs/docs/tools/aleph-client/usage.md
```

Then, open a Pull Request (PR) on the [aleph-docs](https://github.com/aleph-im/aleph-docs/pulls) repository with your changes.
Then, open a Pull Request (PR) on the [aleph-docs](https://github.com/aleph-im/aleph-docs/pulls) repository with your changes.
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
("index", "user_guide.tex", "aleph-client Documentation", "Aleph.im", "manual"),
("index", "user_guide.tex", "aleph-client Documentation", "Aleph Cloud", "manual"),
]

# The name of an image file (relative to this directory) to place at the top of
Expand Down
4 changes: 2 additions & 2 deletions docs/content/account.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Accounts
========

To send data to the aleph.im network, you need to have an account.
To send data to the Aleph Cloud network, you need to have an account.
This account can be made using any of the supported providers.

Common
Expand Down Expand Up @@ -111,4 +111,4 @@ From a private key:
... bytes.fromhex(
... "0000000000000000000000000000000000000000000000000000000000000001"))
>>> account.get_address()
'NULSd6Hgb53vAd7ZMoA2E17DUTT4C1nGrJVpn'
'NULSd6Hgb53vAd7ZMoA2E17DUTT4C1nGrJVpn'
7 changes: 3 additions & 4 deletions docs/content/async_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Async vs Sync
=============

At aleph.im we really like coding using asyncio,
At Aleph Cloud we really like coding using asyncio,
using async/await construct on Python 3.

That being said, we totally understand that you might not
Expand All @@ -15,7 +15,7 @@ calling the async code behind your back (sneaky!) so you might
be careful if you are calling it in an environment where you
already have an asyncio loop used.

Most chain specific code is synchronous, and core aleph.im interaction
Most chain specific code is synchronous, and core Aleph Cloud interaction
might by async.

Sync code have to be imported from :py:mod:`aleph_client.synchronous`,
Expand Down Expand Up @@ -44,5 +44,4 @@ Example:
... "0x06DE0C46884EbFF46558Cd1a9e7DA6B1c3E9D0a8",
... "profile", session=session)
...
{"bio": "tester", "name": "Moshe on Ethereum"}
{"bio": "tester", "name": "Moshe on Ethereum"}
18 changes: 9 additions & 9 deletions docs/content/cli.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
Command-line Interface
========

Aleph-client can be used as a command-line interface to some Aleph.im
Aleph-client can be used as a command-line interface to some Aleph Cloud
functionalities.

The following commands are available:

Post
----

Post a message on Aleph.im.
Post a message on Aleph Cloud.

The content must be JSON encoded and is obtained either from a file
or from a user prompt.
Expand All @@ -21,7 +21,7 @@ or from a user prompt.

python3 -m aleph_client post [OPTIONS]

Post a message on Aleph.im.
Post a message on Aleph Cloud.

Options:
--path TEXT
Expand All @@ -35,13 +35,13 @@ or from a user prompt.
Upload
------

Upload and store a file on Aleph.im.
Upload and store a file on Aleph Cloud.

.. code-block:: bash

python3 -m aleph_client upload [OPTIONS] PATH

Upload and store a file on Aleph.im.
Upload and store a file on Aleph Cloud.

Arguments:
PATH [required]
Expand All @@ -55,13 +55,13 @@ Upload and store a file on Aleph.im.
Pin
---

Persist a file from IPFS on Aleph.im.
Persist a file from IPFS on Aleph Cloud.

.. code-block:: bash

python3 -m aleph_client pin [OPTIONS] HASH

Persist a file from IPFS on Aleph.im.
Persist a file from IPFS on Aleph Cloud.

Arguments:
HASH [required]
Expand All @@ -75,13 +75,13 @@ Persist a file from IPFS on Aleph.im.
Program
-------

Register a program to run on Aleph.im virtual machines from a zip archive.
Register a program to run on Aleph Cloud virtual machines from a zip archive.

.. code-block:: bash

python3 -m aleph_client program [OPTIONS] PATH ENTRYPOINT

Register a program to run on Aleph.im virtual machines from a zip archive.
Register a program to run on Aleph Cloud virtual machines from a zip archive.

Arguments:
PATH [required]
Expand Down
10 changes: 5 additions & 5 deletions docs/content/introduction.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Introduction to Aleph.im
Introduction to Aleph Cloud
========================

The Aleph.im network can be accessed from any API server.
The Aleph Cloud network can be accessed from any API server.
To run one yourself, you will need to install
`PyAleph <https://github.com/aleph-im/PyAleph>`_.

Expand All @@ -17,7 +17,7 @@ data type).
Data structures
---------------

All data transferred over the aleph.im network are aleph messages.
All data transferred over the Aleph Cloud network are aleph messages.

.. uml::

Expand Down Expand Up @@ -56,8 +56,8 @@ Actual content sent by regular users can currently be of two types:
- AGGREGATE: a key-value storage specific to an address
- POST: unique data posts (unique data points, events

.. uml::
.. uml::

@startuml
object Message {
...
Expand Down
6 changes: 3 additions & 3 deletions docs/content/programs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
Programs
========

Programs are special entries that define code to run on Aleph.im virtual machines.
Programs are special entries that define code to run on Aleph Cloud virtual machines.

Aleph.im currently supports programs written in Python that follow the
Aleph Cloud currently supports programs written in Python that follow the
`ASGI interface <https://asgi.readthedocs.io/en/latest/introduction.html>`_.

In practice, the easiest approach is to use an
Expand All @@ -21,7 +21,7 @@ Creating a program
Follow the `FastAPI Tutorial <https://fastapi.tiangolo.com/tutorial/>`_
to create your first program and test it using uvicorn.

Running on Aleph.im
Running on Aleph Cloud
-------------------

Use the :ref:`cli` to upload your program.
Expand Down
Loading
Loading