Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[New Concept Documents] : comparisons concept #2456 #2733

Merged
merged 47 commits into from
Nov 15, 2021
Merged

[New Concept Documents] : comparisons concept #2456 #2733

merged 47 commits into from
Nov 15, 2021

Conversation

gurupratap-matharu
Copy link
Contributor

This PR adds documentation for the Comparisons concept on the python track.

The following files are updated

  • ./meta/config.json
  • introduction.md
  • about.md
  • links.json

@github-actions
Copy link
Contributor

github-actions bot commented Nov 8, 2021

Hi & Welcome! 👋🏽 👋

Thank you for contributing to exercism/python 💛 💙 -- we really appreciate it! 🌟 🌈


This is an automated [🤖 🤖  ] comment for the maintainers of this repository, notifying them of your contribution. 🎉
  Someone will review/reply to your changes shortly. (usually within 72 hours.)
You can safely ignore the maintainers section below.


⚠️  Please be aware ⚠️

     This repo does not generally accept Pull Requests unless they follow our contributing guidelines and are:

     1️⃣     Small, contained fixes for typos/grammar/punctuation/code syntax on [one] exercise,
     2️⃣     Medium changes that have been agreed/discussed via a filed issue,
     3️⃣     Contributions from our [help wanted][help-wanted] issue list,
     4️⃣     Larger (previously agreed-upon) contributions from recent & regular (within the last 6 months) contributors.

    Pull Requests not in these categories will be closed. 😞



💙 It looks like you are changing/adding files in a Concept Exercise! 💙


‼️  Did You...

  •  Update & rebase your branch with any (recent) upstream changes.
  •  Spell and grammar check all prose changes.
  •  Run Prettier on all markdown and JSON files.
  •  Run flake8 with flake8 config to check general code style standards.
  •   Run pylint with pylint config to check extended code style standards.
  •  Use pytest or the python-track-test-runner to test any changed example.py/exemplar.pyfiles
     against their associated test files.
  •  Similarly, use pytest or the python-track-test-runner to test any changed test files.
    • Check that tests fail properly, as well as succeed.
       (e.g., make some tests fail on purpose to "test the tests" & failure messages).
  •  Double-check all files for proper EOL.
  •  Regenerate exercise documents when you modified or created a hints.md file for a practice exercise.
  •  Regenerate the test file if you modified or created a JinJa2 template file for a practice exercise.
    • Run the generated test file result against its example.py.
  •  Run configlet-lint if the track config.json, or any other exercise config.json has been modified.


✅️  Have You Checked:

.
Are there any additional changes you need to make?
Please make sure all associated files are present and consistent with your changes!

Concept Exercise Anatomy

  • .docs/hints.md
  • .docs/instructions.md
  • .docs/introduction.md
  • .meta/config.json
  • .meta/design.md
  • .meta/exemplar.py (exemplar solution)
  • <exercise-slug>_test.py (test file)
  • <exercise-slug>.py (stub file)
  • concepts/../introduction.md
  • concepts/../about.md
  • concepts/../links.json
  • concepts/../.meta/config.json

🛠️    Maintainers   

Please take note 📒 of the following sections/review items 👀 ✨



🌈  Acknowledgements and Reputation
  • ❓ Does this PR need to receive a label with a reputation modifier?
    • medium is awarded by default.
  • ❓ Does this contributor need to be added to the exercise authors or contributors?
  • ❓ Does this contributor need to be added to the concept authors or contributors?
  • ❓ Is there an associated issue or issues that should be linked to this PR?
💫  General Code Quality

    Verify:

    •  The branch was updated & rebased with any (recent) upstream changes.
    •  All prose was checked for spelling and grammar.
    •  Files are formatted via yapf (yapf config) & conform to our coding standards
    •  Files pass flake8 with flake8 config & pylint with pylint config.
    •  Changed example.py/exemplar.py files still pass their associated test files.
    •  Changed test files still work with associated example.py/exemplar.py files.
      • Check that tests fail properly, as well as succeed.
        (e.g., make some tests fail on purpose to "test the tests" & failure messages).
    •  All files have proper EOL.
    •  If a JinJa2 template was modified/created, was the test file regenerated?
      • Does the regenerated test file successfully test the exercises example.py file?
    •  The branch passes all CI checks & configlet-lint.


🌿  Changes to Concept Exercises
  • ❓ Are all required files still up-to-date & configured correctly for this change?_
  • ❓ Does <exercise>/.meta/design.md need to be updated with new implementation/design decisions
  • ❓ Do these changes require follow-on/supporting changes to related concept documents?
    ✨  Where applicable, check the following ✨

      (as a reminder: Concept Exercise Anatomy)

      • Exercise introduction.md
        • Do all code examples compile, run, and return the shown output?
        • Are all the code examples formatted per the Python docs?
      • Exercise instructions.md
      • Exercise hints.md
      • Check that exercise design.md was fulfilled or edited appropriately
      • Exercise exemplar.py
        • Only uses syntax previously introduced or explained.
        • Is correct and appropriate for the exercise and story.
      • Exercise <exercise_name>.py (stub)
        • Includes appropriate docstrings and function names.
        • Includes pass for each function
        • Includes an EOL at the end
      • Exercise <exercise_name>_test.py
        • Tests cover all (reasonable) inputs and scenarios
        • At least one test for each task in the exercise
        • If using subtests or fixtures they're formatted correctly for the runner
        • Classnames are <ExerciseName>Test
        • Test functions are test_<test_name>
      • Exercise config.json --> valid UUID4
      • Corresponding concept introduction.md
      • Corresponding concept about.md
      • Concept config.json
      • All Markdown Files : Prettier linting (for all markdown docs)
      • All Code files: PyLint linting (except for test files)
      • All files with text: Spell check & grammar review.
🚀  Changes to Practice Exercises

    Is the exercise is in line with Practice Exercise Anatomy?

    • .docs/instructions.md(required)
      • Was this file updated and regenerated properly?
    • .docs/introduction.md(optional)
    • .docs/introduction.append.md(optional)
    • .docs/instructions.append.md (optional)
      • Are any additional instructions needed/provided?
         (e.g. error handling or information on classes)
    • .docs/hints.md(optional)
      • Was this file regenerated properly?
    • .meta/config.json (required)
    • .meta/example.py (required)
      • Does this pass all the current tests as written/generated?
    • .meta/design.md (optional)
    • .meta/template.j2 (template for generating tests from canonical data)
      • Was a test file properly regenerated from this template?
    • .meta/tests.toml
      • Are there additional test cases to include or exclude?
      • Are there any Python-specific test cases needed for this exercise?
    • <exercise-slug>_test.py
      • Does this file need to be regenerated?
      • Does this file correctly test the example.py file?
      • Does this file correctly report test failures and messages?
    • <exercise-slug>.py (required)
      • Does this stub have enough information to get
         the student started coding a valid solution?
🐣  Brand-New Concept Exercises

    Is the exercise is in line with Concept Exercise Anatomy?

    • Exercise introduction.md
      • Do all code examples compile, run, and return the shown output?
      • Are all the code examples formatted per the Python docs?
    • Exercise instructions.md
    • Exercise hints.md
    • Check that exercise design.md was fulfilled or edited appropriately
    • Exercise exemplar.py
      • Only uses syntax previously introduced or explained.
      • Is correct and appropriate for the exercise and story.
    • Exercise <exercise_name>.py (stub)
      • Includes appropriate docstrings and function names.
      • Includes pass for each function
      • Includes an EOL at the end
    • Exercise <exercise_name>_test.py
      • Tests cover all (reasonable) inputs and scenarios
      • At least one test for each task in the exercise
      • If using subtests or fixtures they're formatted correctly for the runner
      • Classnames are <ExerciseName>Test
      • Test functions are test_<test_name>
    • Exercise config.json --> valid UUID4
    • Corresponding concept introduction.md
    • Corresponding concept about.md
    • Concept config.json
    • All Markdown Files : Prettier linting (for all markdown docs)
    • All Code files: Flake8 & PyLint linting
    • All Code Examples: proper formatting and fencing. Verify they run in the REPL
    • All files with text: Spell check & grammar review.


Our   💖   for all your review efforts! 🌟 🦄

@BethanyG BethanyG linked an issue Nov 8, 2021 that may be closed by this pull request
concepts/comparisons/about.md Outdated Show resolved Hide resolved
True
>>> 5 == 5
True
>>> 6 != 6 # not equal to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line-end comments should have two spaces before the #

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. Done

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not seeing the change. Did you forget to push it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just pushed it. Check now

concepts/comparisons/about.md Show resolved Hide resolved
concepts/comparisons/about.md Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
Copy link
Member

@BethanyG BethanyG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gurupratap-matharu - This is awesome work! Thank you so much for submitting this PR. 🌟 I do have some requested and suggested changes. Please feel free to disagree, or to discuss or ask any questions. 😄 Apologies for taking so long with the review.

concepts/comparisons/.meta/config.json Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved

The operators `in` and `not in` test for membership. `a` in `s` evaluates to `True` if `a` is a member of s, and `False` otherwise. `a not in s` returns the negation of `a in s`.

For the string and bytes types, `a` in `s` is `True` if and only if `a` is a substring of `b`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, we want to avoid single-letter variable names.

concepts/comparisons/introduction.md Outdated Show resolved Hide resolved
concepts/comparisons/introduction.md Outdated Show resolved Hide resolved

## Comparison Chaining

Comparisons can be chained arbitrarily, e.g., `x < y <= z` is equivalent to `x < y` `and` `y <= z`, except that `y` is evaluated only once (but in both cases `z` is _not_ evaluated at all when `x < y` is found to be `False`).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Besides omitting the code examples, I think I would make the same edits to the prose here as I did in the about.md.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay sounds good.

Now

  • code blocks from introduction.md have been removed
  • prose is matched as per about.md

True
>>> 5 == 5
True
>>> 6 != 6 # not equal to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not seeing the change. Did you forget to push it?

concepts/comparisons/about.md Show resolved Hide resolved
concepts/comparisons/links.json Outdated Show resolved Hide resolved
concepts/comparisons/links.json Outdated Show resolved Hide resolved
concepts/comparisons/links.json Outdated Show resolved Hide resolved
@gurupratap-matharu
Copy link
Contributor Author

@BethanyG @IsaacG

There have been updates on this PR, mostly minor ones. I think overall we have collaboratively polished this a lot.

Perhaps something might have escaped from my side as I'm switching a lot between the Github UI and the code editor.
(I would like to know how you guys manage so many PR's and their conversations)

Would you be kind enough to review everything in totality? Let me know if anything is missing.
Cheers.
Gurupratap

concepts/comparisons/introduction.md Outdated Show resolved Hide resolved
concepts/comparisons/introduction.md Outdated Show resolved Hide resolved
concepts/comparisons/introduction.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
concepts/comparisons/about.md Outdated Show resolved Hide resolved
83
>>> ord('c')
99
>>> '龙波' < '王想' # chinese words
Copy link
Member

@BethanyG BethanyG Nov 14, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gurupratap-matharu -- Please put the translation of the words in the comment. These don't actually appear to be valid words, but I might have the language wrong. Please also capitalize the language -- is this Mandarin or Cantonese or another Sinitic language?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@BethanyG -- Sure! Earlier these words were abstract names.

  • Now I've changed them to be common words
  • Their English translations has been added
  • You can verify these words on google translate. Just put language detection to be automatic.

Copy link
Member

@BethanyG BethanyG Nov 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gurupratap-matharu - I am not seeing a change to the text here? Did you push a change?
Apologies. The GitHub web interface is acting strange. I see the changes now.

Comment on lines 107 to 108
>>> # let's try korean words
>>> '이서윤' < '김은정'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comments as above. These don't appear to be Korean words, at leas none I can translate using Google. Could you add the translation to the comment please? Also -- Korean with a capital K. Thanks!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. I have changed the Korean words as well.
Try them as well on google translate.

>>> # let's try Korean words
>>> '예쁜' < '아름다운'  # pretty < beautiful
False
>>> ord('예'), ord('아')
(50696, 50500)

Copy link
Member

@BethanyG BethanyG Nov 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gurupratap-matharu Did this change get made to the text? I'm not seeing it.

Apologies. The GitHub web interface is acting strange. I see the changes now.

Markdown style standards: one-sentence-per-line changes.

Co-authored-by: Victor Goff <[email protected]>
@BethanyG
Copy link
Member

@gurupratap-matharu -- I've made some additional comments, but will have to come back to this PR later today my time (PST). Thank you for all of your work on this!

kotp
kotp previously approved these changes Nov 14, 2021
@kotp kotp dismissed their stale review November 14, 2021 18:25

The GUI said "Approve changes" in a context that seemed to be limited only to the requested change, not the overall PR. (There are other changes pending).

@J08K J08K merged commit 9a7cde3 into exercism:main Nov 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[New Concept Documents] : comparisons concept
5 participants