Giter VIP home page Giter VIP logo

lib-router's Introduction

Arrow Banner

Arrow Router Library (Decommissioned)

โš ๏ธ This library is no longer under maintenance. The library has been integrated into svc-scheduler, further changes/features will be done as a part of svc-scheduler's development. You are still welcome to use this library on a standalone basis.

Rust Checks Python Flake8 Arrow DAO Discord

๐Ÿ”ญ Overview

The router library provides an engine for routing queries.

Under the hood, the router engine builds a graph of nodes and edges. A node represents a "stop" like a vertipad, vertiport, or a rooftop where aircraft can land and/or take off. An edge represents a "route" between two nodes. The router engine provides a number of functionalities to query the graph, such as finding the shortest path between two nodes, or finding all nodes within a certain distance of a given node (WIP).

Directory:

  • src/: Source Code and Unit Tests
  • tests/: Integration Tests
  • docs/: Library Documentation

โš™๏ธ Installation

Install Rust with Rustup.

cargo test

Make

Build and test

To ensure consistent build and test outputs, Arrow provides a Docker image with all required software installed to build and test Rust projects. Using the Makefile, you can easily test and build your code.

# Run tests
make test

# Run build
make build

Formatting

The Arrow docker image has some formatting tools installed which can fix your code formatting for you. Using the Makefile, you can easily run the formatters on your code. Make sure to commit your code before running these commands, as they might not always result in a desired outcome.

# Format TOML files
make toml-tidy

# Format Rust files
make rust-tidy

# Format Python files
make python-tidy

# Format all at once
make tidy

Other make targets

There are additional make targets available. You can find all possible targets by running make without a target or use make help

๐Ÿ“œ Documentation

The following documents are relevant to this library:

๐Ÿงญ Roadmap

Engine APIs:

  • add_node: Add a node to the graph
  • add_edge: Add an edge to the graph
  • remove_node: Remove a node from the graph
  • remove_edge: Remove an edge from the graph
  • get_node_by_uid: Get a node by its unique ID
  • get_edges_by_node_uid: Get all edges connected to a node
  • update_weight: Update the weight of an edge given two nodes
  • has_node: Check if a node exists in the graph (this can be achieved by calling the get_node_index function. If the node does not exist, it will just return None)
  • has_edge: Check if an edge exists in the graph
  • get_nodes_within_distance: Get all nodes within a certain distance of a given node This functionality is now expected to be implemented by the user.

Tests:

  • Integration tests.
  • Graphical representation: possibly using leaflet.js or similar.

๐Ÿ‘ฅ Arrow DAO

Learn more about us:

lib-router's People

Contributors

arrow-tf-github-repositories[bot] avatar goodluckh avatar romanmandryk avatar amsmith-pro avatar owlot avatar

Watchers

BenV avatar  avatar

lib-router's Issues

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.