Tncli - TON smart contract command line interface

Overview

Superset

Tncli

License PyPI version Codacy Badge TON

TON smart contract command line interface

State

Not working, in active development

Installation and Configuration

  1. Compile fift, func, lite-client from ton and add them to PATH env or move to /usr/bin, docs can be founded here
    1. For Arch Linux we have AUR package of ton
  2. pip install tncli

Now you can access CLI tool by typing in terminal tncli

Usage example

tncli start wallet -n my-wallet
cd my-wallet
tncli deploy

Contributor Guide

Interested in contributing? Feel free to create issues and pull requests.

There is two main tasks and many TODOs.

Main tasks are - not to use lite-client / fift / func. All can be done with python.

There is many TODOs in code - feel free to fix them and create PRs

Features and status

Feature Status
fift / func / lite-server usage
Easy bootstrap project samples wallet
Deploy-wallet for auto send TON to contracts and tests
Add more project samples with advanced usage
Compile func to build/ from func/ with files.yaml
Get contract address by tncli address
Auto send TON to init contract address
Deploy to mainnet / testnet
Project interact after deploy: easily send messages, run getmethods
Gas auto calculation for store & deploy
Load from hard project structure (example: src/projects/wallet)
Project tests with runvmcode
Project debug
Library support
Init Message support (with signature)
Run remote contracts locally (get cells from chain and run locally to get error / debug / etc.)
Docs for contract creation for beginners
Advanced user-friendly docs on fift, func

Commands

All commands could be fined in docs/commands.md

Configuration

Config folder will create on first deploy, all fift / func libs will copy to it, also deploy wallet contract will be created

Deploy process (how it's actually work)

  1. Check network (testnet, mainnet) configuration locally (in config user folder)
    1. If no config found - download from URL in config.ini
  2. Check deploy wallet locally (in config user folder)
    1. If it's first time - simple wallet will be created in config folder
    2. Message with wallet address and tips will be displayed (user need to send some TON coin on it)
    3. If there is no TON in deploy contract - script will exit and notify user to update deployer balance
  3. Will run tests on fift/data.fif / fift/message.fif (if exist) / fift/lib.fif (if exist) before creating deploy message
    1. This will check all files are correct
    2. Also, you can run custom logic - for example create keys in build/
  4. Will calculate address of contract and display it to user
  5. Will send money from deploy wallet
  6. Will deploy your contract
    1. External message will be created
    2. Boc will generated
    3. Will invoke sendfile in lite-client (TODO: use native python lib, not lite-client)

Development

git clone [email protected]:disintar/tncli.git
cd tncli && pip install -e .
Comments
  • Adding docker submodule

    Adding docker submodule

    Hey! I think this one might come in handy to temporary relief most of the pain that comes with binaries/toncli versions issues. At least till the day when pip install toncli will just work with all the new features. New tests are far better than the old ones s people using toncli, are going to need to switch to those ASAP. Otherwise legacy code is going to continue to grow and cause pain to everyone. Only way i see to quickly and reliably do it at this stage is moving towards containerized development. What i'm proposing with this PR is to make some toncli approved container for people to work from.

    I doesn't have to be my container, because it's not tested much yet at the moment, but it would be much easier to start if there was one.

    Also there is probably better way to let people know about the existence of the new tests. Not many people read docs/advanced till they feel completely lost.

    I think it would be much better if there was at least a separate paragraph in quickstart more insistingly leading towards how tests work. Or maybe even on the front README.md

    Has at least to do with issue:#36

    enhancement 
    opened by Trinketer22 14
  • FIFT parameters are read as TONCLI parameters

    FIFT parameters are read as TONCLI parameters

    .fif files can be configured via positional parameters + nominal parameters. Positional parameters work well. Nominal parameters of FIFT dont work in toncli. Looking at the output, toncli thinks they're part of toncli nominal parameters while I want them to be FIFT parameters. Example: fift run .\fift\transaction.fif .\build\contract address 0 0 0.01 -C "test" Transaction Gives usage: toncli [-h] [-v] {start,deploy,get,send,tointeger,run_transaction,f,fc,lc,run,build,fift,lite-client,sendboc,wallet,run_tests,update_libs,func} ... toncli: error: unrecognized arguments: -C

    opened by SpeedK 5
  • toncli run_tests ->

    toncli run_tests -> "Stack underflow. Last op-code consume more elements ..."

    Bug Type

    Functional

    Reproduction steps

    project.yaml

    contract:
      func:
        - code.func
      tests:
        - test.func
    

    code.func

    () recv_internal (slice in_msg_body) {
    }
    
    int sum(int a, int b) {
        return a + b;
    }
    

    test.func

    _ __test_sum() {
        var (_, stack) = invoke_method(sum, [1, 2]);
        [int data] = stack;
        throw_if(200, data != 3);
    }
    
    % toncli run_tests 
    INFO: 🌈 Start tests
    INFO: 🥌 Build successfully, check out ./build
    [ 3][t 0][2022-12-09 11:49:01.925083][vm.cpp:558]	steps: 28 gas: used=2443, max=1000000000, limit=1000000000, credit=0
    INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]
    
    Final status: [SUCCESS] - 0 cases
    Final status: [FAILED] - 1 cases
    

    Actual result

    INFO: Test [__test_sum] status: [FAIL], code: [2], error description [Stack underflow. Last op-code consume more elements than there are on stacks. (most probably means a error in asm declarations)] Total gas used (including testing code): [2443]

    Expected result

    INFO: Test [__test_sum] status: [SUCCESS]

    Suggested Severity

    Low

    Device

    mac m1

    toncli --version
    INFO: v0.0.43
    
    % ./func -V
    FunC semantic version: v0.2.0
    Build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]
    
    ./fift -V
    Fift build information: [ Commit: 9640a2794a1cc88a9534991c0709f64f95c1c4e0, Date: 2022-08-11 13:06:52 +0300]
    

    Additional Context

    Attach build/contract_tests.fif contract_tests.fif.txt

    opened by kuk 4
  • When running tests with recent ton tools and tonclin of branch main: `contract_tests.fif ...    PROC:<{:procedure already defined`

    When running tests with recent ton tools and tonclin of branch main: `contract_tests.fif ... PROC:<{:procedure already defined`

    With previous versions of ton and toncli 0.0.38 I could run without issue tests like:

    https://gitlab.com/pasosdeJesus/pruebas_mdc_func

    With the current version of ton and toncli from branch main of repository, running that test produces:

    toncli run_tests                                                                                                                                         [2/253]
    INFO: 🌈 Start tests                                                                                                                                            
    INFO: 🥌 Build successfully, check out ./build
    [ 1][t 0][2022-09-09 19:51:58.855893][Fift.cpp:67]      top: abort
    level 1: swap { <continuation 0x43a3ebce500> } if **HERE** drop 
    level 2: [in @PROC:<{:] over @fail-ifdef **HERE** 2 { <continuation 0x43a540e4b00> } does null swap @doafter<{ 0 32 u, 
    level 3: <text interpreter continuation> 
    level 4: <continuation 0x43a540b32c0>
    level 5: <text interpreter continuation> 
    [ 1][t 0][2022-09-09 19:51:58.855985][fift-main.cpp:204]        Error interpreting file `/tmp/tmpezl103ve.fif`: contract_tests.fif:1508:        PROC:<{:procedur
    e already defined                       
    
    opened by vtamara 4
  • broken with latest 4.x.x bitstring

    broken with latest 4.x.x bitstring

    Bug Type

    Functional

    Reproduction steps

    • use pip install toncli to install it
    • run it using toncli command

    Actual result

    it crashes with

        from bitstring import BitString
    ImportError: cannot import name 'BitString' from 'bitstring' 
    

    Expected result

    it should not crash

    Suggested Severity

    Critical

    Device

    OS: Fedora

    pip list | grep bitstr
    bitstring          4.0.1
    

    Additional Context

    Fix is to downgrade bitstring pip module to 3.x.x version for example pip install bitstring==3.1.9 fixes the issue

    opened by cloudfwd-artur 2
  • NFT and Jetton example projects support

    NFT and Jetton example projects support

    NFT Collection and NFT item added to toncli. Quite a bit of tests and helpers related to nft messages and data standards. Close to none documentation. Enjoy!

    opened by Trinketer22 2
  • Run tests only if tests specified.

    Run tests only if tests specified.

    If you have 2 projects and only one has defined tests then TestRunner is going to atempt to run [project_name]_tests.fif even if non generated. Firt exception is going to be thrown. So i think the best solution is just to not enter test processing loop if there are no tests.

    PS:It's possible to evade exception if you specify --contracts manually but i feel like it's not really the way to do it.

    opened by Trinketer22 2
  • Error during deploy with toncli from master

    Error during deploy with toncli from master

    I've tried to use master branch toncli for new tests According to documentation it has to be used with https://github.com/SpyCheese/ton/tree/toncli-local binaries

    toncli start wallet
    cd wallet/
    toncli build
    toncli deploy
    

    But it produces error

    INFO: 🚀 You want to interact with your contracts ['contract'] in testnet - that's great!
    INFO: ✋ Do not panic - i'm creating wallet in /root/.config/toncli, so you can easily manage your contracts
    INFO: 🐒 I'll create folder /root/.config/toncli/wallet with project wallet and all needed files
    INFO: 👑 Folder successfully created - happy blockchain hacking
    INFO: 🐼 You now can do cd wallet and toncli deploy -n testnet
    INFO: 🤗 Run tests on ['/root/.config/toncli/wallet/fift/data.fif']
    Saved new private key to file build/contract.pk
    INFO: Depth test pass 🏁
    INFO: Type test pass 🏁
    INFO: 🥳 Start contract manipulation
    [ 1][t 0][2022-08-13 07:01:54.680287875][Fift.cpp:67]   top: <text interpreter continuation>
    level 1: <continuation 0x55b003be1350>
    level 2: <text interpreter continuation>
    [ 1][t 0][2022-08-13 07:01:54.680300085][fift-main.cpp:204]     Error interpreting file `/toncli/src/toncli/modules/fift/contract_manipulation.fif`: contract.fif:15:   PROCINLINE:<{:-?
    Traceback (most recent call last):
      File "/usr/local/bin/toncli", line 33, in <module>
        sys.exit(load_entry_point('toncli', 'console_scripts', 'toncli')())
      File "/toncli/src/toncli/main.py", line 60, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 39, in __init__
        self.command_mapper[command](self)
      File "/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 70, in deploy_command
        return DeployCommand(self.string_kwargs, self.parser)
      File "/toncli/src/toncli/modules/utils/commands/command_classes/deploy_command.py", line 12, in __init__
        deployer = ContractDeployer(network=args.net, update_config=args.update,
      File "/toncli/src/toncli/modules/deploy_contract.py", line 43, in __init__
        self.deploy_contract = DeployWalletContract(network, workchain)
      File "/toncli/src/toncli/modules/deploy_wallet_contract.py", line 53, in __init__
        data = self.build()
      File "/toncli/src/toncli/modules/abstract/deployer.py", line 107, in build
        data.append(contract_manipulation(os.path.abspath(contract.to_save_location),
      File "/toncli/src/toncli/modules/utils/fift/commands.py", line 101, in contract_manipulation
        output = subprocess.check_output(command, cwd=getcwd() if not cwd else cwd)
      File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "/usr/lib/python3.10/subprocess.py", line 524, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['/usr/local/bin/fift', '-I', '/root/.config/toncli/fift-libs', '-s', '/toncli/src/toncli/modules/fift/contract_manipulation.fif', '/root/.config/toncli/wallet/build/contract.fif', '/tmp/tmpl_82u7g4.boc', '0', '/root/.config/toncli/wallet/build/boc/contract.boc', '/root/.config/toncli/wallet/build/contract_address']' returned non-zero exit status 2.
    

    how to reproduce with docker

    docker run --rm -it ubuntu:22.04 bash
    
    apt-get update && apt-get install -y build-essential cmake clang-11 openssl libssl-dev zlib1g-dev openssl wget git python3 python3-pip
    git clone --recurse-submodules --jobs 8 --depth 1 --branch toncli-local https://github.com/SpyCheese/ton.git /ton
    
    mkdir /build && cd /build
    
    cmake -DCMAKE_BUILD_TYPE=MinSizeRel /ton
    cmake --build . --config MinSizeRel --target func fift lite-client -- -j $(nproc)
    
    cp /build/lite-client/lite-client /build/crypto/fift /build/crypto/func /usr/local/bin/
    cd /
    
    git clone --depth 1 https://github.com/disintar/toncli.git
    cd toncli
    pip install -e .
    
    #specify /usr/local/bin/func /usr/local/bin/fift /usr/local/bin/lite-client
    toncli
    
    toncli update_libs
    
    cd /tmp/
    toncli start wallet
    
    cd wallet/
    toncli deploy
    
    opened by BorMor 2
  • Toncli deploys into the same address every time

    Toncli deploys into the same address every time

    Bug Type

    Functional

    Reproduction steps

    1. toncli deploy
    2. toncli deploy again

    Actual result

    The contract gets deployed to the same address over and over again, but all the times except the first TON CLI does nothing (because the address is already initialized)

    Expected result

    The contract deploys to a new address every time

    Suggested Severity

    High

    Device

    OS: Arch Linux x86_64 
    Host: MS-7D18 2.0 
    Kernel: 6.0.12-arch1-1
    CPU: 11th Gen Intel i5-11600 (12) @ 4.800GHz 
    GPU: Intel RocketLake-S GT1 [UHD Graphics 750] 
    Memory: 15823MiB
    

    Additional Context

    No response

    opened by avevad 1
  • Fixed incorrect idict_get_ref? & udict_get_ref? declarations

    Fixed incorrect idict_get_ref? & udict_get_ref? declarations

    Applying ton master branch fix: https://github.com/ton-blockchain/ton/blame/master/crypto/smartcont/stdlib.fc#L522 https://github.com/ton-blockchain/ton/commit/b640f068466b1244b69abd7acdbafd57fb147b7a#diff-bd02ff6fa1299e145b87bfc607ebca117825ff561217cd96382b8b7cdf7afdf6R522

    opened by stspbu 1
  • Fix too slow buffer

    Fix too slow buffer

    This is good one.

    If your fift creates large output - you will get error, but actually you WILL NOT see it. Because real error will be:

    Traceback (most recent call last):
      File "/Users/tvorogme/opt/anaconda3/bin/toncli", line 8, in <module>
        sys.exit(main())
      File "/Users/tvorogme/projects/toncli/src/toncli/main.py", line 67, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 42, in __init__
        self.command_mapper[command](self)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/commands_executer.py", line 70, in get_command
        return GetCommand(self.string_kwargs, self.parser)
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/utils/commands/command_classes/get_command.py", line 20, in __init__
        deployer.get(real_args[2:], args, fake_addreses=[[My()], [[None, args.address]]])
      File "/Users/tvorogme/projects/toncli/src/toncli/modules/abstract/deployer.py", line 413, in get
        print("\n".join(i))
    BlockingIOError: [Errno 35] write could not complete without blocking
    

    Seems that output buffer too slow for Fift + Python ;) I've founded this error in GET methods runs, but it can be in more places than that. Be careful. Will try to fix everywhere

    opened by tvorogme 1
  • WARNING: 🤖 Can't find executable for fift, please specify it

    WARNING: 🤖 Can't find executable for fift, please specify it

    I'm trying to install toncli on windows 10, I do everything as in the instructions https://github.com/disintar/toncli/blob/master/INSTALLATION.md at the last stage, when I open the ton-win64-binaries folder in powershell, I enter the toncli command, an error occurs: PS C:\Users\Admin\Desktop\ton-win64-binaries> toncli INFO: 🥰 First time run - i'll create config folder 4you and save some stuff there INFO: 🤖 Check all executables are installed... INFO: Adding path to executable func success! ERROR: Command '['C:\\Users\\Admin\\Desktop\\ton-win64-binaries\\fift.exe', '-V']' returned non-zero exit status 3221225501. WARNING: 🤖 Can't find executable for fift, please specify it, e.g.: /usr/bin/fift Path: How to solve?

    opened by CupoTa 0
  • bitstring library removed BitString class in the 4.x.x version

    bitstring library removed BitString class in the 4.x.x version

    Bug Type

    Functional

    Reproduction steps

    1. Install toncli
    2. Try to run it

    Actual result

    You will get "import error"

    Expected result

    Not to get an error ☺️

    Suggested Severity

    Low

    Device

    Desktop (please complete the following information):

    • OS: Linux Mint 21 x86_64

    Additional Context

    I see you specified in the requirements.txt 3.x.x version. Not sure how my OS or Python bin chose to use 4.x.x version or it was there before, not much of Python guy 😅, but I had to by hand replace 4.x.x with 3.x.x in the ~/.local/lib/... dir

    I set severity as Low, cause I'm not sure if others have the same problem and it's not because of my Python installation 🤔

    opened by liketurbo 4
  • Question: how to 'initialize' deploy-wallet on mainnet?

    Question: how to 'initialize' deploy-wallet on mainnet?

    Bug Type

    Other

    Reproduction steps

    What is the right way to 'initialize' deploy-wallet created with toncli? I've sent a few ton to it but it still uninitialized so I'm getting this on attempt to make any tx:

    Please, send more TON for deployment to ....

    How much exactly TON needs to be send to deploy-wallet (now it has 5) to finish initialization?

    Actual result

    toncli send -n mainnet -a 5 --address .....

    fails with 'Please, send more TON for deployment' message

    Expected result

    toncli send -n mainnet -a 5 --address .....

    should successfully send TONs

    Suggested Severity

    Medium

    Device

    Desktop (please complete the following information):

    • OS: Windows 11 [e.g. iOS]
    • TonCli - latest HEAD

    Additional Context

    No response

    opened by ElderOrb 2
  • Toncli tests success on out-of-gas

    Toncli tests success on out-of-gas

    Bug Type

    Functional

    Reproduction steps

    Code example https://gist.github.com/Trinketer22/b511a8f7c3820a3b01e15b4b634224d6

    thanks to @Trinketer22

    Actual result

    INFO: Test [__test_gas_limit] status: [SUCCESS] Test result: [[ 4949 ]] Total gas used (including testing code): [4949]

    Expected result

    Test status fail

    Suggested Severity

    Critical

    Device

    (base) tvorogme in ~/projects/nft_ultimate_sale on master ● ● ● λ toncli --version INFO: v0.0.43

    Additional Context

    No response

    opened by tvorogme 1
  • Unable to use toncli in directories containing Unicode characters in names

    Unable to use toncli in directories containing Unicode characters in names

    Bug Type

    Functional

    Reproduction steps

    1. Put some wallet contract directory inside directory with Unicode (for example, Russian) characters in name
    2. Try to use toncli run_tests

    Actual result

    INFO: Start tests
    unknown-location: error: Wrong encoding
    
    Traceback (most recent call last):
      File "C:\Program Files\Python39\lib\runpy.py", line 197, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "C:\Program Files\Python39\lib\runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "C:\Program Files\Python39\Scripts\toncli.exe\__main__.py", line 7, in <module>
      File "C:\Program Files\Python39\lib\site-packages\toncli\main.py", line 65, in main
        CommandsExecuter(command, string_kwargs, parser)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 39, in __init__
        self.command_mapper[command](self)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\commands_executer.py", line 49, in run_tests_command
        return RunTestsCommand(self.string_kwargs, self.parser)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\commands\command_classes\run_tests_command.py", line 12, in __init__
        test_runner.run(args.contracts.split() if args.contracts else None,
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\tests.py", line 44, in run
        build_test(getcwd(), contracts=real_contracts, cwd=getcwd(), compile_tests_with_contract=not run_tests_old_way)
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 56, in build_test
        build_test_files([*func_and_test_files, *contract.func_files_locations, *contract.func_tests_files_locations],
      File "C:\Program Files\Python39\lib\site-packages\toncli\modules\utils\test\commands.py", line 87, in build_test_files
        get_output = check_output(build_command,
      File "C:\Program Files\Python39\lib\subprocess.py", line 420, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "C:\Program Files\Python39\lib\subprocess.py", line 524, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['...\\ton-win64-binaries\\func.exe', '-o', '...тест_русский\\wallet\\build\\contract_tests.fif', '-SPA', '...\\toncli\\func-libs\\error_codes.func', '...\\toncli\\func-libs\\math.func', '...\\toncli\\func-libs\\stdlib.func', '...\\toncli\\test-libs\\1.address_helpers.func', '...\\toncli\\test-libs\\bad_messages_generator.func', '...\\toncli\\test-libs\\c5_parse_helpers.func', '...\\toncli\\test-libs\\message_helpers.func', '...\\toncli\\test-libs\\storage-test-helpers.func', '...\\toncli\\test-libs\\tests-helpers.func', '...\\toncli\\test-libs\\token-helpers.func', '...тест_русский\\wallet\\func\\Untitled-1.fc', '...тест_русский\\wallet\\tests\\tests.fc']' returned non-zero exit status 2.
    

    Expected result

    Compilation successful

    Suggested Severity

    Medium

    Device

    Desktop:

    • OS: Windows 10
    • toncli -v: INFO: v0.0.43
    • Hash of ton-win64-binaries without libcrypto (7-Zip, SHA256):
      • 2B90BB7F64269494EFC17069C9115399E3AF6A8BF77456FE137FA752DDD31806 - data hash
      • 4432D55FDBFE2B67CE051745779FB9BE050C986A33C007934533A989371BAA11 - data and names hash

    Additional Context

    No response

    opened by ProgramCrafter 0
  • How to use new tests? What is the current situation over TON binaries?

    How to use new tests? What is the current situation over TON binaries?

    You can be confused by installation process of toncli. We do our best to soften the corners.

    Current situation is: for latest master version (it's not in PyPi right now) you need to install binary from toncli-local branch of SpyCheese repo. Pre-builds can be founded here

    Is it safe?

    Yes, @SpyCheese is active TON contributor. The toncli-local branch contains new TVM OP codes, and it's up-to-date with master branch.

    New TVM OP present:

    GASLIMITSTEMP PRIVTOPUB SIGN RESETLOADEDCELLS

    Why this is needed?

    Those TVM OP needed for new toncli tests. Unlike the old version where you need to run TVM instant on each test - now you run only on TVM instant and run all tests inside it. This is a really cool improvement and the process now is smoother. The realization and idea is @BorysMinaiev (thanks for that).

    Why we can't merge it to ton-blockchain/ton master branch?

    According to @EmelyanenkoK - those TVM OP are used only for debug and tests, so it's better to have "developer" version of TVM and "production" version of TVM. You should keep in mind that these four TVM OP cannot be used in production.

    How to simplify proccess?

    Special thanks to @Trinketer22 we have a docker - you can create bash script which mount project to docker and there already binaries.

    Also Disintar-related dev @TonTheMoon (supported by TF) is creating auto-build version of TON source-code. I guess we will create one-line script of install toncli on any major system with auto-downloading binaries from package managers.

    documentation 
    opened by tvorogme 1
Releases(v0.0.4)
  • v0.0.4(Sep 18, 2022)

    v0.0.4

    PyPi: https://pypi.org/project/toncli/0.0.43/

    217 commits - WOW, a lot of work!

    Most work was supported by Ton Foundation and done by contributors, thanks.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.32(Mar 30, 2022)

    v0.0.32

    • add get_prev_c4 / get_prev_c5 in run_tests
    • fix -c in run_tests
    • fix func in non project root
    • Other minor fixes

    To update:

    pip install -U toncli
    toncli update_libs
    
    Source code(tar.gz)
    Source code(zip)
  • v0.0.22(Mar 27, 2022)

    • [x] Add sendboc command, so if .boc file pass - will send it via lite-cliente, if .fif file pass - will invoke tncli fift sendboc so fift script will be run, and then boc file on output will be sended
    • [x] Add --data-params to build command, to auto-generate data cells
    • [x] Update stdlib.fc to support nft
    • [x] Critical fix: self.wait_for_deploy(contracts=real_contracts) instead of self.wait_for_deploy(contracts=contracts)
    • [x] Add .gitignore to protect contract keys leaks
    • [x] Add cell slice parser in lite-client
    • [x] Add parse address to TonUtils.fif
    • [x] Fix custom path to fift / func / lite-client on startup
    • [x] Add command wallet to check wallets addresses
    • [x] Force fift / func libs update
    • [x] More stability in lite-client interaction
    • [x] Send exteranal_message to contract without need to provide wrapper of external_message, just pass body bytes ( with support of multiple contracts)
    • [x] Send internal_message from deploy wallet in one command
    • [x] NFT Example deploy
    • [x] Add retry parameter to lite-client, try several times to do query
    • [x] Add windows support
    • [x] Func tests
    • [x] Custom stdlib-tests.fc and asm-tests.fif for tests
    • [x] Documentation update
    Source code(tar.gz)
    Source code(zip)
Owner
Disintar IO
Disintar IO
Package installer for python

This is a package that adds a JSON file to your project that records all of the packages used in it and allows people to install it with a single command.

Anmol Malik 1 May 23, 2022
💻 Physics2Calculator - A simple and powerful calculator for Physics 2

💻 Physics2Calculator A simple and powerful calculator for Physics 2 🔌 Predefined constants pi = 3.14159... k = 8988000000 (coulomb constant) e0 = 8.

Dylan Tintenfich 4 Dec 01, 2021
GoogleFormSpammer - A simple CLI script to spam Google Forms used by Crypto Wallet scammers to collect stolen data

GoogleFormSpammer - A simple CLI script to spam Google Forms used by Crypto Wallet scammers to collect stolen data

14 Dec 17, 2022
A simple CLI productivity tool to quickly display the syntax of a desired piece of code

Iforgor Iforgor is a customisable and easy to use command line tool to manage code samples. It's a good way to quickly get your hand on syntax you don

Solaris 21 Jan 03, 2023
jenkins-tui is a terminal based user interface for Jenkins.

jenkins-tui 📦 jenkins-tui is a terminal based user interface for Jenkins. 🚧 ⚠️ This app is a prototype and in very early stages of development. Ther

Craig Gumbley 22 Oct 24, 2022
Convert shellcode into :sparkles: different :sparkles: formats!

Bluffy Convert shellcode into ✨ different ✨ formats! Bluffy is a utility which was used in experiments to bypass Anti-Virus products (statically) by f

pre.empt.dev 305 Dec 17, 2022
Turdshovel is an interactive CLI tool that allows users to dump objects from .NET memory dumps

Turdshovel Description Turdshovel is an interactive CLI tool that allows users to dump objects from .NET memory dumps without having to fully understa

Leron Gray 41 Jul 27, 2022
CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that data.

CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that

Peter Baumgartner 29 Aug 09, 2022
Vsm - A manager for the under-utilized mksession command in vim

Vim Session Manager A manager for the under-utilized `mksession` command in vim

Matt Williams 3 Oct 12, 2022
Regis-ltmpt-auto - Program register ltmpt 2022 automatis

LTMPT Register Otomatis 2022 Program register ltmpt 2022 automatis dibuat untuk

1 Jan 13, 2022
Display Images in your terminal with python

A python library to display images in the terminal

Pranav Baburaj 57 Dec 30, 2022
Interact with Replit remotely with the Replit CLI

Replit CLI pip install repl-cli Welcome to Replit CLI! With the Replit CLI Application, you can work with your repls locally, including clone, pull,

Shuchir Jain 4 Aug 18, 2022
A command line tool to query source code from your current Python env

wxc wxc (pronounced "which") allows you to inspect source code in your Python environment from the command line. It is based on the inspect module fro

Clément Robert 13 Nov 08, 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
An awesome Python wrapper for an awesome Docker CLI!

An awesome Python wrapper for an awesome Docker CLI!

Gabriel de Marmiesse 303 Jan 03, 2023
Gitfetch is a simple tool to get github user details

Gitfetch Just a (cli?) tool to get github user details 🙂 Installation 📂 Install Gitfetch via pypi pip install gitfetch or pip install git+https://g

I'm Not A Bot #Left_TG 7 Jan 23, 2022
A Telegram Bot Written In Python To Upload Medias To telegra.ph

Telegraph-Uploader A Telegram Bot Written In Python To Upload Medias To telegra.ph DEPLOY YOU CAN SIMPLY DEPLOY ON HEROKU BY CLICKING THE BUTTON BELOW

Rithunand 31 Dec 03, 2022
This is a repository for collecting global custom management extensions for the Django Framework.

Django Extensions Django Extensions is a collection of custom extensions for the Django Framework. Getting Started The easiest way to figure out what

Django Extensions 6k Jan 03, 2023
A dec-bin converter uses 2's complement.

2's Complement Dec-Bin Converter A dec-bin converter uses 2's complement. Visit my Medium Post. What is 2's complement? Two's complement is the most c

C.H Jacky 9 Mar 01, 2022
TUIFIManager - A cross-platform terminal-based file manager

TUIFI Manager A cross-platform terminal-based file manager (and component), mean

142 Dec 26, 2022