CLI tool to develop StarkNet projects written in Cairo

Overview

Nile

Navigate your StarkNet projects written in Cairo.

Installation

pip install cairo-nile

Usage

Install Cairo

Use nile to install a given version of the Cairo language. Given Cairo's fast development pace, this command is useful to install the latest version.

nile install 0.4.0

Compile

Compile Cairo contracts. Compilation articacts are written into the artifacts/ directory.

nile compile # compiles all contracts under contracts/
nile compile contracts/MyContract.cairo # compiles single contract

Example output:

$ nile compile
Creating artifacts/abis/ to store compilation artifacts
🤖 Compiling all Cairo contracts in the contracts/ directory
🔨 Compiling contracts/Account.cairo
🔨 Compiling contracts/Initializable.cairo
🔨 Compiling contracts/Ownable.cairo
✅ Done

Clean

Deletes the artifacts/ directory for a fresh start ❄️

nile clean

Hacking on Nile

Nile uses tox to manage development tasks, you can get a list of available task with tox -av.

  • Install a development version of the package with python -m pip install .
  • Run tests with tox
  • Build the package with tox -e build
  • Format all files with tox -e format
  • Check files formatting with tox -e lint

License

Nile is released under the MIT License.

Comments
  • nile setup fails

    nile setup fails

    Hello team. I am trying to setup a private key alias as described in the README. but I get an error.

    I am on a working installation of Nile on macOS (I followed the macOS specific installations) and I am able to compile and deploy. I created the venv, installed cairo-nile with pip, inited the project. I also create a .env file in the root directory with the YOLO=123 key.

    > nile setup YOLO    
    
    Traceback (most recent call last):
      File "/opt/homebrew/bin/nile", line 8, in <module>
        sys.exit(cli())
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/opt/homebrew/lib/python3.9/site-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/opt/homebrew/lib/python3.9/site-packages/nile/cli.py", line 84, in setup
        Account(signer, network)
      File "/opt/homebrew/lib/python3.9/site-packages/nile/core/account.py", line 20, in __init__
        self.signer = Signer(int(os.environ[signer]))
      File "/opt/homebrew/Cellar/[email protected]/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
        raise KeyError(key) from None
    KeyError: 'YOLO'
    

    I have no idea what is going wrong

    opened by clacladev 17
  • Error installing Cairo on M1 chip (gmp.h)

    Error installing Cairo on M1 chip (gmp.h)

    image

    As you can see, when I try to compile the cairo file, it show with these error. I tried to search on Google but can't find with any ideas. I think it's out of my knowledge, anyone know how to solve this? Thank you.

    opened by howardpen9 17
  • Plugin support

    Plugin support

    Fixes #53

    Plugin support for Nile

    In this PR I present a methodology for extending CLI functionality for Nile in a Pythonic manner to ease Nile extensibility with plugins.

    How is this implemented?

    This implementation takes advantage of the native extensibility features of click. Using click and leveraging the Python entrypoints we have a simple manner of handling extension natively on Python environments through dependencies. The plugin implementation on Nile looks for specific Python entrypoints constraints for adding commands.

    In order for this implementation to be functional, it is needed by the plugin developer to follow some development guidelines defined in this simple plugin example I've implemented extending Nile for a dummy greet extension. In a brief explanation the guidelines are as follows:

    1. Define a Python module that implement a click command or group:
    # First, import click dependency
    import click
    
    # Decorate the method that will be the command name with `click.command` 
    @click.command()
    # You can define custom parameters as defined in `click`: https://click.palletsprojects.com/en/7.x/options/
    def my_command():
        # Help message to show with the command
        """
        Subcommand plugin that does something.
        """
        # Done! Now implement your custom functionality in the command
        click.echo("I'm a plugin overiding a command!")
    
    1. Define the plugin entrypoint. In this case using Poetry features in the pyproject.toml file:
    # We need to specify that click commands are Poetry entrypoints of type `nile_plugins`. Do not modify this
    [tool.poetry.plugins."nile_plugins"]
    # Here you specify you command name and location <command_name> = <package_method_location>
    "greet" = "nile_greet.main.greet"
    
    1. Done!

    How to decide if I want to use a plugin or not? Just install / uninstall the plugin dependency :)

    Cheers.

    opened by franalgaba 14
  • nile init: Greenlet error using python3.10

    nile init: Greenlet error using python3.10

    I have python 3.10 installed with conda (conda create --name py310 python=3.10; conda activate py310) After installing nile and running nile init, I get

      Running setup.py install for greenlet ... error
      error: subprocess-exited-with-error
      
      × Running setup.py install for greenlet did not run successfully.
      │ exit code: 1
      ╰─> [17 lines of output]
          running install
          running build
          running build_ext
          building 'greenlet' extension
          creating build
          creating build/temp.linux-x86_64-3.10
          gcc -pthread -B /home/samlaf/anaconda3/envs/py310/compiler_compat -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/samlaf/anaconda3/envs/py310/include -fPIC -O2 -isystem /home/samlaf/anaconda3/envs/py310/include -fPIC -I/home/samlaf/devel/starkware/nile-test/env/include -I/home/samlaf/anaconda3/envs/py310/include/python3.10 -c greenlet.c -o build/temp.linux-x86_64-3.10/greenlet.o
          greenlet.c: In function ‘g_calltrace’:
          greenlet.c:566:10: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘use_tracing’; did you mean ‘tracing’?
            566 |  tstate->use_tracing = 0;
                |          ^~~~~~~~~~~
                |          tracing
          greenlet.c:569:10: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘use_tracing’; did you mean ‘tracing’?
            569 |  tstate->use_tracing = (tstate->tracing <= 0 &&
                |          ^~~~~~~~~~~
                |          tracing
          error: command '/usr/bin/gcc' failed with exit code 1
          [end of output]
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
    error: legacy-install-failure
    
    × Encountered error while trying to install package.
    ╰─> greenlet
    
    note: This is an issue with the package mentioned above, not pip.
    hint: See above for output from the failure.
    Traceback (most recent call last):
      File "/home/samlaf/devel/starkware/nile-test/env/bin/nile", line 8, in <module>
        sys.exit(cli())
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/cli.py", line 61, in init
        init_command()
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/core/init.py", line 19, in init
        install()
      File "/home/samlaf/devel/starkware/nile-test/env/lib/python3.10/site-packages/nile/core/install.py", line 10, in install
        subprocess.check_call(
      File "/home/samlaf/anaconda3/envs/py310/lib/python3.10/subprocess.py", line 369, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/home/samlaf/devel/starkware/nile-test/env/bin/python3', '-m', 'pip', 'install', 'cairo-lang', 'starknet-devnet']' returned non-zero exit status 1.
    
    opened by samlaf 12
  • Big picture view

    Big picture view

    I've spent some more time thinking how to organize cairo projects and what I'd like to see. I think we should leverage the python ecosystem as much as possible:

    • nile init could use cookiecutter to create the project
    • pypi to distribute cairo packages
    • users should be able to configure nile (for example the contracts directory) from their setup.cfg file like other python tools

    I think cairo projects should use the same folder structure as python projects, this has the added benefit that library developers can distribute the cairo files together with an sdk to interact with it (like @uniswap/core and @uniswap/sdk).

    .
    ├── src
    │  └── cairoswap
    │     ├── __init__.py
    │     ├── cairo
    │     │  ├── __init__.py
    │     │  ├── pool.cairo
    │     │  └── router.cairo
    │     ├── pool.py
    │     └── router.py
    ├── tests
    │  ├── pool.test.cairo
    │  ├── test_pool.py
    │  └── test_router.py
    ├── pyproject.toml
    ├── setup.cfg
    └── tox.in
    

    Developers can then create a tox task than runs python tests with pytest and cairo tests with nile test.

    If users don't need/want to setup a full blown project they can revert to a minimal setup and use nile to build and test.

    .
    └── src
       ├── pool.cairo
       └── pool.test.cairo
    
    design 
    opened by fracek 11
  • add `status` command and chaining.

    add `status` command and chaining.

    Fixes #98. This PR implements the status command to fetch the status of a StarkNet transaction and the ability to wait for its settlement before initiating another transaction.

    See discussion in #98. Follow up of #70, #90.

    The PR splits features currently available in nile debug and implements them in other functions to be used in different cases:

    • From any transaction hash, query its result. nile status <transaction_hash>.
    • If the transaction may not be settled at calling time and the user wishes to wait (and get that status) before continuing, the --track flag can be added. status will then retry on pending transactions until they are REJECTED or ACCEPTED IN L2.°
    • If users would like to debug the transaction message in case of rejection, use the --debug flag.
      Note that --debug implies --track. The debugcommand keeps the same functionality and is effectively an alias for status --debug.

    Furthermore, nile invoke, nile deploy, nile declare Account.send, and Account.deploy can now also use --track and --debug. In that case, the process (terminal or within run) will not return before the transaction is settled (helping the fight against "nonce").

    status, as well as nile invoke and account.send when these flags are used, returns a TransactionStatus, named tuple holding the transaction hash, the transaction status, and the eventual error message. Currently, deploys return value is kept unchanged.

    ° An additional flag --wait-for-l1 was also on my mind but I didn't think it was necessary for now.

    opened by trevis-dev 10
  • Can't run nile node in macOS

    Can't run nile node in macOS

    Hi,

    I'm on macOS Big Sur, and there is some system process running at port 5000. Cause of which, nile node fails to run.

    Is there a way to specify the port in nile node ?

    enhancement 
    opened by kanishkatn 10
  • Add `nile-account` flag to set Nile artifacts path

    Add `nile-account` flag to set Nile artifacts path

    This PR proposes to add the nile-account flag to account.declare which will create an overriding_path to Nile's precompiled artifacts. This will remove the need to manually set the path for Account declarations.

    Nile account declarations will look like this:

    out = await account.declare("Account", nile_account=True)
    

    as opposed to something like:

    overriding_path = ("env/lib/python3.9/site-packages/nile/artifacts", "env/lib/python3.9/site-packages/nile/artifacts/abis")
    
    out = await account.declare("Account", overriding_path=overriding_path)
    

    Resolves #309.

    Update

    In the event that an issue arises from the Account contract itself, the PR will now find the artifact in Nile's own artifacts directory. In most cases where errors occur from the contract(s) called from an account, Debug will return the underlined code where the error is coming from in the contracts. The errors referenced specifically in Account will not return the underlined Cairo code because Debug needs the actual .cairo contract to reference.

    This PR also proposes to:

    • Improve the triggered account deployments for methods requiring an account such as deploy, declare, and send. Previously, these deployments would fail but the account would still be registered. This is because the CLI only passed watch_mode to the account method and not the account initialization/deployment.
    • unregister failed account deployments. Though, it may be useful to keep the account information, I think it's possible that confusion may arise from having the account information when its deployment failed. If it's preferred to leave the data, we can remove the unregister quite easily.
    opened by andrew-fleming 8
  • Fix network handling

    Fix network handling

    Resolves #297.

    The current flow of network handling creates the awkward issue of an unresolved query in perpetuity when the node.json exists but the network key does not. This PR, therefore, proposes to add goerli2 and integration gateways to the node.json in the nile node command. This means that the goerli2 and integration gateways will be accessible irrespective of the node.json file's existence.

    opened by andrew-fleming 8
  • Update Nile to work with Cairo 0.9.0

    Update Nile to work with Cairo 0.9.0

    Fixes #130

    Still WIP update of nile for cairo 0.9.0

    • Registers class hash declarations in a declarations.txt file
    • Add max_fee param to both nre and cli as per this PR
    • Add --accounts param to node command

    Let me know what else should be added.

    opened by EvolveArt 8
  • run 'nile node' prompt error

    run 'nile node' prompt error

    After run `nile node', it will display a lot of error:

    ....... File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/nile/cli.py", line 193, in node node_command(host, port) File "/Users/x/Dev/my-project/env/lib/python3.8/site-packages/nile/core/node.py", line 21, in node subprocess.check_call(["starknet-devnet", "--host", host, "--port", str(port)]) File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['starknet-devnet', '--host', '127.0.0.1', '--port', '5000']' returned non-zero exit status 1.

    OS: macOS 12.3.1 (m1)

    opened by acche 8
  • Declaring a contract causes

    Declaring a contract causes "Requested contract address is not deployed"

    1. Create a new project by following the Getting Started steps
    2. Compile the example contract with nile compile
    3. I noticed that I cannot setup an account using setup due to https://github.com/OpenZeppelin/nile/issues/299, because the Account contract is not declared yet. So instead, I created a script with the following:
    from nile.core.account import Account
    
    async def run(nre):
        signer = "PRIVATE_KEY"
        account = await Account(signer, nre.network)
    

    and ran that script with nile run <script> 4. Try to declare the contract contract with nile declare PRIVATE_KEY contract 5. The following error occurs:

    🚀 Declaring contract
    ⏳ Successfully sent declaration of contract as 0x399998c787e0a063c3ac1d2abac084dcbe09954e3b156d53a8c43a02aa27d35
    🧾 Transaction hash: 0x7217575b1175f78ff6201490887019448f5af5e20715e3513aef86d4d168112
    📦 Registering 0x399998c787e0a063c3ac1d2abac084dcbe09954e3b156d53a8c43a02aa27d35 in localhost.declarations.txt
    ⏳ Querying the network for transaction status...
    ❌ Transaction status: REJECTED
    🧾 Found contracts: ['0x01de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5:/Users/eric/git/nileproj4/env/lib/python3.9/site-packages/nile/artifacts/Account.json']
    ⏳ Querying the network with identified contracts...
    🧾 Error message:
    Requested contract address 0x1de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5 is not deployed.
    

    Note that the error message's address 0x1de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5 is the same as the account address 0x01de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5 but missing a leading 0.


    Additional info:

    localhost.accounts.json contains:

    {
      "0x7e52885445756b313ea16849145363ccb73fb4ab0440dbac333cf9d13de82b9": {
        "address": "0x01de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5",
        "index": 0,
        "alias": "PRIVATE_KEY"
      }
    }
    

    localhost.deployments.txt contains:

    0x01de4967d751b8f23da1129659357191f634c3d451a235d0dd5b2bcb9c7b1ae5:/Users/eric/git/nileproj4/env/lib/python3.9/site-packages/nile/artifacts/abis/Account.json
    
    opened by ericglau 2
  • Registering duplicate deployment address will delete deployment from json

    Registering duplicate deployment address will delete deployment from json

    The StarkNet network will correctly reject an attempted deployment of a duplicate contract address. account.deploy unregisters deployments upon tx rejections; therefore, if account.deploy rejects a duplicate deployment, it will unregister the successful deployment as well. This occurs because the to_delete variable looks for the address or class hash of the entry.

    A potential fix might include checking if the address or class hash already exists in register. Currently, it only checks for duplicate aliases. See https://github.com/OpenZeppelin/nile/blob/main/src/nile/deployments.py#L13-L15

    Another idea might consist of waiting for the tx status before registering contracts.

    Maybe both?

    opened by andrew-fleming 0
  • Add query flags to declare (refactor transaction flow)

    Add query flags to declare (refactor transaction flow)

    DISCLAIMER: I know this PR is big :(, but I felt it was necessary already when I tried to add query_flag for declare and I noticed that I probably had to duplicate methods in the current design (from send existing integration), and the NRE API UX felt bad. I feel that letting this refactor for later would have made it harder.

    Fixes #308 #242

    Besides adding query_flag for declare and deploy_contract, this PR proposes a refactor of the internal transaction flow of Nile, improving the NRE interfaces, and making it easier to add logic to transactions in one place, among other things...

    Now NRE transaction execution commands always (must) return a transaction status, containing the tx_hash, the status of execution (ACCEPTED, REJECTED, etc...), and error messages in case of REJECTION, improving the UX. status is always used even when track or debug are not set, with the difference that it doesn't hang, but return the current status.

    These are some examples of what you can do with scripting now:

    # script.py
    async def run(nre):
        accounts = await nre.get_accounts(predeployed=True)
        account = accounts[0]
    
        # get account declare wrapper
        # the wrapper is for registering deployments, or declarations, those Nile specific things
        # you could use the low level transaction to avoid this, and just execute the transaction
        tx = await account.declare("Account", watch_mode="track")
    
        # get the estimate fee in WEI
        fee = await tx.estimate_fee()
    
        # get the simulation trace in a dict
        simulation_trace = await tx.simulate()
    
        # execute the transaction
        # you will get the tx_status even if you pass pass watch_mode=None
        # in this case the transaction won't hang, and the status will be PENDING
        # in a testnet (probably, could be REJECTED)
        tx_status, _ = await tx.execute()
        
        # print ACEPTED_IN_L2
        print(tx_status.status)
        
        # more info in tx_status, always available after the execution
        print(tx_status.tx_hash, tx_status.error_message)
    

    IMPORTANT: There are a lot of tests to either add, refactor or remove, then I will wait for approval of the logic before starting adding coverage. I tested the features manually before submitting them.

    NOTE: The only command I haven't refactored is the deploy of the account itself, because deploy_account is not using execute_call, but calling the gateway directly. I know this is because deploy_account in starknet_cli requires a straknet account, and is not open to integrations @martriay. I would need to work in a work around for this, but I didn't want to delay this PR more. That's the only command that is not going through the new flow.

    Every feedback is appreciated, I know there should be a lot of details, but I hope the idea would help us.

    opened by ericnordelo 5
  • Handle Exceptions in CLI scope

    Handle Exceptions in CLI scope

    Currently, we are handling some exceptions in code shared between CLI and NRE as if they were used only in CLI (logging and returning empty output). For example:

    https://github.com/OpenZeppelin/nile/blob/6643bcd31d1826fb777a2d52c9ce5b7aef67ffa0/src/nile/core/call_or_invoke.py#L42-L65

    When account.send is called from scripts, if an exception occurs, the call will return an empty response, and the exception won't be raised. This can make the user confused about what is happening, as he probably won't be checking the logging output in a script.

    I think we should, as a general rule, avoid try-catching and logging outside the CLI.

    Also, I think it would be helpful to implement a class handling exceptions for the CLI as a centralized entity instead of different try/catches in multiple places.

    This is helpful for UX and code maintainability and extensibility.

    EDIT: The code preview is not showing all the lines I wanted, but if you go to that section, and check the catch block, you will see the empty return.

    EDIT 2: I think this could relate to handling watch_mode in NRE (see this issue).

    enhancement 
    opened by ericnordelo 0
Releases(v0.12.0)
  • v0.12.0(Dec 16, 2022)

    What's Changed

    • Fix account invariant by @martriay in https://github.com/OpenZeppelin/nile/pull/302
    • Support overriding_path for account's deploy and declare by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/310
    • Allow hex params in calldata for deployments through Account by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/318
    • Return address, tx_hash from Account.deploy_contract by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/311
    • Remove accounts.json from nile init by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/324
    • Update goerli2 chain id by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/327
    • Fix network handling by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/303
    • Add nile-account flag to set Nile artifacts path by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/315

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.11.0...v0.12.0

    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Nov 21, 2022)

    What's Changed

    • Refactor tests and change network in tests to localhost by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/270
    • Support hex parameters in Account.send by @martriay in https://github.com/OpenZeppelin/nile/pull/253
    • Update universal deployer address by @martriay in https://github.com/OpenZeppelin/nile/pull/255
    • Create .env with nile init and remove example.env by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/265
    • Support mainnet chain_id by @martriay in https://github.com/OpenZeppelin/nile/pull/275
    • Add support for goerli2 and integration testnets by @martriay in https://github.com/OpenZeppelin/nile/pull/272
    • Add cairo_path to compile command (CLI and NRE) by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/241
    • Support starknet token for mainnet deployments by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/263
    • Set default max_fee in account functions by @ericglau in https://github.com/OpenZeppelin/nile/pull/262
    • Make get_hash return hex by @martriay in https://github.com/OpenZeppelin/nile/pull/257
    • Add status command and chaining. by @trevis-dev in https://github.com/OpenZeppelin/nile/pull/122
    • Add hex int pattern entry to CONTRIBUTING by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/279
    • Separate CLI and NRE scopes when integrating plugins by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/273
    • Small update to hex/int pattern. by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/282
    • Change register_class_hash to take int by @ericglau in https://github.com/OpenZeppelin/nile/pull/288
    • Log address as hex in update_abi by @ericglau in https://github.com/OpenZeppelin/nile/pull/290
    • Update README.md by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/286
    • Log as alias or address in update_abi by @ericglau in https://github.com/OpenZeppelin/nile/pull/292
    • Replace subprocess by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/236
    • Deploy through Accounts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/276
    • Support Cairo 0.10.1 by @martriay in https://github.com/OpenZeppelin/nile/pull/268

    New Contributors

    • @trevis-dev made their first contribution in https://github.com/OpenZeppelin/nile/pull/122

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.10.0...v0.11.0

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Oct 24, 2022)

    What's Changed

    • Add function to update registered deployment ABI by @ericglau in https://github.com/OpenZeppelin/nile/pull/211
    • Remove invoke command by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/227
    • Update account artifacts from cairo-contracts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/224
    • Add Account.declare by @martriay in https://github.com/OpenZeppelin/nile/pull/207
    • Improve project setup description by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/240
    • Fix dependency management by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/233
    • Add simulation and fee estimation to CLI and Account interface by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/230

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.9.1...v0.10.0

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Oct 3, 2022)

    What's Changed

    • Update invoke to execute by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/190
    • Fix: typos by @omahs in https://github.com/OpenZeppelin/nile/pull/208
    • Devnet predeployed accounts by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/192
    • Add short strings from CLI by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/210
    • Add abi parameter to deploy by @ericglau in https://github.com/OpenZeppelin/nile/pull/206
    • Add get-nonce to CLI and NRE by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/197
    • Update Account.send API by @ericnordelo in https://github.com/OpenZeppelin/nile/pull/218

    New Contributors

    • @ericnordelo made their first contribution in https://github.com/OpenZeppelin/nile/pull/190
    • @omahs made their first contribution in https://github.com/OpenZeppelin/nile/pull/208
    • @ericglau made their first contribution in https://github.com/OpenZeppelin/nile/pull/206

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.9.0...v0.9.1

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Sep 9, 2022)

    What's Changed

    • Create RELEASING by @martriay in https://github.com/OpenZeppelin/nile/pull/177
    • Support Cairo 0.10 by @martriay in https://github.com/OpenZeppelin/nile/pull/184

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.2...v0.9.0

    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Aug 29, 2022)

    What's Changed

    • Move utils.py from Contracts to Nile by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/163
    • Sanitize call/invoke params by @martriay in https://github.com/OpenZeppelin/nile/pull/162
    • Temp fix for nile init by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/166
    • Fix CLI param handling by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/168
    • add --seed option to nile node command by @kevinhalliday in https://github.com/OpenZeppelin/nile/pull/147
    • Add get-accounts command by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/119

    New Contributors

    • @kevinhalliday made their first contribution in https://github.com/OpenZeppelin/nile/pull/147

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.0...v0.8.2

    Source code(tar.gz)
    Source code(zip)
  • v0.8.1b(Aug 11, 2022)

    Beta release adding a utils module and params sanitization for better scripting through nile run scripts/my_script.py

    What's Changed

    • Move utils.py from Contracts to Nile by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/163
    • Sanitize call/invoke params by @martriay in https://github.com/OpenZeppelin/nile/pull/162

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.8.0...v0.8.1b

    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Aug 5, 2022)

    Highlights ✨

    • Added support for Cairo v0.9.1
    • Added --lite_mode for nile node
    • Improve overall error/exception handling and messages

    What's Changed

    • Fix passing optional args in _compile_contract by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/150
    • Fix failing build deps in python3.7 by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/156
    • Add CONTRIBUTING.md by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/152
    • Add support for cairo v0.9.1 with --no_wallet by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/154
    • Add lite-mode by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/153
    • Add no-wallet to account command by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/160
    • Improve error handling of account init with invalid key by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/158
    • Reduce subprocess verbosity on call, or invoke, error by @ca11ab1e in https://github.com/OpenZeppelin/nile/pull/126

    New Contributors

    • @ca11ab1e made their first contribution in https://github.com/OpenZeppelin/nile/pull/126

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.7.1...v0.8.0

    Source code(tar.gz)
    Source code(zip)
  • v0.7.1(Jul 13, 2022)

    This release updates the Account artifact related to the https://github.com/OpenZeppelin/cairo-contracts/pull/387 bug fix.

    What's Changed

    • Fix Account artifact by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/145

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.7.0...v0.7.1

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Jul 7, 2022)

    What's Changed

    • Pin marshmallow-dataclass to non-breaking version, gitignore node.json by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/110
    • Automate account flag during compilation by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/112
    • Added standalone_mode injection for command return value. by @franalgaba in https://github.com/OpenZeppelin/nile/pull/113
    • Fix alias in debug by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/114
    • Fix readme formatting by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/121
    • Update to cairo-lang v0.9.0 by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/135
    • Update Account implementation by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/140
    • Update README.md by @JulissaDantes in https://github.com/OpenZeppelin/nile/pull/139

    New Contributors

    • @JulissaDantes made their first contribution in https://github.com/OpenZeppelin/nile/pull/139

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.6.1...v0.7.0

    Source code(tar.gz)
    Source code(zip)
  • v0.6.1(Apr 21, 2022)

    What's Changed

    • Remove Python3.10 from CI by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/104

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Apr 14, 2022)

    What's Changed

    • Fix werkzeug version by @martriay in https://github.com/OpenZeppelin/nile/pull/92
    • Add --disable-hint-validation flag to nile by @LucasLvy in https://github.com/OpenZeppelin/nile/pull/82
    • feat: add .gitignore to src/nile/base_project by @kootsZhin in https://github.com/OpenZeppelin/nile/pull/97
    • Add debug command by @trevis-dev and @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/90
    • Plugin support by @franalgaba in https://github.com/OpenZeppelin/nile/pull/86
    • Test Account class and commands by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/99
    • Update account artifacts and signer, add signer test by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/94

    New Contributors

    • @LucasLvy made their first contribution in https://github.com/OpenZeppelin/nile/pull/82
    • @kootsZhin made their first contribution in https://github.com/OpenZeppelin/nile/pull/97
    • @franalgaba made their first contribution in https://github.com/OpenZeppelin/nile/pull/86
    • @trevis-dev made their first contribution in https://github.com/OpenZeppelin/nile/pull/90

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.5.2...v0.6.0

    Source code(tar.gz)
    Source code(zip)
  • v0.5.2(Mar 27, 2022)

    What's Changed

    • Fix linting by @martriay in https://github.com/OpenZeppelin/nile/pull/88

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.5.1...v0.5.2

    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Mar 21, 2022)

    This release comes with a few bugfixes, as well as support for Cairo 0.8.0 and a new Signer to work with the latest Account contract implementation.

    What's Changed

    • fix(docs): typo by @rootulp in https://github.com/OpenZeppelin/nile/pull/64
    • Add directory option to compile command by @martriay in https://github.com/OpenZeppelin/nile/pull/66
    • Update account version to cairo-contracts' 5731e71 by @martriay in https://github.com/OpenZeppelin/nile/pull/65
    • docs: fix typos by @tserg in https://github.com/OpenZeppelin/nile/pull/67
    • Fix deployment issue with default gateway url by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/74
    • Fix localhost, update readme by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/80
    • Fix signer <> account interaction by @martriay in https://github.com/OpenZeppelin/nile/pull/77
    • Add account compilation check by @andrew-fleming in https://github.com/OpenZeppelin/nile/pull/79

    New Contributors

    • @rootulp made their first contribution in https://github.com/OpenZeppelin/nile/pull/64
    • @tserg made their first contribution in https://github.com/OpenZeppelin/nile/pull/67
    • @andrew-fleming made their first contribution in https://github.com/OpenZeppelin/nile/pull/74

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.4.0...v0.5.0

    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Feb 15, 2022)

    What's Changed

    • Add end-to-end tests for "compile" and "clean" commands by @TimNooren in https://github.com/OpenZeppelin/nile/pull/45
    • Add host and port options for "node" command by @ftupas in https://github.com/OpenZeppelin/nile/pull/46
    • Fix deployment load by @martriay in https://github.com/OpenZeppelin/nile/pull/51
    • Scripting API prototype by @martriay in https://github.com/OpenZeppelin/nile/pull/55
    • Remove no longer needed %builtins directive by @sambarnes in https://github.com/OpenZeppelin/nile/pull/57
    • Refactor account module and expose it through NRE by @martriay in https://github.com/OpenZeppelin/nile/pull/56
    • Simplify send reusing call_or_invoke by @martriay in https://github.com/OpenZeppelin/nile/pull/58
    • feat(cli): improved --network option by @milancermak in https://github.com/OpenZeppelin/nile/pull/60
    • Fix None arguments to deploy, call, and invoke by @fracek in https://github.com/OpenZeppelin/nile/pull/62

    New Contributors

    • @ftupas made their first contribution in https://github.com/OpenZeppelin/nile/pull/46
    • @sambarnes made their first contribution in https://github.com/OpenZeppelin/nile/pull/57

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.3.0...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 25, 2021)

    What's Changed

    • Added support for signer by @exp-table in https://github.com/OpenZeppelin/nile/pull/33
    • Change command output on compilation error by @milancermak in https://github.com/OpenZeppelin/nile/pull/38
    • Add mainnet compatibility by @martriay in https://github.com/OpenZeppelin/nile/pull/39
    • Handle short tx hash on localhost by @perama-v in https://github.com/OpenZeppelin/nile/pull/42
    • Add tests for "compile" and "clean" CLI commands by @TimNooren in https://github.com/OpenZeppelin/nile/pull/40
    • Prevent truncation of 2 trailing characters by @perama-v in https://github.com/OpenZeppelin/nile/pull/43

    New Contributors

    • @exp-table made their first contribution in https://github.com/OpenZeppelin/nile/pull/33
    • @TimNooren made their first contribution in https://github.com/OpenZeppelin/nile/pull/40

    Full Changelog: https://github.com/OpenZeppelin/nile/compare/v0.2.1...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Nov 8, 2021)

    The 0.2.0 release comes with:

    • Cairo 0.5.0 support
    • starknet-devnet by Shard Labs as the default local network through nile node!
    • Deployments management. Nile now handles addresses and artifacts for both local and remote networks.
    • New deploy, invoke and call commands to interact with your deployments.

    See the README for documentation.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.15(Nov 6, 2021)

  • v0.0.14(Oct 13, 2021)

  • v0.0.13(Oct 4, 2021)

  • v0.0.12(Oct 3, 2021)

    • fix import importlib metadata bug (#17)
    • install Cairo using pip instead of wget (#16)
    • add init command (#15)
    • fixes and updates on README (#14 and more)

    thanks @marcellobardus and @franciscod for their contributions to this release!

    Source code(tar.gz)
    Source code(zip)
  • v0.0.7(Oct 1, 2021)

Owner
Martín Triay
cogito ? sum : null
Martín Triay
A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption.

password-manager A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption. Screenshot Pre-requis

Leonardo de Araujo 15 Oct 15, 2022
vimBrain is a brainfuck-based vim-inspired esoteric programming language.

vimBrain vimBrain is a brainfuck-based vim-inspired esoteric programming language. vimBrainPy Currently, the only interpreter available is written in

SalahDin Ahmed 3 May 08, 2022
Get latest astronomy job and rumor news in your command line

astrojobs Tired of checking the AAS job register and astro rumor mill for job news? Get the latest updates in the command line! astrojobs automaticall

Philip Mocz 19 Jul 20, 2022
A terminal client for connecting to hack.chat servers

A terminal client for connecting to hack.chat servers.

V9 2 Sep 21, 2022
Display Images in your terminal with python

A python library to display images in the terminal

Pranav Baburaj 57 Dec 30, 2022
Command-line tool to use LNURL with your LND instance

Sprint planner Sprint planner is a Python script for planning your Jira tasks based on your calendar availability. Installation Use the package manage

Djuri Baars 6 Jan 14, 2022
A Python command-line utility for validating that the outputs of a given Declarative Form Azure Portal UI JSON template map to the input parameters of a given ARM Deployment Template JSON template

A Python command-line utility for validating that the outputs of a given Declarative Form Azure Portal UI JSON template map to the input parameters of a given ARM Deployment Template JSON template

Glenn Musa 1 Feb 03, 2022
Seamlessly run Python code in IPython from Vim

Seamlessly run Python code from Vim in IPython, including executing individual code cells similar to Jupyter notebooks and MATLAB. This plugin also supports other languages and REPLs such as Julia.

Hans Chen 269 Dec 20, 2022
spade is the next-generation networking command line tool.

spade is the next-generation networking command line tool. Say goodbye to the likes of dig, ping and traceroute with more accessible, more informative and prettier output.

Vivaan Verma 5 Jan 28, 2022
Another (unofficial) Qt CLI Installer on multi-platforms

Another Qt installer(aqt) Release: Documentation: Test status: and Coverage: This is a utility alternative to the official graphical Qt installer, for

Hiroshi Miura 528 Jan 02, 2023
StackOverflow in your terminal.

how. How do I ...? This project was started to help developers ask more questions. Table of Contents Installation Usage Foss Community Copyright Insta

Ron Nathaniel 2 Jan 31, 2022
Ntfy - 🖥️📱🔔 A utility for sending notifications, on demand and when commands finish.

About ntfy ntfy brings notification to your shell. It can automatically provide desktop notifications when long running commands finish or it can send

Daniel Schep 4.5k Jan 01, 2023
A Python-based command prompt concept which includes windows command emulation.

PythonCMD A Python-based command prompt concept which includes windows command emulation. Current features: echo: Input your message and it will be cl

1 Feb 05, 2022
This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal.

Star Wars CLI (swcli) This CLI give the possibility to do a queries in Star Wars API and returns a JSON in a terminal. Install $ pip install swcli Qu

Pery Lemke 5 Nov 05, 2021
triggercmd is a CLI client for the TRIGGERcmd cloud service.

TriggerCMD CLI client triggercmd is a CLI client for the TRIGGERcmd cloud service. installation the triggercmd package is available in PyPI. to instal

Gustavo Soares 7 Oct 18, 2022
A simple weather tool. I made this as a way for me to learn Python, API, and PyPi packaging.

A simple weather tool. I made this as a way for me to learn Python, API, and PyPi packaging.

Clint E. 105 Dec 31, 2022
Python codecs extension featuring CLI tools for encoding/decoding anything

CodExt Encode/decode anything. This library extends the native codecs library (namely for adding new custom encodings and character mappings) and prov

Alex 210 Dec 30, 2022
A helper program to play wordle

A helper program to play wordle

1 Jan 22, 2022
A powerful Minecraft command library.

Mecha A powerful Minecraft command library. from mecha import Mecha

32 Dec 10, 2022
A CLI tool for using GLIDE to generate images from text.

Text-Glided-Diffusion Installation First clone this repository: git clone https://github.com/afiaka87/text-glided-diffusion.git cd text-glided-diffusi

Clay Mullis 68 Dec 30, 2022