diff options
Diffstat (limited to 'pydis_site/apps/resources')
91 files changed, 860 insertions, 1 deletions
diff --git a/pydis_site/apps/resources/resources/communities/_category_info.yaml b/pydis_site/apps/resources/resources/communities/_category_info.yaml new file mode 100644 index 00000000..b9cb6533 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/_category_info.yaml @@ -0,0 +1,2 @@ +description: Partnered communities that share part of our mission. +name: Communities diff --git a/pydis_site/apps/resources/resources/communities/adafruit.yaml b/pydis_site/apps/resources/resources/communities/adafruit.yaml new file mode 100644 index 00000000..e5c81a6c --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/adafruit.yaml @@ -0,0 +1,15 @@ +description: Adafruit is an open-source electronics manufacturer +  that makes all the components you need to start your own Python-powered hardware projects. +  Their official community host regular show-and-tells, +  provide help with your projects, +  and the Adafruit devs do all the CircuitPython Development right out in the open. +title_image: https://www.mouser.com/images/suppliers/logos/adafruit.png +title_url: https://discord.gg/adafruit +position: 4 +urls: +- icon: branding/discord +  url: https://discord.gg/adafruit +  color: blurple +- icon: regular/link +  url: https://adafruit.com/ +  color: teal diff --git a/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml b/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml new file mode 100644 index 00000000..335ac507 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml @@ -0,0 +1,9 @@ +description: We have listed our favourite communities, +  but there are many more excellent communities out there! +  An awesome list collating the best programming related Discord servers is available on GitHub +  and has all sorts of topics from blockchain to virtual reality! +title_icon: branding/github +title_icon_color: black +title_url: https://github.com/mhxion/awesome-programming-discord +name: awesome-programming-discord +position: 10 diff --git a/pydis_site/apps/resources/resources/communities/kivy.yaml b/pydis_site/apps/resources/resources/communities/kivy.yaml new file mode 100644 index 00000000..601d7dba --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/kivy.yaml @@ -0,0 +1,18 @@ +description: The Kivy project, through the Kivy framework and its sister projects, +  aims to provide all the tools to create desktop and mobile applications in Python. +  Allowing rapid development of multitouch applications with custom and exciting user interfaces. +icon_image: https://raw.githubusercontent.com/kivy/kivy-website/master/logos/kivy-logo-black-256.png +icon_size: 50 +title_image: https://i.imgur.com/EVP3jZR.png +title_url: https://discord.gg/djPtTRJ +position: 5 +urls: +  - icon: branding/discord +    url: https://discord.gg/djPtTRJ +    color: blurple +  - icon: regular/link +    url: https://kivy.org/ +    color: teal +  - icon: branding/github +    url: https://github.com/kivy +    color: black diff --git a/pydis_site/apps/resources/resources/communities/microsoft.yaml b/pydis_site/apps/resources/resources/communities/microsoft.yaml new file mode 100644 index 00000000..b36c3a85 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/microsoft.yaml @@ -0,0 +1,12 @@ +description: Microsoft Python is a Discord server for discussing all things relating to using Python with Microsoft products, +  they have channels for Azure, VS Code, IoT, Data Science and much more! +title_image: https://1000logos.net/wp-content/uploads/2017/04/Microsoft-Logo.png +title_url: https://discord.gg/b8YJQPx +position: 1 +urls: +  - icon: branding/discord +    url: https://discord.gg/b8YJQPx +    color: blurple +  - icon: regular/link +    url: https://www.microsoft.com/en-us/boards/pycon2020.aspx +    color: teal diff --git a/pydis_site/apps/resources/resources/communities/pallets.yaml b/pydis_site/apps/resources/resources/communities/pallets.yaml new file mode 100644 index 00000000..239b1491 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/pallets.yaml @@ -0,0 +1,13 @@ +description: The Pallets Projects develop Python libraries such as the Flask web framework, +  the Jinja templating library, and the Click command line toolkit. Join to discuss +  and get help from the Pallets community. +title_image: https://i.imgur.com/sV9Ypdf.png +title_url: https://discord.gg/t6rrQZH +position: 6 +urls: +  - icon: branding/discord +    url: https://discord.gg/t6rrQZH +    color: blurple +  - icon: regular/link +    url: https://www.palletsprojects.com/ +    color: teal diff --git a/pydis_site/apps/resources/resources/communities/panda3d.yaml b/pydis_site/apps/resources/resources/communities/panda3d.yaml new file mode 100644 index 00000000..4235793d --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/panda3d.yaml @@ -0,0 +1,12 @@ +description: Panda3D is a Python-focused 3-D framework for rapid development of games, +  visualizations, and simulations, written in C++ with an emphasis on performance and flexibility. +title_image: http://www.panda3d.org/wp-content/uploads/2019/01/panda3d_logo.png +title_url: https://discord.gg/9XsucTT +position: 9 +urls: +  - icon: branding/discord +    url: https://discord.gg/9XsucTT +    color: blurple +  - icon: regular/link +    url: https://www.panda3d.org/ +    color: teal diff --git a/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml b/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml new file mode 100644 index 00000000..1c17d343 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml @@ -0,0 +1,18 @@ +description: People, Postgres, Data specializes in building users of Postgres +  and related ecosystem including but not limited to technologies such as RDS Postgres, +  Aurora for Postgres, Google Postgres, PostgreSQL.Org Postgres, Greenplum, Timescale and ZomboDB. +  They take a holistic approach to their community inviting not only technical topics but Professional Development +  and Life in general including movies, games, books and travel. +title_image: https://media.discordapp.net/attachments/748954447857844318/750519488268730377/people_postgres_data.png +title_url: https://discord.gg/Ujw8m8v +position: 2 +urls: +  - icon: branding/discord +    url: https://discord.gg/Ujw8m8v +    color: bluple +  - icon: regular/link +    url: https://postgresconf.org/ +    color: teal +  - icon: branding/reddit +    url: https://reddit.com/r/postgresql +    color: orangered diff --git a/pydis_site/apps/resources/resources/communities/pyglet.yaml b/pydis_site/apps/resources/resources/communities/pyglet.yaml new file mode 100644 index 00000000..784f514e --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/pyglet.yaml @@ -0,0 +1,15 @@ +description: Pyglet is a powerful, +  yet easy to use Python library for developing games and other visually-rich applications on Windows, +  Mac OS X and Linux. It supports windowing, user interface event handling, Joysticks, OpenGL graphics, +  loading images and videos, and playing sounds and music. All of this with a friendly Pythonic API, +  that's simple to learn and doesn't get in your way. +title_image: https://i.imgur.com/LfQwXUe.png +title_url: https://discord.gg/QXyegWe +position: 8 +urls: +  - icon: branding/discord +    url: https://discord.gg/QXyegWe +    color: blurple +  - icon: regular/link +    url: http://pyglet.org/ +    color: teal diff --git a/pydis_site/apps/resources/resources/communities/real_python.yaml b/pydis_site/apps/resources/resources/communities/real_python.yaml new file mode 100644 index 00000000..1fc74d93 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/real_python.yaml @@ -0,0 +1,12 @@ +description: Dan Bader's treasure trove of quizzes, tutorials and interactive content for learning Python. +  An absolute goldmine. +title_image: https://i.imgur.com/WDqhZ36.png +title_url: https://realpython.com/ +position: 3 +urls: +  - icon: regular/link +    url: https://realpython.com/ +    color: teal +  - icon: branding/youtube +    url: https://www.youtube.com/channel/UCI0vQvr9aFn27yR6Ej6n5UA +    color: youtube-red diff --git a/pydis_site/apps/resources/resources/communities/rlbot.yaml b/pydis_site/apps/resources/resources/communities/rlbot.yaml new file mode 100644 index 00000000..d12c1dec --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/rlbot.yaml @@ -0,0 +1,13 @@ +description: RLBot is a community of programmers making awesome Rocket League bots. +  They've created a framework that you can use to write bots in a number of languages (including Python), +  and they host regular tournaments where botmakers can pit their creations against each other. +title_image: https://i.imgur.com/S8L1muZ.png +title_url: https://discord.gg/4JJdJKb +position: 7 +urls: +  - icon: branding/discord +    url: https://discord.gg/4JJdJKb +    color: blurple +  - icon: regular/link +    url: https://www.rlbot.org/ +    color: teal diff --git a/pydis_site/apps/resources/resources/communities/subreddit.yaml b/pydis_site/apps/resources/resources/communities/subreddit.yaml new file mode 100644 index 00000000..d3ddb15a --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/subreddit.yaml @@ -0,0 +1,6 @@ +description: News about the Python programming language, and language-related discussion. +name: r/Python +title_icon: branding/reddit +title_icon_color: orangered +title_url: https://www.reddit.com/r/Python/ +position: 0 diff --git a/pydis_site/apps/resources/resources/courses/_category_info.yaml b/pydis_site/apps/resources/resources/courses/_category_info.yaml new file mode 100644 index 00000000..948b48de --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/_category_info.yaml @@ -0,0 +1,4 @@ +description: Listing of best Python courses. +name: Courses +default_icon: regular/graduation-cap +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml b/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml new file mode 100644 index 00000000..66034ea2 --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml @@ -0,0 +1,5 @@ +description: The interactive course version of Al Sweigart's excellent book for beginners, taught by the author himself. +  This link has a discounted version of the course which will always cost 10 dollars. Thanks, Al! +name: Automate the Boring Stuff with Python +title_url: https://www.udemy.com/automate/?couponCode=FOR_LIKE_10_BUCKS +position: 3 diff --git a/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml b/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml new file mode 100644 index 00000000..5560b2cb --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml @@ -0,0 +1,6 @@ +description: This MITx offering teaches computer science with Python. +  It covers computational thinking, algorithms, data structures +  and the Python programming language itself. +name: 'MIT: Introduction to Computer Science and Programming' +title_url: https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11 +position: 1 diff --git a/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml b/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml new file mode 100644 index 00000000..b801ca8c --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml @@ -0,0 +1,9 @@ +description: Created and taught by <a href="https://dabeaz.com/">David Beazley</a>, +  this course is a conversion of his instructor-led Python training course used for corporate training +  and professional development. It has been in continual development since 2007 +  and battle tested in real-world classrooms. Usually, it’s taught in-person over the span of three +  or four days–requiring approximately 25-35 hours of intense work. +  This includes the completion of approximately 130 hands-on coding exercises. +name: Practical Python Programming +title_url: https://dabeaz-course.github.io/practical-python/ +position: 4 diff --git a/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml b/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml new file mode 100644 index 00000000..3efe7640 --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml @@ -0,0 +1,5 @@ +description: A 5-part specialization course that teaches Python from scratch. +  The course has no pre-requisites and avoids all but the simplest mathematics. +name: 'University of Michigan: Programming for Everybody' +title_url: https://www.coursera.org/learn/python +position: 2 diff --git a/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml b/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml new file mode 100644 index 00000000..0a7839de --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml @@ -0,0 +1,11 @@ +description: A 2-part course that teaches Python. Primarily intended for high school students +  and first-year university students who want to learn programming. +name: 'University of Toronto: Learn to Program' +position: 0 +urls: +  - icon: regular/graduation-cap +    url: https://www.coursera.org/learn/learn-to-program +    color: orangered +  - icon: regular/graduation-cap +    url: https://www.coursera.org/learn/program-code +    color: youtube-red diff --git a/pydis_site/apps/resources/resources/interactive/_category_info.yaml b/pydis_site/apps/resources/resources/interactive/_category_info.yaml new file mode 100644 index 00000000..7e8f34d9 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/_category_info.yaml @@ -0,0 +1,4 @@ +description: Learn Python with interactive courses, games, and programming challenges. +name: Interactive +default_icon: branding/python +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/interactive/code_combat.yaml b/pydis_site/apps/resources/resources/interactive/code_combat.yaml new file mode 100644 index 00000000..30f20c28 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/code_combat.yaml @@ -0,0 +1,11 @@ +description: Learn Python while gaming - an open-source project with thousands of +  contributors, which teaches you Python through a deep, top-down RPG. +name: Code Combat +position: 0 +urls: +- icon: regular/link +  url: https://codecombat.com/ +  color: teal +- icon: branding/github +  url: https://github.com/codecombat/codecombat +  color: black diff --git a/pydis_site/apps/resources/resources/interactive/edublocks.yaml b/pydis_site/apps/resources/resources/interactive/edublocks.yaml new file mode 100644 index 00000000..7c6ca02b --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/edublocks.yaml @@ -0,0 +1,10 @@ +description: EduBlocks provides a simple drag and drop interface to help beginners get to grips +  with the key concepts of Python. There is built-in support for modules such as random, +  turtle, processing and pygal to play around with, +  and it even allows you to export the Python code you have written in the graphical editor. +  EduBlocks also has integration with BBC micro:bit, +  Raspberry Pi and CircuitPython allowing you to write code for these devices graphically +  and export the code to run on actual devices. +name: EduBlocks +title_url: https://edublocks.org/ +position: 5 diff --git a/pydis_site/apps/resources/resources/interactive/exercism.yaml b/pydis_site/apps/resources/resources/interactive/exercism.yaml new file mode 100644 index 00000000..68b458d0 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/exercism.yaml @@ -0,0 +1,13 @@ +description: Level up your programming skills with more than 2600 exercises across +  47 programming languages, Python included. The website provides a mentored mode, +  where you can get your code reviewed for each solution you submit. The mentors will +  give you insightful advice to make you a better programmer. +name: exercism.io +position: 1 +urls: +- icon: regular/link +  url: https://exercism.io/ +  color: teal +- icon: branding/github +  url: https://github.com/exercism/python +  color: black diff --git a/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml b/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml new file mode 100644 index 00000000..937831fa --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml @@ -0,0 +1,8 @@ +description: Learn Python with a wide range of high quality, project-based lessons. +  Keep track of your progress as you cover all the basic concepts a Python programmer needs to know, +  as well as touching on more advanced areas such as web development with Django, +  natural language processing with NLTK, and data science with NumPy, pandas, and scikit-learn! +  It requires a paid subscription, but a free trial is available. +name: JetBrains Academy +title_url: https://www.jetbrains.com/academy/ +position: 6 diff --git a/pydis_site/apps/resources/resources/interactive/python_morsels.yaml b/pydis_site/apps/resources/resources/interactive/python_morsels.yaml new file mode 100644 index 00000000..879500eb --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/python_morsels.yaml @@ -0,0 +1,10 @@ +description: 'Learn to write more idiomatic Python code with deliberate practice! + + +  Sign up for this service and receive one short Python exercise every week. After +  you attempt to work through the exercise, you''ll receive a number of solutions +  to the exercise with explanations of each one. Each exercise will include automated +  tests and some may include bonuses for a little more of a challenge!' +name: Python Morsels +title_url: https://www.pythonmorsels.com/ +position: 3 diff --git a/pydis_site/apps/resources/resources/interactive/python_tutor.yaml b/pydis_site/apps/resources/resources/interactive/python_tutor.yaml new file mode 100644 index 00000000..64b50d09 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/python_tutor.yaml @@ -0,0 +1,4 @@ +description: Write Python code in your web browser, and see it visualized step by step. +name: Python Tutor +title_url: https://www.pythontutor.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/interactive/sololearn.yaml b/pydis_site/apps/resources/resources/interactive/sololearn.yaml new file mode 100644 index 00000000..51dceb2a --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/sololearn.yaml @@ -0,0 +1,7 @@ +description: SoloLearn's Python 3 course serves as a simple and convenient introduction to Python. +  Containing exercises and quizzes in modules to cover introductory subjects of the language, +  you can pick it up and put it down between your busier aspects of life thanks to both PC +  and mobile apps being available to use. +name: SoloLearn +title_url: https://www.sololearn.com/Course/Python/ +position: 4 diff --git a/pydis_site/apps/resources/resources/podcasts/_category_info.yaml b/pydis_site/apps/resources/resources/podcasts/_category_info.yaml new file mode 100644 index 00000000..1d2d3ba5 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/_category_info.yaml @@ -0,0 +1,4 @@ +description: Notable podcasts about the Python ecosystem. +name: Podcasts +default_icon: regular/microphone-alt +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml b/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml new file mode 100644 index 00000000..efe1601f --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml @@ -0,0 +1,5 @@ +description: The podcast about Python and the people who make it great. Weekly long-form +  interviews with the creators of notable Python packages. +name: Podcast.__init__ +title_url: https://www.podcastinit.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml b/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml new file mode 100644 index 00000000..4f817f26 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml @@ -0,0 +1,5 @@ +description: A byte-sized podcast where Michael Kennedy and Brian Okken work through +  this week's notable Python headlines. +name: Python Bytes +title_url: https://pythonbytes.fm/ +position: 1 diff --git a/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml b/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml new file mode 100644 index 00000000..5ce21fd7 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml @@ -0,0 +1,5 @@ +description: The essential weekly Python podcast. Michael Kennedy and a prominent +  name within the Python community dive into a topic that relates to their experience. +name: Talk Python To Me +title_url: https://talkpython.fm/ +position: 0 diff --git a/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml b/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml new file mode 100644 index 00000000..d5751577 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml @@ -0,0 +1,5 @@ +description: Brian Okken's weekly podcast on testing. Usually deals with Python, +  but also covers many language-agnostic topics from the testing and DevOps world. +name: Test & Code +title_url: https://testandcode.com/ +position: 3 diff --git a/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml b/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml new file mode 100644 index 00000000..dea894ea --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml @@ -0,0 +1,7 @@ +description: A weekly Python podcast hosted by Christopher Bailey with interviews, +  coding tips, and conversation with guests from the Python community. +  The show covers a wide range of topics including Python programming best practices, +  career tips, and related software development topics. +name: The Real Python Podcast +title_url: https://realpython.com/podcasts/rpp/ +position: 4 diff --git a/pydis_site/apps/resources/resources/reading/_category_info.yaml b/pydis_site/apps/resources/resources/reading/_category_info.yaml new file mode 100644 index 00000000..64b87e47 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/_category_info.yaml @@ -0,0 +1,2 @@ +description: Books and tutorials related to Python and popular third-party libraries and frameworks. +name: Reading diff --git a/pydis_site/apps/resources/resources/reading/books/_category_info.yaml b/pydis_site/apps/resources/resources/reading/books/_category_info.yaml new file mode 100644 index 00000000..ae092a20 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/_category_info.yaml @@ -0,0 +1,5 @@ +description: The best books for learning Python or Python Frameworks. +name: Books +default_icon: branding/python +default_icon_color: black +position: 0 diff --git a/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml b/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml new file mode 100644 index 00000000..3812029c --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml @@ -0,0 +1,14 @@ +description: One of the best books out there for Python beginners. This book will +  teach you the basics of Python, while also teaching invaluable automation tools +  and techniques for solving common problems. You'll learn how to go about scraping +  the web, manipulating files and automating keyboard and mouse input. Ideal for an +  office worker who wants to make himself more useful. +name: Automate the Boring Stuff with Python +position: 2 +urls: +- icon: regular/book +  url: https://automatetheboringstuff.com/ +  color: black +- icon: branding/amazon +  url: https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/ +  color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml b/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml new file mode 100644 index 00000000..1f9642ad --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml @@ -0,0 +1,15 @@ +description: A free book on programming using the Python language. +  It serves as a tutorial or guide to the Python language for a beginner audience. +  If all you know about computers is how to save text files, then this is the book for you. +name: A Byte of Python +position: 1 +urls: +- icon: regular/link +  url: https://python.swaroopch.com/ +  color: teal +- icon: regular/book +  url: http://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html +  color: black +- icon: branding/amazon +  url: https://www.amazon.com/Byte-Python-Swaroop-C-H-ebook/dp/B00FJ7S2JU/ +  color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/effective_python.yaml b/pydis_site/apps/resources/resources/reading/books/effective_python.yaml new file mode 100644 index 00000000..1d4124cc --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/effective_python.yaml @@ -0,0 +1,14 @@ +description: A book that gives 59 best practices for writing excellent Python. Great +  for intermediates. +name: Effective Python +position: 3 +urls: +- icon: regular/link +  url: https://effectivepython.com/ +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134034287 +  color: amazon-orange +- icon: branding/github +  url: https://github.com/bslatkin/effectivepython +  color: black diff --git a/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml b/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml new file mode 100644 index 00000000..cc83a331 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml @@ -0,0 +1,14 @@ +description: A comprehensive Flask walkthrough that has you building a complete social +  blogging application from scratch. +name: Flask Web Development +position: 6 +urls: +- icon: regular/link +  url: http://shop.oreilly.com/product/0636920031116.do +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Flask-Web-Development-Developing-Applications/dp/1449372627 +  color: amazon-orange +- icon: branding/github +  url: https://github.com/miguelgrinberg/flasky +  color: black diff --git a/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml b/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml new file mode 100644 index 00000000..92f4bbab --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml @@ -0,0 +1,14 @@ +description: A veritable tome of intermediate and advanced Python information. A must-read +  for any Python professional. By far the most recommended book for intermediates. +name: Fluent Python +position: 7 +urls: +- icon: regular/link +  url: https://www.oreilly.com/library/view/fluent-python/9781491946237/ +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008 +  color: amazon-orange +- icon: branding/github +  url: https://github.com/fluentpython +  color: black diff --git a/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml b/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml new file mode 100644 index 00000000..906860c7 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml @@ -0,0 +1,11 @@ +description: A best practice handbook for both novice and expert Python developers to the installation, +  configuration, and usage of Python on a daily basis. +name: The Hitchhiker's Guide to Python +position: 0 +urls: +- icon: regular/link +  url: https://python-guide.org/ +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Hitchhikers-Guide-Python-Practices-Development/dp/1491933178/ +  color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml b/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml new file mode 100644 index 00000000..27fad4f7 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml @@ -0,0 +1,9 @@ +description: Inferential Thinking is the textbook for the <a href="http://data8.org/">Foundations of Data Science</a> course at UC Berkley. +  It introduces you the fundamentals of both Data Science and Python at a level accessible to all. +  It is available both through your browser and in PDF form. +name: Inferential Thinking +position: 13 +urls: +  - icon: regular/link +    url: https://www.inferentialthinking.com/chapters/intro +    color: teal diff --git a/pydis_site/apps/resources/resources/reading/books/mission_python.yaml b/pydis_site/apps/resources/resources/reading/books/mission_python.yaml new file mode 100644 index 00000000..c4a48b7e --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/mission_python.yaml @@ -0,0 +1,13 @@ +description: Learn programming and Python while building a complete and awesome space-themed +  game using cutting-edge Python 3.6 and Pygame Zero. Extensive use of code examples, +  images, and walk-throughs make this a pleasure to both read and follow along. Excellent +  book for beginners. +name: Mission Python +position: 5 +urls: +- icon: regular/link +  url: https://www.sean.co.uk/books/mission-python/index.shtm +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Mission-Python-Code-Space-Adventure/dp/1593278578 +  color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml b/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml new file mode 100644 index 00000000..974b0e50 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml @@ -0,0 +1,10 @@ +description: '"Neural Networks From Scratch" is a book intended to teach you how to build neural networks on your own, +  without any libraries, so you can better understand deep learning and how all of the elements work. +  This is so you can go out and do new/novel things with deep learning as well as to become more successful with even more basic models. +  This book is to accompany the usual free tutorial videos and sample code from youtube.com/sentdex.' +name: Neural Networks from Scratch in Python +position: 11 +urls: +  - icon: regular/link +    url: https://nnfs.io/ +    color: teal diff --git a/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml b/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml new file mode 100644 index 00000000..032f8c64 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml @@ -0,0 +1,14 @@ +description: A book full of very smart problem-solving recipes for various Python topics, +  including moving from Python 2 to Python 3. +name: Python Cookbook +position: 8 +urls: +- icon: regular/link +  url: http://shop.oreilly.com/product/0636920027072.do +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377 +  color: amazon-orange +- icon: branding/github +  url: https://github.com/dabeaz/python-cookbook +  color: black diff --git a/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml b/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml new file mode 100644 index 00000000..3cbf19c8 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml @@ -0,0 +1,20 @@ +description: "This fast-paced, thorough introduction to programming with Python will have you writing programs, +  solving problems, and making things that work in no time. +  In the first half of the book, you’ll learn basic programming concepts, such as variables, lists, classes, and loops, +  and practice writing clean code with exercises for each topic. +  You’ll also learn how to make your programs interactive and test your code safely before adding it to a project. +  In the second half, you’ll put your new knowledge into practice with three substantial projects: +  a Space Invaders–inspired arcade game, a set of data visualizations with Python’s handy libraries, +  and a simple web app you can deploy online." +name: Python Crash Course +position: 12 +urls: +  - icon: regular/link +    url: https://nostarch.com/pythoncrashcourse2e +    color: teal +  - icon: branding/amazon +    url: https://www.amazon.com/Python-Crash-Course-Project-Based-Introduction/dp/1593276036 +    color: amazon-orange +  - icon: branding/github +    url: https://ehmatthes.github.io/pcc/ +    color: black diff --git a/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml b/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml new file mode 100644 index 00000000..c0941809 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml @@ -0,0 +1,12 @@ +description: Full of useful Python tips, tricks and features. Get this if you have +  a good grasp of the basics and want to take your Python skills to the next level, +  or are a experienced programmer looking to add to your toolbelt. +name: Python Tricks +position: 4 +urls: +- icon: regular/link +  url: https://realpython.com/products/python-tricks-book/ +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Python-Tricks-Buffet-Awesome-Features/dp/1775093301 +  color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/think_python.yaml b/pydis_site/apps/resources/resources/reading/books/think_python.yaml new file mode 100644 index 00000000..6de87043 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/think_python.yaml @@ -0,0 +1,17 @@ +description: Think Python is an introduction to Python programming for beginners. +  It starts with basic concepts of programming, +  and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. +  Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps +  and introduced over the course of several chapters. +name: Think Python +position: 10 +urls: +  - icon: regular/link +    url: https://greenteapress.com/wp/think-python-2e/ +    color: teal +  - icon: branding/amazon +    url: https://www.amazon.com/gp/product/1491939362 +    color: amazon-orange +  - icon: branding/github +    url: https://github.com/AllenDowney/ThinkPython2 +    color: black diff --git a/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml b/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml new file mode 100644 index 00000000..7d83e7c4 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml @@ -0,0 +1,14 @@ +description: Tips, tricks, and best practices for your Django project. +  A highly recommended resource for Django web developers. +name: Two Scoops of Django +position: 9 +urls: +- icon: regular/link +  url: https://twoscoopspress.com/products/two-scoops-of-django-1-11 +  color: teal +- icon: branding/amazon +  url: https://www.amazon.com/Two-Scoops-Django-Best-Practices/dp/0981467342 +  color: amazon-orange +- icon: branding/github +  url: https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples +  color: black diff --git a/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml b/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml new file mode 100644 index 00000000..a18b837d --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml @@ -0,0 +1,5 @@ +description: Tutorials and references for those that are just getting started with Python. +name: Tutorials +default_icon: branding/python +default_icon_color: black +position: 1 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml new file mode 100644 index 00000000..d1d9a7d2 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml @@ -0,0 +1,5 @@ +description: A big list of excellent resources for getting started making Kivy applications. +name: Getting Started with Kivy +title_url: https://blog.kivy.org/2019/12/getting-started-with-kivy/ +icon_image: https://raw.githubusercontent.com/kivy/kivy-website/master/logos/kivy-logo-black-256.png +position: 3 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml new file mode 100644 index 00000000..3250a7c4 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml @@ -0,0 +1,5 @@ +description: A list of beginner resources for programmers with no prior developer experience, +  from Python's official guide. +name: Getting Started with Python for Non-Programmers +title_url: https://wiki.python.org/moin/BeginnersGuide/NonProgrammers +position: 1 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml new file mode 100644 index 00000000..b65e0e12 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml @@ -0,0 +1,5 @@ +description: A list of beginner resources for programmers coming from other languages, +  from Python's official guide. +name: Getting Started with Python for Programmers +title_url: https://wiki.python.org/moin/BeginnersGuide/Programmers +position: 0 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml b/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml new file mode 100644 index 00000000..70ac49ef --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml @@ -0,0 +1,5 @@ +description: A Python 3 cheat sheet with useful information and tips, as well as common +  pitfalls for beginners. This is a PDF. +name: Python Cheat Sheet +title_url: https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf +position: 6 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml b/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml new file mode 100644 index 00000000..625d57c8 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml @@ -0,0 +1,5 @@ +description: This guide is a comprehensive resource for contributing to Python – for both new and experienced contributors. +  It is maintained by the same community that maintains Python. +name: Python Developer's Guide +title_url: https://devguide.python.org/ +position: 2 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml b/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml new file mode 100644 index 00000000..a505715d --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml @@ -0,0 +1,6 @@ +description: A simple, no-nonsense guide to the basics of using Git. +name: A Simple Guide to Git +title_url: http://rogerdudler.github.io/git-guide/ +title_icon: branding/github +title_icon_color: black +position: 4 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml b/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml new file mode 100644 index 00000000..8d61ea73 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml @@ -0,0 +1,4 @@ +description: Miguel Grinberg's fully featured mega-tutorial for learning how to create web applications with the Flask framework. +name: The Flask Mega-Tutorial +title_url: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world +position: 5 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml b/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml new file mode 100644 index 00000000..a25a84fd --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml @@ -0,0 +1,8 @@ +description: Python, being a beautifully designed high-level and interpreter-based programming language, +  provides us with many features for the programmer's comfort. +  But sometimes, the outcomes of a Python snippet may not seem obvious at first sight. +  Here's a fun project attempting to explain what exactly is happening under the hood for some counter-intuitive snippets +  and lesser-known features in Python. +name: WTF Python +title_url: https://github.com/satwikkansal/wtfpython +position: 7 diff --git a/pydis_site/apps/resources/resources/tools/_category_info.yaml b/pydis_site/apps/resources/resources/tools/_category_info.yaml new file mode 100644 index 00000000..6b16baa6 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/_category_info.yaml @@ -0,0 +1,4 @@ +description: This page is a curated list of tools that we regularly recommend in the community. +  If you have a suggestion for something to add to this page, please create an issue in +  <a href="https://github.com/python-discord/meta/issues">our meta repo</a>, and we'll consider adding it. +name: Tools diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml new file mode 100644 index 00000000..e770db07 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml @@ -0,0 +1,5 @@ +description: Accessibility tools that help people write Python code. +name: Accessibility Tools +default_icon: branding/python +default_icon_color: black +position: 2 diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml new file mode 100644 index 00000000..39372956 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml @@ -0,0 +1,7 @@ +description: Screen readers are software programs that allow blind +  or visually impaired users to read the text displayed on a computer screen with a speech synthesizer or braille display. +  There are many different screen reader program options, +  with this link describing many of them and their capabilities. +name: Screen Readers - American Foundation for the Blind +title_url: https://www.afb.org/blindness-and-low-vision/using-technology/assistive-technology-products/screen-readers +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml new file mode 100644 index 00000000..9df5f66f --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml @@ -0,0 +1,6 @@ +description: Talon is a tool being built that aims to bring programming, +  realtime video gaming, command line, and full desktop computer proficiency to people +  who have limited or no use of their hands. +name: Talon Voice +title_url: https://talonvoice.com/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml b/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml new file mode 100644 index 00000000..3cdfff3a --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml @@ -0,0 +1,5 @@ +description: Lightweight code editors supporting Python +name: Editors +default_icon: branding/python +default_icon_color: black +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/editors/atom.yaml b/pydis_site/apps/resources/resources/tools/editors/atom.yaml new file mode 100644 index 00000000..c44f9b5b --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/atom.yaml @@ -0,0 +1,5 @@ +description: A free Electron-based editor, a "hackable text editor for the 21st century",  maintained +  by the GitHub team. +name: Atom +title_url: https://atom.io/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml b/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml new file mode 100644 index 00000000..302c3e2e --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml @@ -0,0 +1,7 @@ +description: Google Collab is a high-powered custom version of Jupyter Notebook which supports e.g. +  !apt-get to install arbitrary Debian packages to the runtime, which is very generous with CPU and memory, +  and well-integrated with Google Drive. +  You can share your Collab Notebooks with other people and work collaboratively. +name: Google Collab +title_url: https://colab.research.google.com/notebooks/intro.ipynb +position: 4 diff --git a/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml b/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml new file mode 100644 index 00000000..b92bac9d --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml @@ -0,0 +1,7 @@ +description: An editor aimed at beginners for the purpose of learning how to code +  without the distractions more advanced editors sometimes cause. +  Particularly useful for use with microcontrollers, +  with built-in tools to interact with Adafruit and Arduino boards. +name: Mu-Editor +title_url: https://codewith.mu/ +position: 3 diff --git a/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml b/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml new file mode 100644 index 00000000..3c6e7e84 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml @@ -0,0 +1,5 @@ +description: A powerful Python-backed editor with great community support and a wealth +  of extensions. +name: Sublime Text +title_url: https://www.sublimetext.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml b/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml new file mode 100644 index 00000000..e3737ca7 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml @@ -0,0 +1,4 @@ +description: A fully-featured editor based on Electron, extendable with plugins. +name: Visual Studio Code +title_url: https://code.visualstudio.com/ +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml b/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml new file mode 100644 index 00000000..614625a6 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml @@ -0,0 +1,5 @@ +description: Fully-integrated development environments for serious Python work. +name: IDEs +default_icon: branding/python +default_icon_color: black +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml b/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml new file mode 100644 index 00000000..b959b0f8 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml @@ -0,0 +1,5 @@ +description: The very best Python IDE, with a wealth of advanced features and convenience +  functions. +name: PyCharm +title_url: https://www.jetbrains.com/pycharm/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml b/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml new file mode 100644 index 00000000..8cd14e14 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml @@ -0,0 +1,5 @@ +description: A free, collaborative, in-browser IDE to code in 50+ languages — +  without spending a second on setup. +name: repl.it +title_url: https://repl.it/ +position: 3 diff --git a/pydis_site/apps/resources/resources/tools/ides/spyder.yaml b/pydis_site/apps/resources/resources/tools/ides/spyder.yaml new file mode 100644 index 00000000..c2f9c2dc --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/spyder.yaml @@ -0,0 +1,5 @@ +description: The Scientific Python Development Environment. +  Simpler and lighter than PyCharm, but still packs a punch. +name: Spyder +title_url: https://www.spyder-ide.org/ +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/ides/thonny.yaml b/pydis_site/apps/resources/resources/tools/ides/thonny.yaml new file mode 100644 index 00000000..3581e1cd --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/thonny.yaml @@ -0,0 +1,5 @@ +description: A Python IDE specifially aimed at learning programming. Has a lot of +  helpful features to help you understand your code. +name: Thonny +title_url: https://thonny.org/ +position: 2 diff --git a/pydis_site/apps/resources/resources/videos/_category_info.yaml b/pydis_site/apps/resources/resources/videos/_category_info.yaml new file mode 100644 index 00000000..8192e021 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/_category_info.yaml @@ -0,0 +1,2 @@ +description: Excellent Youtube channels with content related to Python. +name: Videos diff --git a/pydis_site/apps/resources/resources/videos/corey_schafer.yaml b/pydis_site/apps/resources/resources/videos/corey_schafer.yaml new file mode 100644 index 00000000..a7cca18a --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/corey_schafer.yaml @@ -0,0 +1,19 @@ +description: 'Corey has a number of exceptionally high quality tutorial series +  on everything from Python basics to Django and Flask: +  <ul> +    <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTskrapNbzXhwoFUiLCjGgY7">Python Programming Beginner Tutorials</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc">Python OOP Tutorials - Working With Classes</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH">Flask Tutorials</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p">Django Tutorials</a></li> +  </ul> +  Check out his channel for more video series! +  ' +title_image: https://i.imgur.com/KIfWw3b.png +position: 0 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/channel/UCCezIgC97PvUuR4_gbFUs5g +    color: youtube-red +  - icon: regular/link +    url: https://coreyms.com/ +    color: teal diff --git a/pydis_site/apps/resources/resources/videos/jetbrains.yaml b/pydis_site/apps/resources/resources/videos/jetbrains.yaml new file mode 100644 index 00000000..5d130db6 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/jetbrains.yaml @@ -0,0 +1,12 @@ +description: A collection of videos made by the PyCharm team at JetBrains on subjects such as TDD, +  Django, pytest and much more!<br><br> +  Episodes of their "What does this package do?" series go over all sorts of libraries in Python +  both in the standard library and from the community and give a video explanation of the key concepts. +icon_image: https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/JetBrains_Logo_2016.svg/1200px-JetBrains_Logo_2016.svg.png +icon_size: 50 +title_image: https://resources.jetbrains.com/storage/products/pycharm/img/meta/pycharm_logo_300x300.png +position: 3 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/channel/UCak6beUTLlVmf0E4AmnQkmw +    color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml b/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml new file mode 100644 index 00000000..488cfa83 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml @@ -0,0 +1,13 @@ +description: 'JimShapedCoding contains a set of YouTube tutorials covering things from Flask to GUI development in Python: +  <ul> +    <li><a href="https://www.youtube.com/playlist?list=PLOkVupluCIjuPtTkhO6jmA76uQR994Wvi">Flask tutorials</a></li> +    <li><a href="https://www.youtube.com/watch?v=0tqZ6rMcqGE&list=PLOkVupluCIjuAzAmDNUXcD-0Fsb8sbv9F">GUI tutorials</a></li> +    <li><a href="https://www.youtube.com/watch?v=qMrAFscMBBc&list=PLOkVupluCIjvORWaF4kG-sXLgbVemYpEi">Django tutorials</a></li> +  </ul> +  Check out his channel for more videos!' +title_image: https://i.imgur.com/DlovZPf.png +position: 5 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/channel/UCU8d7rcShA7MGuDyYH1aWGg +    color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/microsoft.yaml b/pydis_site/apps/resources/resources/videos/microsoft.yaml new file mode 100644 index 00000000..720ee202 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/microsoft.yaml @@ -0,0 +1,18 @@ +description: A trove of tutorials & guides for developers from Microsoft's Developer hub. +  Follow the links below for a series of high-quality Python tutorials for beginners. +  <ul> +    <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6">Python for Beginners</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHiXd-nEby-TMCoUNwhbLUnj">More Python for Beginners</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHhHnCUVtR8UHS7eLl33zfJ-">Even More Python for Beginners - Data Tools</a></li> +  </ul> +  Microsoft's Python Development Team also runs a Discord Server for discussions of Python in the Microsoft ecosystem, +  including Visual Studio Code and Azure. +title_image: http://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE2qVsJ?ver=3f74 +position: 4 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/channel/UCsMica-v34Irf9KVTh6xx-g +    color: youtube-red +  - icon: branding/discord +    url: https://aka.ms/python-discord +    color: blurple diff --git a/pydis_site/apps/resources/resources/videos/python_discord.yaml b/pydis_site/apps/resources/resources/videos/python_discord.yaml new file mode 100644 index 00000000..04235b08 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/python_discord.yaml @@ -0,0 +1,8 @@ +description: It's our channel! We are slowly gathering content here directly related to Python, +  our community and the events we host. Come check us out! +title_image: https://raw.githubusercontent.com/python-discord/branding/master/logos/logo_banner/logo_site_banner_dark_512.png +position: 2 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/pythondiscord +    color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/sentdex.yaml b/pydis_site/apps/resources/resources/videos/sentdex.yaml new file mode 100644 index 00000000..4e5f54c6 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/sentdex.yaml @@ -0,0 +1,22 @@ +description: 'An enormous amount of Python content for all skill levels +  from the most popular Python YouTuber on the web. +  <ul> +    <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDeAams7fkdcwOGBpGdHpXln">Learning to program with Python 3 (py 3.7)</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfwnDTZWw8H3hN_VRQfq8rF">Kivy - Mobile and Desktop App Dev w/ Python</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfSfqQuee6K8opKtZsh7sA9">Data Analysis w/ Python 3 and Pandas</a></li> +    <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v">Machine Learning with Python</a></li> +  </ul> +  Check out his channel for more video series! +  ' +title_image: https://i.imgur.com/kJgWZIu.png +position: 1 +urls: +  - icon: branding/youtube +    url: https://www.youtube.com/user/sentdex +    color: youtube-red +  - icon: branding/discord +    url: https://discord.gg/sentdex +    color: blurple +  - icon: regular/link +    url: https://pythonprogramming.net/ +    color: teal diff --git a/pydis_site/apps/resources/templatetags/__init__.py b/pydis_site/apps/resources/templatetags/__init__.py new file mode 100644 index 00000000..2b266b94 --- /dev/null +++ b/pydis_site/apps/resources/templatetags/__init__.py @@ -0,0 +1,3 @@ +from .as_icon import as_icon + +__all__ = ["as_icon"] diff --git a/pydis_site/apps/resources/templatetags/as_icon.py b/pydis_site/apps/resources/templatetags/as_icon.py new file mode 100644 index 00000000..b211407c --- /dev/null +++ b/pydis_site/apps/resources/templatetags/as_icon.py @@ -0,0 +1,14 @@ +from django import template + +register = template.Library() + + +def as_icon(icon: str) -> str: +    """Convert icon string in format 'type/icon' to fa-icon HTML classes.""" +    icon_type, icon_name = icon.split("/") +    if icon_type.lower() == "branding": +        icon_type = "fab" +    else: +        icon_type = "fas" +    return f'{icon_type} fa-{icon_name}' diff --git a/pydis_site/apps/resources/tests/test_as_icon.py b/pydis_site/apps/resources/tests/test_as_icon.py new file mode 100644 index 00000000..5b33910d --- /dev/null +++ b/pydis_site/apps/resources/tests/test_as_icon.py @@ -0,0 +1,28 @@ +from django.test import TestCase + +from pydis_site.apps.resources.templatetags import as_icon + + +class TestAsIcon(TestCase): +    """Tests for `as_icon` templatetag.""" + +    def test_as_icon(self): +        """Should return proper icon type class and icon class based on input.""" +        test_cases = [ +            { +                "input": "regular/icon", +                "output": "fas fa-icon", +            }, +            { +                "input": "branding/brand", +                "output": "fab fa-brand", +            }, +            { +                "input": "fake/my-icon", +                "output": "fas fa-my-icon", +            } +        ] + +        for case in test_cases: +            with self.subTest(input=case["input"], output=case["output"]): +                self.assertEqual(case["output"], as_icon(case["input"])) diff --git a/pydis_site/apps/resources/tests/test_views.py b/pydis_site/apps/resources/tests/test_views.py index 497e9bfe..53685eef 100644 --- a/pydis_site/apps/resources/tests/test_views.py +++ b/pydis_site/apps/resources/tests/test_views.py @@ -1,6 +1,14 @@ +from pathlib import Path +from unittest.mock import patch + +from django.conf import settings  from django.test import TestCase  from django_hosts import reverse +TESTING_RESOURCES_PATH = Path( +    settings.BASE_DIR, "pydis_site", "apps", "resources", "tests", "testing_resources" +) +  class TestResourcesView(TestCase):      def test_resources_index_200(self): @@ -8,3 +16,19 @@ class TestResourcesView(TestCase):          url = reverse("resources:index")          response = self.client.get(url)          self.assertEqual(response.status_code, 200) + + +class TestResourcesListView(TestCase): +    @patch("pydis_site.apps.resources.views.resources_list.RESOURCES_PATH", TESTING_RESOURCES_PATH) +    def test_valid_resource_list_200(self): +        """Check does site return code 200 when visiting valid resource list.""" +        url = reverse("resources:resources", ("testing",)) +        response = self.client.get(url) +        self.assertEqual(response.status_code, 200) + +    @patch("pydis_site.apps.resources.views.resources_list.RESOURCES_PATH", TESTING_RESOURCES_PATH) +    def test_invalid_resource_list_404(self): +        """Check does site return code 404 when trying to visit invalid resource list.""" +        url = reverse("resources:resources", ("invalid",)) +        response = self.client.get(url) +        self.assertEqual(response.status_code, 404) diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml new file mode 100644 index 00000000..bae17ea3 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml @@ -0,0 +1 @@ +name: Testing diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml new file mode 100644 index 00000000..eaac32d9 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml @@ -0,0 +1 @@ +name: Foobar diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml new file mode 100644 index 00000000..22835090 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml @@ -0,0 +1 @@ +name: Resource Test diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml new file mode 100644 index 00000000..61df6173 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml @@ -0,0 +1 @@ +name: My Resource diff --git a/pydis_site/apps/resources/urls.py b/pydis_site/apps/resources/urls.py index c91e306e..19142081 100644 --- a/pydis_site/apps/resources/urls.py +++ b/pydis_site/apps/resources/urls.py @@ -5,4 +5,5 @@ from pydis_site.apps.resources import views  app_name = "resources"  urlpatterns = [      path("", views.ResourcesView.as_view(), name="index"), +    path("<str:category>/", views.ResourcesListView.as_view(), name="resources")  ] diff --git a/pydis_site/apps/resources/utils.py b/pydis_site/apps/resources/utils.py new file mode 100644 index 00000000..1855fc80 --- /dev/null +++ b/pydis_site/apps/resources/utils.py @@ -0,0 +1,42 @@ +import typing as t +from pathlib import Path + +import yaml + + +def get_resources(path: Path) -> t.List[t.Dict]: +    """Loads resource YAMLs from provided path.""" +    resources = [] + +    for item in path.iterdir(): +        if item.is_file() and item.suffix == ".yaml" and item.name != "_category_info.yaml": +            resources.append(yaml.safe_load(item.read_text())) + +    return resources + + +def get_subcategories(path: Path) -> t.List[t.Dict]: +    """Loads resources subcategories with their resources by provided path.""" +    subcategories = [] + +    for item in path.iterdir(): +        if item.is_dir() and item.joinpath("_category_info.yaml").exists(): +            subcategories.append({ +                "category_info": { +                    **yaml.safe_load( +                        item.joinpath("_category_info.yaml").read_text() +                    ), +                    "raw_name": item.name +                }, +                "resources": [ +                    yaml.safe_load(subitem.read_text()) +                    for subitem in item.iterdir() +                    if ( +                        subitem.is_file() +                        and subitem.suffix == ".yaml" +                        and subitem.name != "_category_info.yaml" +                    ) +                ] +            }) + +    return subcategories diff --git a/pydis_site/apps/resources/views/__init__.py b/pydis_site/apps/resources/views/__init__.py index f54118f2..8eb383b5 100644 --- a/pydis_site/apps/resources/views/__init__.py +++ b/pydis_site/apps/resources/views/__init__.py @@ -1,3 +1,4 @@  from .resources import ResourcesView +from .resources_list import ResourcesListView -__all__ = ["ResourcesView"] +__all__ = ["ResourcesView", "ResourcesListView"] diff --git a/pydis_site/apps/resources/views/resources_list.py b/pydis_site/apps/resources/views/resources_list.py new file mode 100644 index 00000000..55f22993 --- /dev/null +++ b/pydis_site/apps/resources/views/resources_list.py @@ -0,0 +1,39 @@ +from pathlib import Path +from typing import Any, Dict + +import yaml +from django.conf import settings +from django.http import Http404 +from django.views.generic import TemplateView + +from pydis_site.apps.resources.utils import get_resources, get_subcategories + +RESOURCES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "resources", "resources") + + +class ResourcesListView(TemplateView): +    """Shows specific resources list.""" + +    template_name = "resources/resources_list.html" + +    def get_context_data(self, **kwargs) -> Dict[str, Any]: +        """Add resources and subcategories data into context.""" +        context = super().get_context_data(**kwargs) + +        resource_path = RESOURCES_PATH / self.kwargs["category"] +        if ( +                not resource_path.is_dir() +                or not resource_path.joinpath("_category_info.yaml").exists() +        ): +            raise Http404 + +        context["resources"] = get_resources(resource_path) +        context["subcategories"] = get_subcategories(resource_path) +        context["category_info"] = { +            **yaml.safe_load( +                resource_path.joinpath("_category_info.yaml").read_text() +            ), +            "raw_name": resource_path.name +        } + +        return context  |