From 8b118bc364bd70abf7e844a569b308e3ae5a2cba Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 8 Jun 2020 10:30:52 -0400 Subject: [PATCH 01/17] Add 'CONTRIBUTING.md' --- CONTRIBUTING.md | 209 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..ccc03cc0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,209 @@ +# Contributing guidelines + +## Pull Request Checklist + +Before sending your pull requests, make sure you followed this list. + +- Read [contributing guidelines](CONTRIBUTING.md). +- Read [Code of Conduct](CODE_OF_CONDUCT.md). +- Ensure you have signed the [Contributor License Agreement (CLA)](https://cla.developers.google.com/). +- Check if my changes are consistent with the [guidelines](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). +- Changes are consistent with the [Coding Style](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#c-coding-style). +- Run [Unit Tests](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#running-unit-tests). + +## How to become a contributor and submit your own code + +### Contributor License Agreements + +We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](https://code.google.com/legal/individual-cla-v1.0.html). + * If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](https://code.google.com/legal/corporate-cla-v1.0.html). + +Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests. + +***NOTE***: Only original source code from you and other people that have signed the CLA can be accepted into the main repository. + +### Contributing code + +If you have improvements to TensorFlow, send us your pull requests! For those +just getting started, Github has a +[how to](https://help.github.com/articles/using-pull-requests/). + +TensorFlow team members will be assigned to review your pull requests. Once the +pull requests are approved and pass continuous integration checks, a TensorFlow +team member will apply `ready to pull` label to your change. This means we are +working on getting your pull request submitted to our internal repository. After +the change has been submitted internally, your pull request will be merged +automatically on GitHub. + +If you want to contribute, start working through the TensorFlow codebase, +navigate to the +[Github "issues" tab](https://github.com/tensorflow/tensorflow/issues) and start +looking through interesting issues. If you are not sure of where to start, then +start by trying one of the smaller/easier issues here i.e. +[issues with the "good first issue" label](https://github.com/tensorflow/tensorflow/labels/good%20first%20issue) +and then take a look at the +[issues with the "contributions welcome" label](https://github.com/tensorflow/tensorflow/labels/stat%3Acontributions%20welcome). +These are issues that we believe are particularly well suited for outside +contributions, often because we probably won't get to them right now. If you +decide to start on an issue, leave a comment so that other people know that +you're working on it. If you want to help out, but not alone, use the issue +comment thread to coordinate. + +### Contribution guidelines and standards + +Before sending your pull request for +[review](https://github.com/tensorflow/tensorflow/pulls), +make sure your changes are consistent with the guidelines and follow the +TensorFlow coding style. + +#### General guidelines and philosophy for contribution + +* Include unit tests when you contribute new features, as they help to a) + prove that your code works correctly, and b) guard against future breaking + changes to lower the maintenance cost. +* Bug fixes also generally require unit tests, because the presence of bugs + usually indicates insufficient test coverage. +* Keep API compatibility in mind when you change code in core TensorFlow, + e.g., code in + [tensorflow/core](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core) + and + [tensorflow/python](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python). + TensorFlow has passed version 1.0 and hence cannot make + non-backward-compatible API changes without a major release. Reviewers of + your pull request will comment on any API compatibility issues. +* When you contribute a new feature to TensorFlow, the maintenance burden is + (by default) transferred to the TensorFlow team. This means that the benefit + of the contribution must be compared against the cost of maintaining the + feature. +* Full new features (e.g., a new op implementing a cutting-edge algorithm) + typically will live in + [tensorflow/addons](https://github.com/tensorflow/addons) to get some + airtime before a decision is made regarding whether they are to be migrated + to the core. +* As every PR requires several CPU/GPU hours of CI testing, we discourage + submitting PRs to fix one typo, one warning,etc. We recommend fixing the + same issue at the file level at least (e.g.: fix all typos in a file, fix + all compiler warning in a file, etc.) +* Tests should follow the + [testing best practices](https://www.tensorflow.org/community/contribute/tests) + guide. + +#### License + +Include a license at the top of new files. + +* [C/C++ license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/op.cc#L1) +* [Python license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/nn.py#L1) +* [Java license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/java/src/main/java/org/tensorflow/Graph.java#L1) +* [Go license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/go/operation.go#L1) +* [Bash license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/ci_build/ci_sanity.sh#L2) +* [HTML license example](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/components/tf_backend/tf-backend.html#L2) +* [JavaScript/TypeScript license example](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/components/tf_backend/backend.ts#L1) + +Bazel BUILD files also need to include a license section, e.g., +[BUILD example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/BUILD#L61). + +#### C++ coding style + +Changes to TensorFlow C++ code should conform to +[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html). + +Use `clang-tidy` to check your C/C++ changes. To install `clang-tidy` on ubuntu:16.04, do: + +```bash +apt-get install -y clang-tidy +``` + +You can check a C/C++ file by doing: + + +```bash +clang-format --style=google > /tmp/my_cc_file.cc +diff /tmp/my_cc_file.cc +``` + +#### Python coding style + +Changes to TensorFlow Python code should conform to +[Google Python Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) + +Use `pylint` to check your Python changes. To install `pylint` and check a file +with `pylint` against TensorFlow's custom style definition: + +```bash +pip install pylint +pylint --rcfile=tensorflow/tools/ci_build/pylintrc myfile.py +``` + +Note `pylint --rcfile=tensorflow/tools/ci_build/pylintrc` should run from the +top level tensorflow directory. + +#### Coding style for other languages + +* [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) +* [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html) +* [Google Shell Style Guide](https://google.github.io/styleguide/shell.xml) +* [Google Objective-C Style Guide](https://google.github.io/styleguide/objcguide.html) + +#### Running sanity check + +If you have Docker installed on your system, you can perform a sanity check on +your changes by running the command: + +```bash +tensorflow/tools/ci_build/ci_build.sh CPU tensorflow/tools/ci_build/ci_sanity.sh +``` + +This will catch most license, Python coding style and BUILD file issues that +may exist in your changes. + +#### Running unit tests + +There are two ways to run TensorFlow unit tests. + +1. Using tools and libraries installed directly on your system. + + Refer to the + [CPU-only developer Dockerfile](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile) + and + [GPU developer Dockerfile](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile) + for the required packages. Alternatively, use the said + [Docker images](https://hub.docker.com/r/tensorflow/tensorflow/tags/), e.g., + `tensorflow/tensorflow:devel` and `tensorflow/tensorflow:devel-gpu` for + development to avoid installing the packages directly on your system (in + which case remember to change directory from `/root` to `/tensorflow` once + you get into the running container so `bazel` can find the `tensorflow` + workspace). + + Once you have the packages installed, you can run a specific unit test in + bazel by doing as follows: + + If the tests are to be run on GPU, add CUDA paths to LD_LIBRARY_PATH and add + the `cuda` option flag + + ```bash + export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH" + + export flags="--config=opt --config=cuda -k" + ``` + + For example, to run all tests under tensorflow/python, do: + + ```bash + bazel test ${flags} //tensorflow/python/... + ``` + +2. Using [Docker](https://www.docker.com) and TensorFlow's CI scripts. + + ```bash + # Install Docker first, then this will build and run cpu tests + tensorflow/tools/ci_build/ci_build.sh CPU bazel test //tensorflow/... + ``` + + See + [TensorFlow Builds](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/ci_build) + for details. From e2e2d7e5f552c94415ba46bd2208dab0219ba4fb Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 8 Jun 2020 10:31:36 -0400 Subject: [PATCH 02/17] Update 'LICENSE.md' --- LICENSE => LICENSE.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename LICENSE => LICENSE.md (100%) diff --git a/LICENSE b/LICENSE.md similarity index 100% rename from LICENSE rename to LICENSE.md From 3323bc410346f91f901cde816022817f1afee14d Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 8 Jun 2020 10:34:19 -0400 Subject: [PATCH 03/17] Add 'CODE_OF_CONDUCT.md' --- CODE_OF_CONDUCT.md | 129 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..eba53b6c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,129 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. From a70826c42611276429de1179bef22da8fa9cc791 Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 8 Jun 2020 10:37:09 -0400 Subject: [PATCH 04/17] Update 'CODE_OF_CONDUCT.md' Correct the contact information, we may need an email for this? --- CODE_OF_CONDUCT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index eba53b6c..ee7dddfd 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -61,7 +61,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -[INSERT CONTACT METHOD]. +guillermo.gutierrezmorote@concordia.ca. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the From 5a355f39080c633b24f36e87a1077685bcf8c141 Mon Sep 17 00:00:00 2001 From: Guille Date: Mon, 8 Jun 2020 10:50:55 -0400 Subject: [PATCH 05/17] Update 'README.md' Improve readme information --- README.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a8af6b53..488f388b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,19 @@ # libs -Libs is a generic repository containing the following classes +Libs is part of Insel4D architecture for the urban simulations, created by the CERC group at Concordia University. + +Libs repository contains a set of classes modeling the data for urban environments in the form of: * city_model_structure * geometry * physics -* usage \ No newline at end of file +* usages + +Released under [LGPL license](LICENSE.md), will provide an object-oriented, modular approach to urban simulations. + +Our aims are: + +* involve as many scientists and contributors as possible +* provide a complete set of classes that help scientists and students to model urban environments. + +Please check the [contributing information](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md) if you want to contribute, and let us know any new feature you may be of interest for you or your team. \ No newline at end of file From e9ebb5197d735d0fca916b0c2f909584a9cc692c Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:10:31 -0400 Subject: [PATCH 06/17] Update 'CONTRIBUTING.md' Improve the contributing guideline --- CONTRIBUTING.md | 196 +++++++++--------------------------------------- 1 file changed, 37 insertions(+), 159 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ccc03cc0..dafb5fb5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,64 +1,37 @@ # Contributing guidelines -## Pull Request Checklist +## Push Request Checklist Before sending your pull requests, make sure you followed this list. - Read [contributing guidelines](CONTRIBUTING.md). - Read [Code of Conduct](CODE_OF_CONDUCT.md). -- Ensure you have signed the [Contributor License Agreement (CLA)](https://cla.developers.google.com/). -- Check if my changes are consistent with the [guidelines](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). -- Changes are consistent with the [Coding Style](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#c-coding-style). -- Run [Unit Tests](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md#running-unit-tests). +- Check if my changes are consistent with the [guidelines](CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). +- Changes are consistent with the [Coding Style](CONTRIBUTING.md#coding-style). +- Run [Unit Tests](CONTRIBUTING.md#running-unit-tests). ## How to become a contributor and submit your own code ### Contributor License Agreements -We'd love to accept your patches! Before we can take them, we have to jump a couple of legal hurdles. +CERC Libs is released under [LGPL license](LICENSE.md) so even if we'd love to accept your patches, Before we can take them, please be sure that you are the intelectual property owner of your code and that do you fully understand and respect our software license. -Please fill out either the individual or corporate Contributor License Agreement (CLA). - - * If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](https://code.google.com/legal/individual-cla-v1.0.html). - * If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](https://code.google.com/legal/corporate-cla-v1.0.html). - -Follow either of the two links above to access the appropriate CLA and instructions for how to sign and return it. Once we receive it, we'll be able to accept your pull requests. - -***NOTE***: Only original source code from you and other people that have signed the CLA can be accepted into the main repository. +***NOTE***: Only original source code from you can be accepted into the main repository. ### Contributing code -If you have improvements to TensorFlow, send us your pull requests! For those -just getting started, Github has a -[how to](https://help.github.com/articles/using-pull-requests/). +If you have improvements to CERC Libs, or you want to extend the functionality, please send us your pull request as seen at [git pull request documentation](https://git-scm.com/docs/git-request-pull) -TensorFlow team members will be assigned to review your pull requests. Once the -pull requests are approved and pass continuous integration checks, a TensorFlow -team member will apply `ready to pull` label to your change. This means we are -working on getting your pull request submitted to our internal repository. After -the change has been submitted internally, your pull request will be merged -automatically on GitHub. -If you want to contribute, start working through the TensorFlow codebase, -navigate to the -[Github "issues" tab](https://github.com/tensorflow/tensorflow/issues) and start -looking through interesting issues. If you are not sure of where to start, then -start by trying one of the smaller/easier issues here i.e. -[issues with the "good first issue" label](https://github.com/tensorflow/tensorflow/labels/good%20first%20issue) -and then take a look at the -[issues with the "contributions welcome" label](https://github.com/tensorflow/tensorflow/labels/stat%3Acontributions%20welcome). -These are issues that we believe are particularly well suited for outside -contributions, often because we probably won't get to them right now. If you -decide to start on an issue, leave a comment so that other people know that -you're working on it. If you want to help out, but not alone, use the issue -comment thread to coordinate. +Once the pull requests are approved and pass continuous integration checks, a team member will apply `ready to pull` label to your change and your pull request will be merged on CERC Libs and become an integral part of Insel4D platform. + +If you prefer to contribute, instead to add a new functionality you can also take a look into our ticket system and try to fix any of the listed issues. ### Contribution guidelines and standards -Before sending your pull request for -[review](https://github.com/tensorflow/tensorflow/pulls), +Before sending your pull request for review, make sure your changes are consistent with the guidelines and follow the -TensorFlow coding style. +CERC Libs coding style. #### General guidelines and philosophy for contribution @@ -67,143 +40,48 @@ TensorFlow coding style. changes to lower the maintenance cost. * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. -* Keep API compatibility in mind when you change code in core TensorFlow, - e.g., code in - [tensorflow/core](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core) - and - [tensorflow/python](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python). - TensorFlow has passed version 1.0 and hence cannot make - non-backward-compatible API changes without a major release. Reviewers of - your pull request will comment on any API compatibility issues. -* When you contribute a new feature to TensorFlow, the maintenance burden is - (by default) transferred to the TensorFlow team. This means that the benefit - of the contribution must be compared against the cost of maintaining the - feature. -* Full new features (e.g., a new op implementing a cutting-edge algorithm) - typically will live in - [tensorflow/addons](https://github.com/tensorflow/addons) to get some - airtime before a decision is made regarding whether they are to be migrated - to the core. -* As every PR requires several CPU/GPU hours of CI testing, we discourage - submitting PRs to fix one typo, one warning,etc. We recommend fixing the - same issue at the file level at least (e.g.: fix all typos in a file, fix - all compiler warning in a file, etc.) +* Keep backward compatibility in mind when you change code in CERC Libs and +if you need to broke the backward compatibility please ensure that you:. +..* Clearly indicate which features are affected by your changes. +..* Technical reasons for the changes. * Tests should follow the - [testing best practices](https://www.tensorflow.org/community/contribute/tests) + [testing best practices](CONTRIBUTING.md#testing_best_practices) guide. +* [Document your contribution](CONTRIBUTING.md#documentation) #### License -Include a license at the top of new files. - -* [C/C++ license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/op.cc#L1) -* [Python license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/nn.py#L1) -* [Java license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/java/src/main/java/org/tensorflow/Graph.java#L1) -* [Go license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/go/operation.go#L1) -* [Bash license example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/ci_build/ci_sanity.sh#L2) -* [HTML license example](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/components/tf_backend/tf-backend.html#L2) -* [JavaScript/TypeScript license example](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/components/tf_backend/backend.ts#L1) - -Bazel BUILD files also need to include a license section, e.g., -[BUILD example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/BUILD#L61). - -#### C++ coding style - -Changes to TensorFlow C++ code should conform to -[Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html). - -Use `clang-tidy` to check your C/C++ changes. To install `clang-tidy` on ubuntu:16.04, do: - -```bash -apt-get install -y clang-tidy -``` - -You can check a C/C++ file by doing: - - -```bash -clang-format --style=google > /tmp/my_cc_file.cc -diff /tmp/my_cc_file.cc -``` +At the top of any new file a small header with author contact information and the license information should be included. + """ + Name module + SPDX - License - Identifier: LGPL - 3.0 - or -later + Copyright © 2020 Project Author name mail@concordia.ca + """ + + #### Python coding style -Changes to TensorFlow Python code should conform to -[Google Python Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) +Changes to CERC Libs python code should conform to our coding style +[Cerc Python Style Guide](PYGUIDE.md) Use `pylint` to check your Python changes. To install `pylint` and check a file -with `pylint` against TensorFlow's custom style definition: +with `pylint` against Cerc custom style definition: ```bash pip install pylint -pylint --rcfile=tensorflow/tools/ci_build/pylintrc myfile.py +pylint --rcfile=pylintrc myfile.py ``` -Note `pylint --rcfile=tensorflow/tools/ci_build/pylintrc` should run from the -top level tensorflow directory. -#### Coding style for other languages +#### Testing best practices -* [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) -* [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html) -* [Google Shell Style Guide](https://google.github.io/styleguide/shell.xml) -* [Google Objective-C Style Guide](https://google.github.io/styleguide/objcguide.html) +Prior to any pull request is expected that the code is both, manualy and automatically tested, to ensure at least some quality minimum, there are a few practices for unittest that we believe are important, so we encorage you to follow it. -#### Running sanity check +* Test should be self contained, that implies that test preparation and cleaning up is performed at the before and after the test execution. +* We encorage you to create if possible functional tests that cover the complete workflow of the implemented functionality +* Maximize your code coverage by ensure that you are testing as much of your code as possible. -If you have Docker installed on your system, you can perform a sanity check on -your changes by running the command: +#### Documentation -```bash -tensorflow/tools/ci_build/ci_build.sh CPU tensorflow/tools/ci_build/ci_sanity.sh -``` - -This will catch most license, Python coding style and BUILD file issues that -may exist in your changes. - -#### Running unit tests - -There are two ways to run TensorFlow unit tests. - -1. Using tools and libraries installed directly on your system. - - Refer to the - [CPU-only developer Dockerfile](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/dockerfiles/dockerfiles/devel-cpu.Dockerfile) - and - [GPU developer Dockerfile](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/dockerfiles/dockerfiles/devel-gpu.Dockerfile) - for the required packages. Alternatively, use the said - [Docker images](https://hub.docker.com/r/tensorflow/tensorflow/tags/), e.g., - `tensorflow/tensorflow:devel` and `tensorflow/tensorflow:devel-gpu` for - development to avoid installing the packages directly on your system (in - which case remember to change directory from `/root` to `/tensorflow` once - you get into the running container so `bazel` can find the `tensorflow` - workspace). - - Once you have the packages installed, you can run a specific unit test in - bazel by doing as follows: - - If the tests are to be run on GPU, add CUDA paths to LD_LIBRARY_PATH and add - the `cuda` option flag - - ```bash - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH" - - export flags="--config=opt --config=cuda -k" - ``` - - For example, to run all tests under tensorflow/python, do: - - ```bash - bazel test ${flags} //tensorflow/python/... - ``` - -2. Using [Docker](https://www.docker.com) and TensorFlow's CI scripts. - - ```bash - # Install Docker first, then this will build and run cpu tests - tensorflow/tools/ci_build/ci_build.sh CPU bazel test //tensorflow/... - ``` - - See - [TensorFlow Builds](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/ci_build) - for details. +In case of new functionality a general overview, configuration, instalation and usage manuals need to be provided by the developer, this will not only provide a nice starting point for all the future users but help you to detect any inconsistences in your design. From fa5245181d30601b1c45f8ea9955f27264f29dc4 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:12:55 -0400 Subject: [PATCH 07/17] Update 'CONTRIBUTING.md' Correct the manual --- CONTRIBUTING.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dafb5fb5..8050db0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,8 @@ Before sending your pull requests, make sure you followed this list. - Read [Code of Conduct](CODE_OF_CONDUCT.md). - Check if my changes are consistent with the [guidelines](CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). - Changes are consistent with the [Coding Style](CONTRIBUTING.md#coding-style). -- Run [Unit Tests](CONTRIBUTING.md#running-unit-tests). +- Manually test your code and add [Unit Tests](CONTRIBUTING.md#testing_best_practices). +- [Document your work](CONTRIBUTING.md#documentation). ## How to become a contributor and submit your own code @@ -73,8 +74,8 @@ pip install pylint pylint --rcfile=pylintrc myfile.py ``` - -#### Testing best practices + +#### Testing best practices Prior to any pull request is expected that the code is both, manualy and automatically tested, to ensure at least some quality minimum, there are a few practices for unittest that we believe are important, so we encorage you to follow it. @@ -82,6 +83,7 @@ Prior to any pull request is expected that the code is both, manualy and automat * We encorage you to create if possible functional tests that cover the complete workflow of the implemented functionality * Maximize your code coverage by ensure that you are testing as much of your code as possible. -#### Documentation + +#### Documentation In case of new functionality a general overview, configuration, instalation and usage manuals need to be provided by the developer, this will not only provide a nice starting point for all the future users but help you to detect any inconsistences in your design. From a91a8733f1f338b688340bbfec72141d306af87f Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:14:22 -0400 Subject: [PATCH 08/17] Update 'CONTRIBUTING.md' add anchors --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8050db0f..02c87642 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,7 +9,7 @@ Before sending your pull requests, make sure you followed this list. - Check if my changes are consistent with the [guidelines](CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). - Changes are consistent with the [Coding Style](CONTRIBUTING.md#coding-style). - Manually test your code and add [Unit Tests](CONTRIBUTING.md#testing_best_practices). -- [Document your work](CONTRIBUTING.md#documentation). +- [Document your work](CONTRIBUTING.md#markdown-header-documentation). ## How to become a contributor and submit your own code @@ -83,7 +83,6 @@ Prior to any pull request is expected that the code is both, manualy and automat * We encorage you to create if possible functional tests that cover the complete workflow of the implemented functionality * Maximize your code coverage by ensure that you are testing as much of your code as possible. - #### Documentation In case of new functionality a general overview, configuration, instalation and usage manuals need to be provided by the developer, this will not only provide a nice starting point for all the future users but help you to detect any inconsistences in your design. From 455d09f00ebfc2f20881bf301b05c3d5333d3894 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:17:48 -0400 Subject: [PATCH 09/17] Update 'CONTRIBUTING.md' Fix code anchors --- CONTRIBUTING.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 02c87642..382b832b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,10 +6,10 @@ Before sending your pull requests, make sure you followed this list. - Read [contributing guidelines](CONTRIBUTING.md). - Read [Code of Conduct](CODE_OF_CONDUCT.md). -- Check if my changes are consistent with the [guidelines](CONTRIBUTING.md#general-guidelines-and-philosophy-for-contribution). -- Changes are consistent with the [Coding Style](CONTRIBUTING.md#coding-style). -- Manually test your code and add [Unit Tests](CONTRIBUTING.md#testing_best_practices). -- [Document your work](CONTRIBUTING.md#markdown-header-documentation). +- Check if my changes are consistent with the [guidelines](CONTRIBUTING.md#user-content-general-guidelines-and-philosophy-for-contribution). +- Changes are consistent with the [Coding Style](CONTRIBUTING.md#user-content-coding-style). +- Manually test your code and add [Unit Tests](CONTRIBUTING.md#user-content-testing-best-practices). +- [Document your work](CONTRIBUTING.md#user-content-documentation). ## How to become a contributor and submit your own code @@ -61,12 +61,14 @@ At the top of any new file a small header with author contact information and th """ -#### Python coding style +#### Coding style Changes to CERC Libs python code should conform to our coding style [Cerc Python Style Guide](PYGUIDE.md) -Use `pylint` to check your Python changes. To install `pylint` and check a file +But as a general basis all contributions need to be focus in the concept of code clarity and use `pylint` to check your Python changes. + +To install `pylint` and check a file with `pylint` against Cerc custom style definition: ```bash From b0cdef2ea2a62968397dde99baf8accd35269f42 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:19:14 -0400 Subject: [PATCH 10/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 382b832b..53247c46 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,9 +46,9 @@ if you need to broke the backward compatibility please ensure that you:. ..* Clearly indicate which features are affected by your changes. ..* Technical reasons for the changes. * Tests should follow the - [testing best practices](CONTRIBUTING.md#testing_best_practices) + [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. -* [Document your contribution](CONTRIBUTING.md#documentation) +* [Document your contribution](CONTRIBUTING.md#user-content-documentation) #### License @@ -76,7 +76,6 @@ pip install pylint pylint --rcfile=pylintrc myfile.py ``` - #### Testing best practices Prior to any pull request is expected that the code is both, manualy and automatically tested, to ensure at least some quality minimum, there are a few practices for unittest that we believe are important, so we encorage you to follow it. From bfd8c10bff81e898a4b6b1bc579bae762f9ff0dc Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:41:27 -0400 Subject: [PATCH 11/17] Update 'CONTRIBUTING.md' check grammar and typo correction --- CONTRIBUTING.md | 50 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 53247c46..5bb9632f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,36 +15,32 @@ Before sending your pull requests, make sure you followed this list. ### Contributor License Agreements -CERC Libs is released under [LGPL license](LICENSE.md) so even if we'd love to accept your patches, Before we can take them, please be sure that you are the intelectual property owner of your code and that do you fully understand and respect our software license. +CERC Libs is an [LGPL licensed](LICENSE.md) software, so even if we'd love to accept your patches, Before we can take them, please be sure that you are the intellectual property owner of your code and that do you fully understand and respect our software license. -***NOTE***: Only original source code from you can be accepted into the main repository. +***NOTE***: Only source code that you own will go into the main repository. ### Contributing code -If you have improvements to CERC Libs, or you want to extend the functionality, please send us your pull request as seen at [git pull request documentation](https://git-scm.com/docs/git-request-pull) +If you have improvements to CERC Libs or want to extend the functionality, please send us your pull request as seen at [git pull request documentation](https://git-scm.com/docs/git-request-pull) +Once the pull requests are approved and pass continuous integration checks, a team member will merge your changes on CERC Libs, and your code will become an integral part of Insel4D platform. -Once the pull requests are approved and pass continuous integration checks, a team member will apply `ready to pull` label to your change and your pull request will be merged on CERC Libs and become an integral part of Insel4D platform. - -If you prefer to contribute, instead to add a new functionality you can also take a look into our ticket system and try to fix any of the listed issues. +If you prefer to contribute, instead of adding new functionality, you can also take a look at our ticket system and try to fix any of the listed issues. ### Contribution guidelines and standards -Before sending your pull request for review, -make sure your changes are consistent with the guidelines and follow the -CERC Libs coding style. +Before sending your pull request for review, make sure your changes are consistent with the guidelines, and follow the CERC Libs coding style. #### General guidelines and philosophy for contribution -* Include unit tests when you contribute new features, as they help to a) - prove that your code works correctly, and b) guard against future breaking - changes to lower the maintenance cost. -* Bug fixes also generally require unit tests, because the presence of bugs - usually indicates insufficient test coverage. -* Keep backward compatibility in mind when you change code in CERC Libs and -if you need to broke the backward compatibility please ensure that you:. -..* Clearly indicate which features are affected by your changes. -..* Technical reasons for the changes. +* Include unit tests when you contribute new features, as they help to: +..1. prove that your code works correctly. +..2. guard against future breaking changes to lower the maintenance cost. +* Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. +* Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: +. +..1. Clearly indicate which features are affected by your changes. +..2. Technical reasons for the changes. * Tests should follow the [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. @@ -52,7 +48,7 @@ if you need to broke the backward compatibility please ensure that you:. #### License -At the top of any new file a small header with author contact information and the license information should be included. +Include a small header with contact information and the code license at the top of any new file like in the following example. """ Name module @@ -63,10 +59,10 @@ At the top of any new file a small header with author contact information and th #### Coding style -Changes to CERC Libs python code should conform to our coding style -[Cerc Python Style Guide](PYGUIDE.md) +Changes to CERC Libs python code should conform to our coding style [Cerc Python Style Guide](PYGUIDE.md) -But as a general basis all contributions need to be focus in the concept of code clarity and use `pylint` to check your Python changes. +As a general basis, all contributions need to be focused on the concept of code clarity and use pylint to check your Python changes. +To install pylint and check your files against Cerc custom style definition: To install `pylint` and check a file with `pylint` against Cerc custom style definition: @@ -78,12 +74,12 @@ pylint --rcfile=pylintrc myfile.py #### Testing best practices -Prior to any pull request is expected that the code is both, manualy and automatically tested, to ensure at least some quality minimum, there are a few practices for unittest that we believe are important, so we encorage you to follow it. +Before any pull request, the code must been manually and automatically tested to ensure at least some quality minimum. There are a few practices for unit tests that we believe are important, so we encourage you to follow it. -* Test should be self contained, that implies that test preparation and cleaning up is performed at the before and after the test execution. -* We encorage you to create if possible functional tests that cover the complete workflow of the implemented functionality -* Maximize your code coverage by ensure that you are testing as much of your code as possible. +* The test should be self-contained, which implies that your tests will prepare and clean up everything before and after the test execution. +* We encourage you to create if possible functional tests that cover the complete workflow of the implemented functionality. +* Maximize your code coverage by ensuring that you are testing as much of your code as possible. #### Documentation -In case of new functionality a general overview, configuration, instalation and usage manuals need to be provided by the developer, this will not only provide a nice starting point for all the future users but help you to detect any inconsistences in your design. +In case of new functionality, a general overview, configuration, installation, and user manuals need to be provided by the developer; this will provide an excellent starting point for all the future users and help you detect any inconsistencies in your design. From faaa2a7c798c462b7bd97cf5faebd53b11d23baa Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:43:49 -0400 Subject: [PATCH 12/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5bb9632f..6198e3a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,13 +34,13 @@ Before sending your pull request for review, make sure your changes are consiste #### General guidelines and philosophy for contribution * Include unit tests when you contribute new features, as they help to: -..1. prove that your code works correctly. -..2. guard against future breaking changes to lower the maintenance cost. + * prove that your code works correctly. + * guard against future breaking changes to lower the maintenance cost. * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. * Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: -. -..1. Clearly indicate which features are affected by your changes. -..2. Technical reasons for the changes. + + * Clearly indicate which features are affected by your changes. + * Technical reasons for the changes. * Tests should follow the [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. From 73512f493d202db6e544f1f7cc5f8b5a37241362 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:45:17 -0400 Subject: [PATCH 13/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6198e3a9..2aae132f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,13 +34,13 @@ Before sending your pull request for review, make sure your changes are consiste #### General guidelines and philosophy for contribution * Include unit tests when you contribute new features, as they help to: - * prove that your code works correctly. - * guard against future breaking changes to lower the maintenance cost. +1. Prove that your code works correctly. +2. Guard against future breaking changes to lower the maintenance cost. * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. * Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: - * Clearly indicate which features are affected by your changes. - * Technical reasons for the changes. +1. Clearly indicate which features are affected by your changes. +2. Technical reasons for the changes. * Tests should follow the [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. From 1cf0a9d8db3e24df1d7f662f709f44a6a66457da Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:47:06 -0400 Subject: [PATCH 14/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2aae132f..9a656874 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,8 +34,8 @@ Before sending your pull request for review, make sure your changes are consiste #### General guidelines and philosophy for contribution * Include unit tests when you contribute new features, as they help to: -1. Prove that your code works correctly. -2. Guard against future breaking changes to lower the maintenance cost. + * Prove that your code works correctly. + * Guard against future breaking changes to lower the maintenance cost. * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. * Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: From f94d92e39e547b22f545078533264f1a4ef36656 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:47:48 -0400 Subject: [PATCH 15/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9a656874..0482f316 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,11 +36,12 @@ Before sending your pull request for review, make sure your changes are consiste * Include unit tests when you contribute new features, as they help to: * Prove that your code works correctly. * Guard against future breaking changes to lower the maintenance cost. + * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. * Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: - -1. Clearly indicate which features are affected by your changes. -2. Technical reasons for the changes. + * Clearly indicate which features are affected by your changes. + * Technical reasons for the changes. + * Tests should follow the [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. From dbf3aa0e400e7e7f69ff99b03419c207cd0e309e Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 08:48:16 -0400 Subject: [PATCH 16/17] Update 'CONTRIBUTING.md' --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0482f316..9f093ccb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,11 +37,13 @@ Before sending your pull request for review, make sure your changes are consiste * Prove that your code works correctly. * Guard against future breaking changes to lower the maintenance cost. + * Bug fixes also generally require unit tests, because the presence of bugs usually indicates insufficient test coverage. * Keep backward compatibility in mind when you change code in CERC Libs, and if you need to broke the backward compatibility, please ensure that you: * Clearly indicate which features are affected by your changes. * Technical reasons for the changes. + * Tests should follow the [testing best practices](CONTRIBUTING.md#user-content-testing-best-practices) guide. From 029157b754014b194d1a2ad557342ef5ca9a1389 Mon Sep 17 00:00:00 2001 From: Guille Date: Tue, 9 Jun 2020 10:22:20 -0400 Subject: [PATCH 17/17] Add 'PYGUIDE.md' --- PYGUIDE.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 PYGUIDE.md diff --git a/PYGUIDE.md b/PYGUIDE.md new file mode 100644 index 00000000..0f1e27b3 --- /dev/null +++ b/PYGUIDE.md @@ -0,0 +1,22 @@ +# Cerc Python Style Guide +## What's coding style and why it matters + +Coding style is just how the code looks, it's incredibly personal, and everyone has their style. + +Your preferred architectures, variable and function naming style all of then impacts in your code style and how the others read and understand it, so it could become a significant burden if everyone is coding on his own. + +At CERC we are following the [PEP8](https://www.python.org/dev/peps/pep-0008/) with two spaces indentation instead of four. + +## Tools. + +We use [PyCharm](https://www.jetbrains.com/pycharm/) as an integrated development environment and follow the tool's overall advice but the space indentation, which we set to two spaces instead of default four spaces. + +For code analysis, we enforce the usage of [pylint](https://www.pylint.org/) with our own [custom style definition](pylintrc) + +## Naming convention + +* Name your folders and files in lowercase. +* Your class names must start in capital letters and follow the python CapWords pattern. +* Methods and properties that return lists must end in "s". +* Constants names must be all capitals. +* Avoid the usage of "get_" and "set_" methods whenever possible, by using @property and @variable.setter decorators instead. \ No newline at end of file