diff options
author | 2019-07-07 13:27:27 +0200 | |
---|---|---|
committer | 2019-07-07 13:27:27 +0200 | |
commit | 265386c682d52795b5cbdb20ea7a1d3475ab4f9b (patch) | |
tree | 8ef0173331c974a4af5fc92ef413be52dd44687a | |
parent | adding a few classes and some settings to allow us to build a beautiful resou... (diff) | |
parent | pin pycodestyle to 3.0.0 and fix linting errors (diff) |
Merge branch 'django' of github.com:python-discord/site into django
50 files changed, 576 insertions, 15 deletions
@@ -15,6 +15,7 @@ pep8-naming = "~=0.8.2" coverage = "~=4.5.3" unittest-xml-reporting = "~=2.5.1" flake8-docstrings = "~=1.3.0" +pydocstyle = "==3.0.0" [packages] django = "~=2.2" @@ -31,6 +32,7 @@ whitenoise = "==4.1.2" requests = "~=2.21" pygments = "~=2.3.1" wiki = {git = "https://github.com/python-discord/django-wiki.git"} +pyyaml = "*" [requires] python_version = "3.7" diff --git a/Pipfile.lock b/Pipfile.lock index 669d8b45..b40b06c1 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "fa7213fcc7dad2bfd56194aca55853ca77a8842b7d0938d99e76245e06c78ddb" + "sha256": "2f1eaa80a71489a59f71001ad4af39e8e570f8d7ebca33b475d2c530811ad084" }, "pipfile-spec": 6, "requires": { @@ -177,6 +177,23 @@ ], "version": "==2019.1" }, + "pyyaml": { + "hashes": [ + "sha256:57acc1d8533cbe51f6662a55434f0dbecfa2b9eaf115bede8f6fd00115a0c0d3", + "sha256:588c94b3d16b76cfed8e0be54932e5729cc185caffaa5a451e7ad2f7ed8b4043", + "sha256:68c8dd247f29f9a0d09375c9c6b8fdc64b60810ebf07ba4cdd64ceee3a58c7b7", + "sha256:70d9818f1c9cd5c48bb87804f2efc8692f1023dac7f1a1a5c61d454043c1d265", + "sha256:86a93cccd50f8c125286e637328ff4eef108400dd7089b46a7be3445eecfa391", + "sha256:a0f329125a926876f647c9fa0ef32801587a12328b4a3c741270464e3e4fa778", + "sha256:a3c252ab0fa1bb0d5a3f6449a4826732f3eb6c0270925548cac342bc9b22c225", + "sha256:b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955", + "sha256:cd0618c5ba5bda5f4039b9398bb7fb6a317bb8298218c3de25c47c4740e4b95e", + "sha256:ceacb9e5f8474dcf45b940578591c7f3d960e82f926c707788a570b51ba59190", + "sha256:fe6a88094b64132c4bb3b631412e90032e8cfe9745a58370462240b8cb7553cd" + ], + "index": "pypi", + "version": "==5.1.1" + }, "requests": { "hashes": [ "sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", @@ -215,7 +232,8 @@ "version": "==4.1.2" }, "wiki": { - "git": "https://github.com/python-discord/django-wiki.git" + "git": "https://github.com/python-discord/django-wiki.git", + "ref": "66d443248279fb8decf23f68c5363ecf6362ee09" } }, "develop": { @@ -235,42 +253,32 @@ }, "coverage": { "hashes": [ - "sha256:0c5fe441b9cfdab64719f24e9684502a59432df7570521563d7b1aff27ac755f", - "sha256:2b412abc4c7d6e019ce7c27cbc229783035eef6d5401695dccba80f481be4eb3", "sha256:3684fabf6b87a369017756b551cef29e505cb155ddb892a7a29277b978da88b9", "sha256:39e088da9b284f1bd17c750ac672103779f7954ce6125fd4382134ac8d152d74", "sha256:3c205bc11cc4fcc57b761c2da73b9b72a59f8d5ca89979afb0c1c6f9e53c7390", - "sha256:42692db854d13c6c5e9541b6ffe0fe921fe16c9c446358d642ccae1462582d3b", "sha256:465ce53a8c0f3a7950dfb836438442f833cf6663d407f37d8c52fe7b6e56d7e8", "sha256:48020e343fc40f72a442c8a1334284620f81295256a6b6ca6d8aa1350c763bbe", - "sha256:4ec30ade438d1711562f3786bea33a9da6107414aed60a5daa974d50a8c2c351", "sha256:5296fc86ab612ec12394565c500b412a43b328b3907c0d14358950d06fd83baf", "sha256:5f61bed2f7d9b6a9ab935150a6b23d7f84b8055524e7be7715b6513f3328138e", - "sha256:6899797ac384b239ce1926f3cb86ffc19996f6fa3a1efbb23cb49e0c12d8c18c", "sha256:68a43a9f9f83693ce0414d17e019daee7ab3f7113a70c79a3dd4c2f704e4d741", "sha256:6b8033d47fe22506856fe450470ccb1d8ba1ffb8463494a15cfc96392a288c09", "sha256:7ad7536066b28863e5835e8cfeaa794b7fe352d99a8cded9f43d1161be8e9fbd", "sha256:7bacb89ccf4bedb30b277e96e4cc68cd1369ca6841bde7b005191b54d3dd1034", "sha256:839dc7c36501254e14331bcb98b27002aa415e4af7ea039d9009409b9d2d5420", - "sha256:8e679d1bde5e2de4a909efb071f14b472a678b788904440779d2c449c0355b27", "sha256:8f9a95b66969cdea53ec992ecea5406c5bd99c9221f539bca1e8406b200ae98c", "sha256:932c03d2d565f75961ba1d3cec41ddde00e162c5b46d03f7423edcb807734eab", - "sha256:93f965415cc51604f571e491f280cff0f5be35895b4eb5e55b47ae90c02a497b", "sha256:988529edadc49039d205e0aa6ce049c5ccda4acb2d6c3c5c550c17e8c02c05ba", "sha256:998d7e73548fe395eeb294495a04d38942edb66d1fa61eb70418871bc621227e", "sha256:9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609", "sha256:9e80d45d0c7fcee54e22771db7f1b0b126fb4a6c0a2e5afa72f66827207ff2f2", "sha256:a545a3dfe5082dc8e8c3eb7f8a2cf4f2870902ff1860bd99b6198cfd1f9d1f49", "sha256:a5d8f29e5ec661143621a8f4de51adfb300d7a476224156a39a392254f70687b", - "sha256:a9abc8c480e103dc05d9b332c6cc9fb1586330356fc14f1aa9c0ca5745097d19", "sha256:aca06bfba4759bbdb09bf52ebb15ae20268ee1f6747417837926fae990ebc41d", "sha256:bb23b7a6fd666e551a3094ab896a57809e010059540ad20acbeec03a154224ce", "sha256:bfd1d0ae7e292105f29d7deaa9d8f2916ed8553ab9d5f39ec65bcf5deadff3f9", - "sha256:c22ab9f96cbaff05c6a84e20ec856383d27eae09e511d3e6ac4479489195861d", "sha256:c62ca0a38958f541a73cf86acdab020c2091631c137bd359c4f5bddde7b75fd4", "sha256:c709d8bda72cf4cd348ccec2a4881f2c5848fd72903c185f363d361b2737f773", "sha256:c968a6aa7e0b56ecbd28531ddf439c2ec103610d3e2bf3b75b813304f8cb7723", - "sha256:ca58eba39c68010d7e87a823f22a081b5290e3e3c64714aac3c91481d8b34d22", "sha256:df785d8cb80539d0b55fd47183264b7002077859028dfe3070cf6359bf8b2d9c", "sha256:f406628ca51e0ae90ae76ea8398677a921b36f0bd71aab2099dfed08abd0322f", "sha256:f46087bbd95ebae244a0eda01a618aff11ec7a069b15a3ef8f6b520db523dcf1", @@ -374,10 +382,10 @@ }, "pbr": { "hashes": [ - "sha256:9181e2a34d80f07a359ff1d0504fad3a47e00e1cf2c475b0aa7dcb030af54c40", - "sha256:94bdc84da376b3dd5061aa0c3b6faffe943ee2e56fa4ff9bd63e1643932f34fc" + "sha256:36ebd78196e8c9588c972f5571230a059ff83783fabbbbedecc07be263ccd7e6", + "sha256:5a03f59455ad54f01a94c15829b8b70065462b7bd8d5d7e983306b59127fc841" ], - "version": "==5.3.1" + "version": "==5.4.0" }, "pep8-naming": { "hashes": [ @@ -400,6 +408,7 @@ "sha256:5741c85e408f9e0ddf873611085e819b809fca90b619f5fd7f34bd4959da3dd4", "sha256:ed79d4ec5e92655eccc21eb0c6cf512e69512b4a97d215ace46d17e4990f2039" ], + "index": "pypi", "version": "==3.0.0" }, "pyflakes": { @@ -423,6 +432,7 @@ "sha256:ceacb9e5f8474dcf45b940578591c7f3d960e82f926c707788a570b51ba59190", "sha256:fe6a88094b64132c4bb3b631412e90032e8cfe9745a58370462240b8cb7553cd" ], + "index": "pypi", "version": "==5.1.1" }, "six": { diff --git a/pydis_site/apps/home/resources/books/_category_info.yaml b/pydis_site/apps/home/resources/books/_category_info.yaml new file mode 100644 index 00000000..e3b89ad3 --- /dev/null +++ b/pydis_site/apps/home/resources/books/_category_info.yaml @@ -0,0 +1,2 @@ +description: The best books for learning Python or Python Frameworks +name: Books diff --git a/pydis_site/apps/home/resources/books/automate_the_boring_stuff.yaml b/pydis_site/apps/home/resources/books/automate_the_boring_stuff.yaml new file mode 100644 index 00000000..3a9045a5 --- /dev/null +++ b/pydis_site/apps/home/resources/books/automate_the_boring_stuff.yaml @@ -0,0 +1,16 @@ +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 +payment: optional +payment_description: A free e-book is available on the website, but you can buy it + on Amazon if you want to support the author. +urls: +- icon: regular/link + title: E-book + url: https://automatetheboringstuff.com/ +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/ diff --git a/pydis_site/apps/home/resources/books/byte_of_python.yaml b/pydis_site/apps/home/resources/books/byte_of_python.yaml new file mode 100644 index 00000000..f3eca902 --- /dev/null +++ b/pydis_site/apps/home/resources/books/byte_of_python.yaml @@ -0,0 +1,17 @@ +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 +payment: optional +payment_description: A free e-book is available online, a paper version can be bought + from lulu.com. +urls: +- icon: regular/link + title: E-book + url: https://python.swaroopch.com/ +- icon: regular/book + title: Buy the book + url: http://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html +- icon: regular/tablet-alt + title: Kindle edition + url: https://www.amazon.com/Byte-Python-Swaroop-C-H-ebook/dp/B00FJ7S2JU/ diff --git a/pydis_site/apps/home/resources/books/effective_python.yaml b/pydis_site/apps/home/resources/books/effective_python.yaml new file mode 100644 index 00000000..ab782704 --- /dev/null +++ b/pydis_site/apps/home/resources/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 +payment: paid +urls: +- icon: regular/link + title: Website + url: https://effectivepython.com/ +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134034287 +- icon: branding/github + title: GitHub + url: https://github.com/bslatkin/effectivepython diff --git a/pydis_site/apps/home/resources/books/flask_web_development.yaml b/pydis_site/apps/home/resources/books/flask_web_development.yaml new file mode 100644 index 00000000..613e0e50 --- /dev/null +++ b/pydis_site/apps/home/resources/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 +payment: paid +urls: +- icon: regular/link + title: Website + url: http://shop.oreilly.com/product/0636920031116.do +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Flask-Web-Development-Developing-Applications/dp/1449372627 +- icon: branding/github + title: GitHub + url: https://github.com/miguelgrinberg/flasky diff --git a/pydis_site/apps/home/resources/books/fluent_python.yaml b/pydis_site/apps/home/resources/books/fluent_python.yaml new file mode 100644 index 00000000..ebfd5f91 --- /dev/null +++ b/pydis_site/apps/home/resources/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. +name: Fluent Python +payment: paid +urls: +- icon: regular/link + title: Website + url: https://www.oreilly.com/library/view/fluent-python/9781491946237/ +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008 +- icon: branding/github + title: GitHub + url: https://github.com/fluentpython diff --git a/pydis_site/apps/home/resources/books/mission_python.yaml b/pydis_site/apps/home/resources/books/mission_python.yaml new file mode 100644 index 00000000..8cd91979 --- /dev/null +++ b/pydis_site/apps/home/resources/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 +payment: paid +urls: +- icon: regular/link + title: Website + url: https://www.sean.co.uk/books/mission-python/index.shtm +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Mission-Python-Code-Space-Adventure/dp/1593278578 diff --git a/pydis_site/apps/home/resources/books/python_cookbook.yaml b/pydis_site/apps/home/resources/books/python_cookbook.yaml new file mode 100644 index 00000000..9fab8e48 --- /dev/null +++ b/pydis_site/apps/home/resources/books/python_cookbook.yaml @@ -0,0 +1,14 @@ +description: Complete with 'recipes' for various Python topics, including moving from + Python 2 to Python 3.3 +name: Python Cookbook +payment: paid +urls: +- icon: regular/link + title: Website + url: http://shop.oreilly.com/product/0636920027072.do +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377 +- icon: branding/github + title: GitHub + url: https://github.com/dabeaz/python-cookbook diff --git a/pydis_site/apps/home/resources/books/python_tricks.yaml b/pydis_site/apps/home/resources/books/python_tricks.yaml new file mode 100644 index 00000000..0638058c --- /dev/null +++ b/pydis_site/apps/home/resources/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 +payment: paid +urls: +- icon: regular/link + title: Website + url: https://realpython.com/products/python-tricks-book/ +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Python-Tricks-Buffet-Awesome-Features/dp/1775093301 diff --git a/pydis_site/apps/home/resources/books/two_scoops_of_django.yaml b/pydis_site/apps/home/resources/books/two_scoops_of_django.yaml new file mode 100644 index 00000000..85cfa0fc --- /dev/null +++ b/pydis_site/apps/home/resources/books/two_scoops_of_django.yaml @@ -0,0 +1,14 @@ +description: This book is chock-full of material that will help you with your Django + projects. +name: Two Scoops of Django +payment: paid +urls: +- icon: regular/link + title: Website + url: https://twoscoopspress.com/products/two-scoops-of-django-1-11 +- icon: branding/amazon + title: Amazon + url: https://www.amazon.com/Two-Scoops-Django-Best-Practices/dp/0981467342 +- icon: branding/github + title: GitHub + url: https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples diff --git a/pydis_site/apps/home/resources/communities/_category_info.yaml b/pydis_site/apps/home/resources/communities/_category_info.yaml new file mode 100644 index 00000000..eccb8b80 --- /dev/null +++ b/pydis_site/apps/home/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/home/resources/communities/adafruit.yaml b/pydis_site/apps/home/resources/communities/adafruit.yaml new file mode 100644 index 00000000..193f7364 --- /dev/null +++ b/pydis_site/apps/home/resources/communities/adafruit.yaml @@ -0,0 +1,14 @@ +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. + Join the Maker Revolution today!' +name: 'Discord: Adafruit' +payment: free +payment_description: null +urls: +- icon: branding/discord + title: Adafruit Discord + url: https://discord.gg/adafruit diff --git a/pydis_site/apps/home/resources/communities/functional_programming.yaml b/pydis_site/apps/home/resources/communities/functional_programming.yaml new file mode 100644 index 00000000..ab99f264 --- /dev/null +++ b/pydis_site/apps/home/resources/communities/functional_programming.yaml @@ -0,0 +1,10 @@ +description: Functional Programming is a server for discussing functional languages + like Haskell, Idris, Elixir and Lisp as well as related academic fields such as + type theory, category theory, proof assistants, and more! +name: 'Discord: Functional Programming' +payment: free +payment_description: null +urls: +- icon: branding/discord + title: Functional Programming Discord + url: https://discord.gg/kWJYurV diff --git a/pydis_site/apps/home/resources/communities/pallets.yaml b/pydis_site/apps/home/resources/communities/pallets.yaml new file mode 100644 index 00000000..e5a18983 --- /dev/null +++ b/pydis_site/apps/home/resources/communities/pallets.yaml @@ -0,0 +1,10 @@ +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. +name: 'Discord: The Pallets Project' +payment: free +payment_description: null +urls: +- icon: branding/discord + title: The Pallets Project Discord + url: https://discord.gg/t6rrQZH diff --git a/pydis_site/apps/home/resources/communities/rlbot.yaml b/pydis_site/apps/home/resources/communities/rlbot.yaml new file mode 100644 index 00000000..c62e0260 --- /dev/null +++ b/pydis_site/apps/home/resources/communities/rlbot.yaml @@ -0,0 +1,11 @@ +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. +name: 'Discord: RLBot' +payment: free +payment_description: null +urls: +- icon: branding/discord + title: RLBot Discord + url: https://discord.gg/4JJdJKb diff --git a/pydis_site/apps/home/resources/communities/subreddit.yaml b/pydis_site/apps/home/resources/communities/subreddit.yaml new file mode 100644 index 00000000..217a84ac --- /dev/null +++ b/pydis_site/apps/home/resources/communities/subreddit.yaml @@ -0,0 +1,8 @@ +description: News about the Python programming language, and language-related discussion +name: 'Subreddit: r/Python' +payment: free +payment_description: null +urls: +- icon: branding/reddit-alien + title: r/Python on Reddit + url: https://www.reddit.com/r/Python/ diff --git a/pydis_site/apps/home/resources/editors/_category_info.yaml b/pydis_site/apps/home/resources/editors/_category_info.yaml new file mode 100644 index 00000000..f8dc1413 --- /dev/null +++ b/pydis_site/apps/home/resources/editors/_category_info.yaml @@ -0,0 +1,2 @@ +description: Lightweight code editors supporting Python +name: Editors diff --git a/pydis_site/apps/home/resources/editors/atom.yaml b/pydis_site/apps/home/resources/editors/atom.yaml new file mode 100644 index 00000000..f05e45a3 --- /dev/null +++ b/pydis_site/apps/home/resources/editors/atom.yaml @@ -0,0 +1,12 @@ +description: A free Electron-based editor, a "hackable text editor for the 21st century", maintained + by the GitHub team. +name: Atom +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://atom.io/ +- icon: branding/github + title: GitHub + url: https://github.com/atom/atom diff --git a/pydis_site/apps/home/resources/editors/mu_editor.yaml b/pydis_site/apps/home/resources/editors/mu_editor.yaml new file mode 100644 index 00000000..cb44d750 --- /dev/null +++ b/pydis_site/apps/home/resources/editors/mu_editor.yaml @@ -0,0 +1,12 @@ +description: An editor aimed at beginners for the purpose of learning how to code + without the distractions more advanced editors sometimes cause. +name: Mu-Editor +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://codewith.mu/en/ +- icon: branding/github + title: GitHub + url: https://github.com/mu-editor/mu/ diff --git a/pydis_site/apps/home/resources/editors/sublime_text.yaml b/pydis_site/apps/home/resources/editors/sublime_text.yaml new file mode 100644 index 00000000..97952d35 --- /dev/null +++ b/pydis_site/apps/home/resources/editors/sublime_text.yaml @@ -0,0 +1,9 @@ +description: A powerful Python-backed editor with great community support and a wealth + of extensions. +name: Sublime Text +payment: optional +payment_description: Nagware; will ask you to buy the full version after every X saves +urls: +- icon: regular/link + title: Website + url: https://www.sublimetext.com/ diff --git a/pydis_site/apps/home/resources/editors/visual_studio_code.yaml b/pydis_site/apps/home/resources/editors/visual_studio_code.yaml new file mode 100644 index 00000000..4e1f946f --- /dev/null +++ b/pydis_site/apps/home/resources/editors/visual_studio_code.yaml @@ -0,0 +1,11 @@ +description: A fully-featured editor based on Electron, extendable with plugins. +name: Visual Studio Code +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://code.visualstudio.com/ +- icon: branding/github + title: GitHub + url: https://github.com/Microsoft/vscode diff --git a/pydis_site/apps/home/resources/ides/_category_info.yaml b/pydis_site/apps/home/resources/ides/_category_info.yaml new file mode 100644 index 00000000..d331c95d --- /dev/null +++ b/pydis_site/apps/home/resources/ides/_category_info.yaml @@ -0,0 +1,2 @@ +description: Fully-integrated development environments for serious Python work +name: IDEs diff --git a/pydis_site/apps/home/resources/ides/pycharm.yaml b/pydis_site/apps/home/resources/ides/pycharm.yaml new file mode 100644 index 00000000..4624cb41 --- /dev/null +++ b/pydis_site/apps/home/resources/ides/pycharm.yaml @@ -0,0 +1,10 @@ +description: The very best Python IDE, with a wealth of advanced features and convenience + functions. +name: PyCharm +payment: optional +payment_description: There's a free Community Edition and a paid-for Professional + Edition with more features available +urls: +- icon: regular/link + title: Website + url: https://www.jetbrains.com/pycharm/ diff --git a/pydis_site/apps/home/resources/ides/spyder.yaml b/pydis_site/apps/home/resources/ides/spyder.yaml new file mode 100644 index 00000000..146b3549 --- /dev/null +++ b/pydis_site/apps/home/resources/ides/spyder.yaml @@ -0,0 +1,12 @@ +description: The Scientific PYthon Development EnviRonment. Simpler and lighter than + PyCharm, but still packs a punch. +name: Spyder +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://www.spyder-ide.org/ +- icon: branding/github + title: GitHub + url: https://github.com/spyder-ide/spyder diff --git a/pydis_site/apps/home/resources/ides/thonny.yaml b/pydis_site/apps/home/resources/ides/thonny.yaml new file mode 100644 index 00000000..d660094b --- /dev/null +++ b/pydis_site/apps/home/resources/ides/thonny.yaml @@ -0,0 +1,12 @@ +description: A Python IDE specifially aimed at learning programming. Has a lot of + helpful features to help you understand your code. +name: Thonny +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://thonny.org/ +- icon: branding/github + title: GitHub + url: https://github.com/thonny/thonny/ diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/_category_info.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/_category_info.yaml new file mode 100644 index 00000000..08501627 --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/_category_info.yaml @@ -0,0 +1,3 @@ +description: Learn Python with interactive content like courses, games and programming + challenges. +name: Interactive Learning Tools diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/automate_the_boring_stuff.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/automate_the_boring_stuff.yaml new file mode 100644 index 00000000..02d76b3b --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/automate_the_boring_stuff.yaml @@ -0,0 +1,11 @@ +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 +payment: paid +payment_description: Paid course with a certificate of completion. Some sample videos + are available for free. +urls: +- icon: regular/graduation-cap + title: Udemy Course + url: https://www.udemy.com/automate/?couponCode=FOR_LIKE_10_BUCKS diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/code_combat.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/code_combat.yaml new file mode 100644 index 00000000..39c25f0d --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/code_combat.yaml @@ -0,0 +1,13 @@ +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 +payment: optional +payment_description: A wealth of free content is available, but you can also pay for + more +urls: +- icon: regular/link + title: Website + url: https://codecombat.com/ +- icon: branding/github + title: GitHub + url: https://github.com/codecombat/codecombat diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/exercism.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/exercism.yaml new file mode 100644 index 00000000..3adb4138 --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/exercism.yaml @@ -0,0 +1,14 @@ +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 +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://exercism.io/ +- icon: branding/github + title: GitHub + url: https://github.com/exercism/python diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/learn_to_program.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/learn_to_program.yaml new file mode 100644 index 00000000..265f1644 --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/learn_to_program.yaml @@ -0,0 +1,13 @@ +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' +payment: optional +payment_description: You can pay to enroll for a graded certificate, or choose to + audit for free. +urls: +- icon: regular/graduation-cap + title: 'Part 1: The Fundamentals' + url: https://www.coursera.org/learn/learn-to-program +- icon: regular/graduation-cap + title: 'Part 2: Crafting Quality Code' + url: https://www.coursera.org/learn/program-code diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/mit_python.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/mit_python.yaml new file mode 100644 index 00000000..464b8d4a --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/mit_python.yaml @@ -0,0 +1,10 @@ +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 Using Python' +payment: optional +payment_description: You can pay to enroll for a graded certificate, or choose to + take the full course for free. +urls: +- icon: regular/graduation-cap + title: edX Course + url: https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11 diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/programming_for_everybody.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/programming_for_everybody.yaml new file mode 100644 index 00000000..a6d7abe1 --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/programming_for_everybody.yaml @@ -0,0 +1,10 @@ +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' +payment: optional +payment_description: You can pay to enroll for a graded certificate and a capstone + project, or choose to audit for free. +urls: +- icon: regular/graduation-cap + title: Python for Everyone Specialization + url: https://www.coursera.org/learn/python diff --git a/pydis_site/apps/home/resources/interactive_learning_tools/python_morsels.yaml b/pydis_site/apps/home/resources/interactive_learning_tools/python_morsels.yaml new file mode 100644 index 00000000..f883f8b7 --- /dev/null +++ b/pydis_site/apps/home/resources/interactive_learning_tools/python_morsels.yaml @@ -0,0 +1,15 @@ +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 +payment: paid +payment_description: Paid service with monthly and annual plans. A 4 week free trial + is available without needing to enter payment information. +urls: +- icon: regular/link + title: Website + url: https://www.pythonmorsels.com/ diff --git a/pydis_site/apps/home/resources/misc/_category_info.yaml b/pydis_site/apps/home/resources/misc/_category_info.yaml new file mode 100644 index 00000000..4fdc4bf7 --- /dev/null +++ b/pydis_site/apps/home/resources/misc/_category_info.yaml @@ -0,0 +1,2 @@ +description: Resources which do not fit into the other categories +name: Miscellaneous diff --git a/pydis_site/apps/home/resources/misc/good_first_issue_tag.yaml b/pydis_site/apps/home/resources/misc/good_first_issue_tag.yaml new file mode 100644 index 00000000..35d7a8a4 --- /dev/null +++ b/pydis_site/apps/home/resources/misc/good_first_issue_tag.yaml @@ -0,0 +1,10 @@ +description: Searching for opportunities to contribute to a Python project? GitHub + repository maintainers often mark issues appropriate for novice users with the 'Good + First Issue' tag. These issues can be explored directly on GitHub. +name: GitHub's 'Good First Issue' Tag +payment: free +payment_description: null +urls: +- icon: branding/github + title: GitHub + url: https://github.com/search?utf8=%E2%9C%93&q=label%3A%22good+first+issue%22+language%3APython+state%3Aopen&type=Issues&ref=advsearch&l=Python&l= diff --git a/pydis_site/apps/home/resources/misc/python_cheat_sheet.yaml b/pydis_site/apps/home/resources/misc/python_cheat_sheet.yaml new file mode 100644 index 00000000..8c82a5a9 --- /dev/null +++ b/pydis_site/apps/home/resources/misc/python_cheat_sheet.yaml @@ -0,0 +1,9 @@ +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 +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf diff --git a/pydis_site/apps/home/resources/podcasts/_category_info.yaml b/pydis_site/apps/home/resources/podcasts/_category_info.yaml new file mode 100644 index 00000000..a0f9025c --- /dev/null +++ b/pydis_site/apps/home/resources/podcasts/_category_info.yaml @@ -0,0 +1,2 @@ +description: Notable podcasts about the Python ecosystem +name: Podcasts diff --git a/pydis_site/apps/home/resources/podcasts/podcast_dunder_init.yaml b/pydis_site/apps/home/resources/podcasts/podcast_dunder_init.yaml new file mode 100644 index 00000000..8f0cac8b --- /dev/null +++ b/pydis_site/apps/home/resources/podcasts/podcast_dunder_init.yaml @@ -0,0 +1,9 @@ +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__ +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://www.podcastinit.com/ diff --git a/pydis_site/apps/home/resources/podcasts/python_bytes.yaml b/pydis_site/apps/home/resources/podcasts/python_bytes.yaml new file mode 100644 index 00000000..a3368d23 --- /dev/null +++ b/pydis_site/apps/home/resources/podcasts/python_bytes.yaml @@ -0,0 +1,9 @@ +description: A byte-sized podcast where Michael Kennedy and Brian Okken work through + this week's notable Python headlines. +name: Python Bytes +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://pythonbytes.fm/ diff --git a/pydis_site/apps/home/resources/podcasts/talk_python_to_me.yaml b/pydis_site/apps/home/resources/podcasts/talk_python_to_me.yaml new file mode 100644 index 00000000..5ed101c4 --- /dev/null +++ b/pydis_site/apps/home/resources/podcasts/talk_python_to_me.yaml @@ -0,0 +1,9 @@ +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 +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://talkpython.fm/ diff --git a/pydis_site/apps/home/resources/tutorials/_category_info.yaml b/pydis_site/apps/home/resources/tutorials/_category_info.yaml new file mode 100644 index 00000000..a9adc106 --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/_category_info.yaml @@ -0,0 +1,3 @@ +description: Tutorials and references for those that are just getting started with + python +name: Tutorials diff --git a/pydis_site/apps/home/resources/tutorials/corey_schafer.yaml b/pydis_site/apps/home/resources/tutorials/corey_schafer.yaml new file mode 100644 index 00000000..9fff4bbf --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/corey_schafer.yaml @@ -0,0 +1,7 @@ +description: An in-depth look at the Python programming language, from one of + YouTube's most popular Python tutors. +payment: free +urls: + - icon: branding/youtube, + title: YouTube, + url: https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU diff --git a/pydis_site/apps/home/resources/tutorials/get_started_with_flask.yaml b/pydis_site/apps/home/resources/tutorials/get_started_with_flask.yaml new file mode 100644 index 00000000..11dd2a4d --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/get_started_with_flask.yaml @@ -0,0 +1,9 @@ +description: A fully featured mega-tutorial for learning how to create web applications + with the Flask framework. +name: Get Started with Flask Web Development +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world diff --git a/pydis_site/apps/home/resources/tutorials/getting_started_with_python.yaml b/pydis_site/apps/home/resources/tutorials/getting_started_with_python.yaml new file mode 100644 index 00000000..777f2fe3 --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/getting_started_with_python.yaml @@ -0,0 +1,12 @@ +description: The list of resources for programmers and non-programmers from Python's + official beginners' guide +name: Getting Started with Python +payment: free +payment_description: null +urls: +- icon: regular/link + title: Beginners Guide for Non-Programmers + url: https://wiki.python.org/moin/BeginnersGuide/NonProgrammers +- icon: regular/link + title: Beginners Guide for Programmers + url: https://wiki.python.org/moin/BeginnersGuide/Programmers diff --git a/pydis_site/apps/home/resources/tutorials/hitchhikers_guide_to_python.yaml b/pydis_site/apps/home/resources/tutorials/hitchhikers_guide_to_python.yaml new file mode 100644 index 00000000..38eebb56 --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/hitchhikers_guide_to_python.yaml @@ -0,0 +1,10 @@ +description: This opinionated guide exists to provide both novice and expert Python + developers a best practice handbook to the installation, configuration, and usage + of Python on a daily basis. +name: The Hitchhiker's Guide to Python +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: https://python-guide.org/ diff --git a/pydis_site/apps/home/resources/tutorials/sentdex.yaml b/pydis_site/apps/home/resources/tutorials/sentdex.yaml new file mode 100644 index 00000000..cae2695b --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/sentdex.yaml @@ -0,0 +1,8 @@ +description: A Python basics tutorial based around Python 3.7. +name: Python Tutorials by Sentdex on YouTube +payment: free +payment_description: null +urls: +- icon: branding/youtube + title: YouTube + url: https://www.youtube.com/playlist?list=PLQVvvaa0QuDeAams7fkdcwOGBpGdHpXln diff --git a/pydis_site/apps/home/resources/tutorials/simple_guide_to_git.yaml b/pydis_site/apps/home/resources/tutorials/simple_guide_to_git.yaml new file mode 100644 index 00000000..acf76efe --- /dev/null +++ b/pydis_site/apps/home/resources/tutorials/simple_guide_to_git.yaml @@ -0,0 +1,8 @@ +description: A simple, no-nonsense guide to the basics of using Git. +name: A Simple Guide to Git +payment: free +payment_description: null +urls: +- icon: regular/link + title: Website + url: http://rogerdudler.github.io/git-guide/ diff --git a/pydis_site/utils/resources.py b/pydis_site/utils/resources.py new file mode 100644 index 00000000..ab0df9d7 --- /dev/null +++ b/pydis_site/utils/resources.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +import glob +import typing +from dataclasses import dataclass + +import yaml + + +@dataclass +class URL: + """A class representing a link to a resource""" + icon: str + title: str + url: str + + +class Resource: + """A class representing a resource on the resource page""" + description: str + name: str + payment: str + payment_description: typing.Optional[str] + urls: typing.List[URL] + + def __repr__(self): + """Return a representation of the resource""" + return f"<Resource name={self.name}>" + + @classmethod + def construct_from_yaml(cls, yaml_data: str) -> Resource: # noqa + resource = cls() + + loaded = yaml.safe_load(yaml_data) + + resource.__dict__.update(loaded) + + resource.__dict__["urls"] = [] + + for url in loaded["urls"]: + resource.__dict__["urls"].append(URL(**url)) + + return resource + + +class Category: + """A class representing a resource on the resources page""" + resources: typing.List[Resource] + name: str + description: str + + def __repr__(self): + """Return a representation of the category""" + return f"<Category name={self.name}>" + + @classmethod + def construct_from_directory(cls, directory: str) -> Category: # noqa + category = cls() + + with open(f"{directory}/_category_info.yaml") as category_info: + category_data = yaml.safe_load(category_info) + + category.__dict__.update(category_data) + + category.resources = [] + + for resource in glob.glob(f"{directory}/*.yaml"): + if resource == f"{directory}/_category_info.yaml": + continue + + with open(resource) as res_file: + category.resources.append( + Resource.construct_from_yaml(res_file) + ) + + return category + + +def load_categories(order: typing.List[str]) -> typing.List[Category]: + """Load the categories specified in the order list and return them""" + categories = [] + for cat in order: + direc = "pydis_site/apps/home/resources/" + cat + categories.append(Category.construct_from_directory(direc)) + + return categories |