GithubHelp home page GithubHelp logo

apalache-chai's People

Contributors

dependabot[bot] avatar thpani avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

konnov

apalache-chai's Issues

Add blocking interface

Enabling projects or use-cases to use the library without forcing them to work in async. Tho the MBT team is also planning to port their code base to use async, providing a blocking interface should be generally useful, and it could expedite their adoption.

If the work takes me more than 1 day, I'll de prioritize it for other work.

Factor the Apalache `.proto` files out into their own repo

The basic need is for a way of sharing the proto schemata between Apalache, Chai, and any subsequent libraries that may wish to use the them.

After reviewing several discussions around ways to share protobuf schemata between different cod bases, it looks like breaking the proto files into their own repo and using git submodules are likely the most lightweight and platform and stack agnostic approach.

Discussions I reviewed include the following:

Build and host API docs

This will important since the aim of this library is to be used by people who haven't been involved with it's development.

Add tutorial with small example

To help illustrate use, we will create a short tutorial with example code that
be run in integration tests.

The example should cover:

  • How to start the server.
  • How to instantiate a client.
  • How to obtain a connection to the server.
  • How to make RPC calls.
  • How to process data received from the RPC calls.

Use asyncio for the client

In MBT's most immediate use case, they're likely to want to to be able to call the client async, so that they can do other stuff while the server is processing expensive queries. Since it's quite easy to make async calls blocking, but takes more work to go the other way, we should start using asyncio in the client, and later write a blocking wrapper if needed.

Add decorator for RPC calls to ensure client has first obtained a connection

With the exception of the initial rpc call, connect (which is really more an extension of the grpc protocol for us), all other rpc calls presuppose that the client has first obtained a connection identifying its session. To enforce this contract, we will add a simple decorator method which we can put on the RPC methods of the Chai class in order to enforce this contract.

Find TLA dependencies on file system to send in `CmdExecutor` RPC calls

Requested by @informalsystems/mbt team during our check-in a few weeks back.

The idea:

Currently the CmdExecutor methods have a signature (spec:Input, aux:List[Input], config:Config) -> CmdExecutorResult, where spec is the main module of the model to check and aux are any auxiliary modules that are extended by the spec (or any of its dependencies).

However the MBT team said they would prefer if the client library took care of finding dependencies on disk and loading these up for transmission to to the server.

So we'll implement a family of methods *_from_file(spec: Path, config: Config) -> CmdExecutorResult which will search for the dependencies on the file system of the client before making the RPC call.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.