Giter Club home page Giter Club logo

pydatastructs's Introduction

PyDataStructs

Build Status Join the chat at https://gitter.im/codezonediitj/pydatastructs Discuss at pydatastructs@googlegroups.com contributions welcome codecov

About

Currently, the project aims to be a Python package for various data structures in computer science. Besides, we are also working on including parallel algorithms. To the best of our knowledge, a well-designed library/package which has covered most of the data structures and algorithms including their parallel implementation doesn't exist.

In future, i.e, after a few releases of the package when the software design will become stable, we also aim to provide APIs for the code in C++ and Java as well.

Installation

You can install the library by running the following command,

python3 setup.py install

For development purposes, you can use the option develop as shown below,

python3 setup.py develop

Make sure that your python version is above 3.5.

Testing

For testing your patch locally follow the steps given below,

  1. Install pytest-cov. Skip this step if you are already having the package.
  2. Run, python3 -m pytest --doctest-modules --cov=./ --cov-report=html. Look for, htmlcov/index.html and open it in your browser, which will show the coverage report. Try to ensure that the coverage is not decreasing by more than 1% for your patch.

For a good visualisation of the different data structures and algorithms, refer the following websites:

Why we use Python?

As we know Python is an interpreted language and hence is slow as compared to C++, the most popular language for sports programming. We still decided to use Python because the software development can happen at a much faster pace and it is much easier to test various software designs and APIs as coding them out takes no time. However, keeping the need of the users in mind, we will shift to C++ backend, which will happen quickly as we would be required to just translate the tested code rather than writing it from scratch, after a few releases with APIs available for all the languages.

How to contribute?

Follow the steps given below,

  1. Fork, https://github.com/codezonediitj/pydatastructs/
  2. Execute, git clone https://github.com/codezonediitj/pydatastructs/
  3. Change your working directory to ../pydatastructs.
  4. Execute, git remote add origin_user https://github.com/<your-github-username>/pydatastructs/
  5. Execute, git checkout -b <your-new-branch-for-working>.
  6. Make changes to the code.
  7. Add your name and email to the AUTHORS, if you wish to.
  8. Execute, git add ..
  9. Execute, git commit -m "your-commit-message".
  10. Execute, git push origin_user <your-current-branch>.
  11. Make PR.

That's it, 10 easy steps for your first contribution. For future contributions just follow steps 5 to 10. Make sure that before starting work, always checkout to master and pull the recent changes using the remote origin and then start following steps 5 to 10.

See you soon with your first PR.

It is recommended to go through the following links before you start working.

Guidelines

We recommend you to join our gitter channel for dicussing anything related to the project.

Please follow the rules and guidelines given below,

  1. Follow the numpydoc docstring guide.
  2. If you are planning to contribute a new data structure then first raise an issue for discussing the API, rather than directly making a PR.
  3. For the first-time contributors we recommend not to take a complex data structure, rather start with beginner or easy.

The following parameters are to be followed to pass the code quality tests for your Pull Requests,

  1. There should not be any trailing white spaces at any line of code.
  2. Each .py file should end with exactly one new line.
  3. Comparisons involving True, False and None should be done by reference (using is, is not) and not by value(==, !=).

Keep contributing!!

pydatastructs's People

Contributors

czgdp1807 avatar harsheetkakar avatar prshnt19 avatar iamrajiv avatar saptashrungi avatar taruntomar122 avatar aimaanhasan avatar arathyrose avatar din1881 avatar jprillaman avatar manaswinidas avatar neelavachatterjee avatar vpuru98 avatar raajtilaksarma avatar riyagoel2 avatar shebinjoseph avatar vanshika266 avatar vibhu18116 avatar abhishektandon-github avatar aravind-karthikeyan avatar sar99 avatar udhayacommits avatar

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.