Closed BethanyG closed 2 years ago
This issue has been automatically marked as abandoned ๐
because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Hey, I just want to work on this . But I am a newbee to open source. So, may I try to built it?
Hi @Tarun193 ๐๐ฝ
We're delighted you'd like to take this on! ๐
I'll assign this issue to you and remove the [help wanted] tag.
And don't worry -- we're happy to help you through the process. You can always ask questions here (or on Slack or Gitter if you are on those platforms), and we have loads of documents that outline what's required. Make sure to go over those spec docs carefully. ๐ But at the same time, don't get intimidated - it if you take the tasks one at a time and work at a steady pace, the whole thing will come together nicely.
Additionally, I am happy to write up the concept docs (if you decide you don't want to do that part) and provide feedback or collaborate with you prior to you submitting a PR for formal review.
Just ping with questions - and have fun exploring and writing! ๐ ๐ ๐
Thanks , I will let you know when I need some help.
Hey, I want to know that I have to write about these concepts.
functional tools in python functools module generic functions decorators higher-order functions partial objects in python/partial evaluation in python single dispatch
hey anyone is here.
Yes. I saw this "Hey, " message when it got posted. It was, to me, a declaration, and so no request of action was recognized.
So, what can we help you with @Tarun193 ?
@Tarun193 -- My sincere apologies! I have been really swamped with work, and this slipped through the cracks. Yes, we do need to write about those concepts. But if you'd like, I can do the concept write-up, and you can focus on the exercise itself. Just let me know how you'd like to proceed.
Here is an example of what a concept write-up looks like. There is a longer about
document, and a shorter "summary" with the introduction
. There is also a links
document for learning links for students to explore for a deeper understanding.
By contrast, here is an example of the related concept exercise. Note that there is an introduction -- but it can be pulled from the concept docs if you don't want to do a custom one.
We try to focus the concept docs on the topics that the exercise also covers. The introduction
is available before a student completes the concept exercise, and the about
displays after. The about often also covers additional details and applications of the concepts, and maybe some thought-provoking points or topics.
Beyond that, it's helpful to go through the links at the top of this issue for specifications, requirements, and other how-tos. I believe they're fairly up to date.
Let me know if you have additional questions or issues. I won't have time before this weekend, but can work on a concept writeup draft then, if you don't want to write one.
Best,
No problem @BethanyG ,I would like to help in writing concept.
hey I have wrote the introduction part of the concept , please let me know if some improvements required.
โโ Note to the contributor who picks this task:
The concept docs for this exercise were completed by a previous contributor, and can be found here: functools concept docs.
We suggest going through them before getting started with the rest of the documents and pinging if you have any questions or issues.
Hello :wave: I can pick up from where the last author left off since I can see there is already some momentum going. I'll study the resources while I wait to hear back. Thank you for your time, regards.
All yours and many thanks @Metallifax! ๐ ๐ ๐ฎ
@Metallifax - do you still want to work on this? Totally OK if you do not. Just ping when you have time, and let us know. Thanks!
@BethanyG I feel bad for leaving this claimed for so long, but I've also been focused on other projects/work/study. That said, I don't want to be all excuses and would like to make a solid commitment to moving this exercise forward.
I finish schoolwork/tests on June 5th, and I'm hoping to have my personal project finished by then (hopefully); would that be an okay timeline to start making progress on this?
If this is too far into the future, I don't mind bowing out and letting another contributor take over. As easy as it'd be to just offload the work, I think the experience of making a concept exercise would be a tremendous opportunity for growth and would love to see the concept make it to production.
Let me know if this timeline works for everyone. Regards.
@Metallifax -- Thanks for letting us know! Totally understandable that you have life, studying, and work! I don't think we're in any particular hurry, so I'm fine with leaving you assigned (I just wanted to make sure you still wanted to take this on). If someone else does pick this up, we can ping at that point, or set up a collaboration. ๐
Good luck with school and all your projects!
This issue has been automatically marked as abandoned ๐
because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
I am working on it, just slower than I'd like. I'll try to get a PR out by the weekend to move it along. Thanks for the patience on this.
@Metallifax - This issue is up for a re-write (the issue template is getting updated, I'm adding more resources, and the spec might be getting reduced slightly), so I might close this and then re-open it fresh, if that's OK with you? I'll ping you on Slack whenI am done and you can then comment so I can re-assign you.
..and no worries or rush on the PR. That was just the bot talking..it gets itchy when something goes quiet for more than about 22 days....
Go ahead! Since we're on the topic of adding resources, I found broken links to the concept and concept exercise docs in the issue description (you're probably already aware):
Which I think should go to:
Unless we're going straight to the frontend:
Thanks again.
Yup! ๐ That's one of the reasons we're closing most of the issues logged in Feb. and re-writing them! See #3091 and #3092 for some examples. In addition to updating the links, we're going to be splitting the concept docs writing from the exercise writing, so if you still want to do both things (I think one will be "improve" the docs and the other will be "make" the exercise....), remember comment on both issues and I'll assign you to them.
Thank you for summarizing, and sounds great! I'll keep plugging away and keep an eye out for the new issue in the meantime.
The new issue is HERE: https://github.com/exercism/python/issues/3097. ๐ There will be an additional improvement issue for the concept docs shortly. Closing this now as "OLD".
This issue describes how to implement the
functools
concept exercise for the python track.Getting started
Please please please read the docs before starting. Posting PRs without reading these docs will be a lot more frustrating for you during the review cycle, and exhaust Exercism's maintainers' time. So, before diving into the implementation, please read up on the following documents:
Goal
This concept exercise is meant to teach an understanding/use of
functools
(e.g, thefunctools module
) in Python.Learning objectives
Learn more about the functional tools the Python Standard Library provides through the
functools
module. Build and understanding of and use the following methods and decorators from the module:functools.partial()
partial.func
partial.args
partial.keywords
functools.update_wrapper()
functools.cache()
(_this seems better in@functools.cached_property()
class_customization
_)@functools.lru_cache()
(this method seems more appropriate in the@functools.total_ordering
rich comparisons
exercise)@functools.singledispatch
@<function>.register()
@functools.wraps()
functools.partialmethod()
functools.singledispatchmethod()
Out of scope
classes
&class customization
beyond the direct use of the class methods in this module.comprehensions
comprehensions
inlambdas
decorators
(these have their own exercise. See issue #2356 )map()
,filter()
orfunctools.reduce()
in acomprehension
functools.reduce()
(this was already covered withmap()
andfilter()
)generators
assignment expression
or "walrus" operator (:=
) in alambda
enums
Concepts
functools
modulegeneric functions
decorators
higher-order functions
partial objects
in python/partial evaluation
in pythonsingle dispatch
Prerequisites
These are the concepts/concept exercises the student needs to complete/understand before solving this concept exercise.
basics
bools
classes
class-customization
class-components
comparisons
rich-comparisons
decorators
descriptors
dicts
dict-methods
functions
function-arguments
higher-order-functions
iteration
lists
list-methods
numbers
sequences
sets
strings
string-methods
tuples
Resources to refer to
Python Docs: Defining Functions
Python Docs: functional programming HOWTO
Python Docs: functools module
Pthon Module of the Week:
functools
- Tools for Maniputlating FuctionsFlorian Dahlitz: Introduction to Python's Functools Module
PyDanny: Python Partials are Fun!
Composing Programs: Higher-Order Functions
Trey Hunner: Ist it a Class or a Function? It's a callable!
built-ins: Python Docs
map()
&filter()
any()
&all()
min()
&max()
sum()
Real Python: Functional Programming in Python: When and How to Use it
Hints
For more information on writing hints see hints
links.json
For more information, see concept links file
concepts/links.json
file, if it doesn't already exist.links.json
document.Concept Description
Please see the following for more details on these files: concepts & concept exercises
Concept
about.md
Concept file/issue: The working copy of these files can be found here: functools docs. These may need editing to match the exercise writers needs/style.
For more information, see Concept
about.md
Concept
introduction.md
For more information, see Concept
introduction.md
Exercise
introduction.md
For more information, see Exercise
introduction.md
Exercise Metadata - Track
For more information on concept exercises and formatting for the Python track
config.json
, please see concept exercise metadata. The trackconfig.json
file can be found in the root of the Python repo.You can use the below for the exercise UUID. You can also generate a new one via exercism configlet, uuidgenerator.net, or any other favorite method. The UUID must be a valid V4 UUID.
Exercise Metadata Files Under
.meta/config.json
For more information on exercise
.meta/
files and formatting, see concept exercise metadata files.meta/config.json
- see this link for the fields and formatting of this file..meta/design.md
- see this link for the formatting of this file. Please use the Goal, Learning Objectives,Concepts, Prerequisites and , Out of Scope sections from this issue.Implementation Notes
.meta/examplar.py
file should only use syntax & concepts introduced in this exercise or one of its prerequisite exercises.unittest.TestCase
and the test file should be named<EXERCISE-NAME>_test.py
.Help
If you have any questions while implementing the exercise, please post the questions as comments in this issue, or contact one of the maintainers on our Slack channel.