Skip to main content

A fast, flexible and simple development environment framework for Ethereum smart contract, testing and deployment on Ethereum virtual machine(EVM). https://cobraframework.github.io

Project description

Build Status PyPI - Python Version PyPI License PyPI Version Coverage Status


A fast, flexible and simple development environment framework for Ethereum smart contract, testing and deployment on Ethereum virtual machine(EVM).

With cobra you can get built-in smart contract compilation, linking, deployment, binary management, automated contract testing with Unittest and PyTest frameworks, scriptable deployment & migrations framework and network management for deploying to many public & private networks like INFURA or Ganache CLI.

Dependency

This library requires the solc executable to be present.

Only versions >=0.4.2 are supported and tested though this library may work with other versions.

  • solc: Ethereum solidity compiler.
  • ganache-cli: A command-line version of Ethereum blockchain server.
  • pip: To install packages from the Python Package Index and other indexes.
  • python3: version 3.6 or greater.

Installation

PIP to install cobra globally. For Linux sudo may be required.

$ pip install py-cobra

Development

We welcome pull requests. To get started, just fork this repo, clone it locally, and run:

$ pip install -e . -r requirements.txt

Quick Usage

Initialize project structure

A default set of contract and tests, run the following command:

$ cobra init

Get help:

$ cobra --help

From there, you can run cobra compile, cobra deploy/migrate and cobra test --unittest/--pytest to compile your contracts, deploy those contracts to the network, and run their associated unit tests.

advanced cobra.yaml
compile:
  solidity_path: "./contracts" # global
  artifact_path: "./build/contracts"
  contracts: [
    contract: {
        solidity: "Contract.sol",
        solidity_path: "./contracts/libs", # detail
        import_remappings: [
          "=/path/folder/contracts/"
       ],
        allow_paths: [
          "/path/folder/contracts/"
        ]
    }
  ]

deploy:
  artifact_path: "./build/contracts/"
  contracts: [
    contract: {
        artifact: "Contract.json",
        links: ["Contract.json"]
    }
  ]

test:
  artifact_path: "./build/contracts/"
  test_paths: ["./tests"]
  contracts: [
    contract: {
        artifact: "Contract.json",
        links: ["Contract.json"]
    }
  ]

network:
  development: {
    url: "https://ropsten.infura.io/...",
    host: "localhost",
    port: 8545,
    hdwallet: {
        mnemonic: "decide adjust legend nation type same task aim rigid lucky guilt close", # or
        seed: "decide adjust legend nation type same task aim rigid lucky guilt close",
        password: "meherett",
        private: "5f8935bb3b61b312ba1114cbf6f1ea30102383f2b043a1b213aa482132d25049",
        gas: 3000000,
        gas_price: 1000000
    },
    protocol: "HTTP", # HTTP, HTTPS, WS(WebSocket) and ICP
    account: {
      address: "0x6a373a75c388ac2d160f1d2b6d9ada34f29831cd",
      gas: 3000000,
      gas_price: 1000000
    }
  }

Testing

Tests are still under development.

You can run the tests with:

$ pytest tests

Or use tox to run the complete suite against the full set of build targets, or pytest to run specific tests against a specific version of Python.

Meta

Meheret Tesfaye – @meherettmeherett@zoho.com

Distributed under the MIT license. See LICENSE for more information.

https://github.com/meherett

License

This project is licensed under the MIT License - see the LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-cobra-0.1.0.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

py_cobra-0.1.0-py3-none-any.whl (29.3 kB view details)

Uploaded Python 3

File details

Details for the file py-cobra-0.1.0.tar.gz.

File metadata

  • Download URL: py-cobra-0.1.0.tar.gz
  • Upload date:
  • Size: 23.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for py-cobra-0.1.0.tar.gz
Algorithm Hash digest
SHA256 610c44ee9ece7d56a42a4486eeba387e4bcafd81655d31a4d9f435a8c8e8e387
MD5 7b074f66b2128f9ceb68f84bcd6a348b
BLAKE2b-256 975e5c8d0a1635678a65b133d534ab6d70976e83faf1827a6cec96319d3d4f37

See more details on using hashes here.

File details

Details for the file py_cobra-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: py_cobra-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 29.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for py_cobra-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 76e5c67a05d410618adf1154b4c17dba8666e8a9c345f462170e029c8ad9e505
MD5 f8412fe008d2577ca5b62e9b92489c66
BLAKE2b-256 f846aaf0bbdd70d618507132a0ce37bf8ff7524b772286278376daa3f59545a8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page