From a67fedf107400c41fa997f84d0811243ffad255a Mon Sep 17 00:00:00 2001 From: Stefan Fejes Date: Tue, 20 Aug 2019 10:00:46 +0200 Subject: [PATCH 1/3] add COLLABORATING guidelines --- COLLABORATING.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 COLLABORATING.md diff --git a/COLLABORATING.md b/COLLABORATING.md new file mode 100644 index 000000000..86677db56 --- /dev/null +++ b/COLLABORATING.md @@ -0,0 +1,23 @@ +# Collaborator team rules and guidelines for community moderation + +**As a contributor/member of the community, remember that you can always open issues about moderation and problems with how community moderation is done. We are always open to constructive criticism and feedback!** + +## Responsibilities of a collaborator + +As a member of the team that manages **30 seconds of python code**, you have the following responsibilities: + +- **Be part of the conversation in the issue tracker.** That includes (but is not limited to) helping out new members, discussing new features and explaining decisions to people. +- **Review pull requests.** You do not have to read through all of the pull requests and review them, but taking the time each day to review a few can help a great deal. +- **Be civil and polite.** If you are about to lose your temper, take a step back and do something else. We want our interactions with the community to be polite so that more people can join the project and contribute in any way they can. Remember to always thank contributors for their help, even if it's minor changes or changes that did not make it into the project. This way we can reward and encourage people to keep being part of the community. +- **Contribute when you want, moderate when you can.** If you have a lot on your plate outside of this project, it's alright. It's better to take a break for a few days rather than hastily deal with issues and pull requests that might break things. + +## Guidelines for merging pull requests and making changes to the project + +- **[Usual guidelines](https://github.com/30-seconds/30-seconds-of-python-code/blob/master/CONTRIBUTING.md) apply.** Make sure to follow them, like everybody else. +- **For a pull request to be considered ready to merge, there should be at least 2 (preferably 3) reviews approving it for merge.** There are, however, certain exceptions: + - **If a pull request only fixes typos**, there is no need to wait for a second reviewer (unless you are not certain these were not typos in the first place). + - **If a pull request only clarifies a snippet's description or enforces the style guide for an existing snippet**, you might be able to merge it without getting a second reviewer to review it, but only if you are certain about it. + - **Make sure pull requests pass the Travis CI build**, otherwise try and find out what's wrong and inform the author of the pull request. + - **Changes to build scripts, guidelines and things that might break the processes we have in place need to be reviewed by [@Chalarangelo](https://github.com/Chalarangelo) or [@fejes713](https://github.com/fejes713)**. +- **If you make changes or additions to existing snippets or if you want to add your own snippets, you will go through the pull request process that everyone else goes.** Exceptions apply similarly to the ones mentioned above about merging pull requests (i.e. typos, description clarification and the way script and build process changes are handled). Pull requests suggested by collaborators should be reviewed by at least two other collaborators to be considered ready to merge. +- **Pull requests that are inactive for over a week should be closed or put on hold.** \ No newline at end of file From 154fa8586db50c986c9649ed5b2563df56b4376f Mon Sep 17 00:00:00 2001 From: Stefan Fejes Date: Tue, 20 Aug 2019 10:03:00 +0200 Subject: [PATCH 2/3] partialy update contributing docs --- CONTRIBUTING.md | 41 ++++++----------------------------------- 1 file changed, 6 insertions(+), 35 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1fcc4b30c..72d5df377 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,11 +4,11 @@ Here's what you can do to help: -- [Open issues](https://github.com/kriadmin/30-seconds-of-python-code/issues/new) for things you want to see added or modified. -- Be part of the discussion by helping out with [existing issues](https://github.com/kriadmin/30-seconds-of-python-code/issues) or talking on our [gitter channel](https://gitter.im/30-seconds-of-python-code/Lobby). -- Submit [pull requests](https://github.com/kriadmin/30-seconds-of-python-code/pulls) with snippets you have created (see below for guidelines). +- [Open issues](https://github.com/30-seconds/30-seconds-of-python-code/issues/new) for things you want to see added or modified. +- Be part of the discussion by helping out with [existing issues](https://github.com/30-seconds/30-seconds-of-python-code/issues) or talking on our [gitter channel](https://gitter.im/30-seconds-of-python-code/Lobby). +- Submit [pull requests](https://github.com/30-seconds/30-seconds-of-python-code/pulls) with snippets you have created (see below for guidelines). - Fix typos in existing snippets, improve snippet descriptions and explanations or provide better examples. -- Before submitting a PR for any new snippets go through [this](https://github.com/kriadmin/30-seconds-of-python-code/projects/1) project. If your snippet is not there, then go ahead and submit a PR. Else if it is in the done column, sorry it has been already implemented. If it is in any other column submit a PR and give the card's link in the description section of PR. +- Before submitting a PR for any new snippets go through [this](https://github.com/30-seconds/30-seconds-of-python-code/projects/1) project. If your snippet is not there, then go ahead and submit a PR. Else if it is in the done column, sorry it has been already implemented. If it is in any other column submit a PR and give the card's link in the description section of PR. - **Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) ### Snippet submission and Pull request guidelines @@ -25,7 +25,7 @@ Here's what you can do to help: - **Snippet descriptions** must be short and to the point. Try to explain *what* the snippet does and *how* the snippet works and what **inbuilt** features/modules are used. Remember to include what functions you are using and why. - Follow snippet descriptions with an empty line. - **Snippets _CAN NOT_ use any external modules**. Only the modules and function inbuilt in `python 3.6` shall be used. -- **Snippet code** must be enclosed inside ` ```python ` and ` ``` `. +- **Snippet code** must be enclosed inside ` ```py ` and ` ``` `. - Remember to start your snippet's code on a new line below the opening backticks. - You can write the code in any style you like but eventually it will be formated by our prettifier so the formatting will change. Just make sure to have consistent spacing. - Try to keep your snippets' code short and to the point. Use modern techniques and features. Make sure to test your code before submitting. @@ -37,33 +37,4 @@ Here's what you can do to help: - Snippets *should* be abstract enough to be applied to different scenarios. - It is not mandatory but highly appreciated if you provide **test cases** and/or performance tests. - You can start creating a new snippet, by using the [snippet template](snippet_template.md) to format your snippets. -- Updating the README.md file should only be done by altering the scripts in the **scripts** folder or altering their relative static parts in the **static-parts** folder. -- You may tag your snippet in tag_databse although it is _not_ necessary. -- You may add your name as `[Name][@github_username]` to the contributor database. If the snippet already exists and you are making changes to it you can add your name at the last seperated by a comma. - +- Updating the README.md file should only be done by altering the scripts in the **scripts** folder or altering their relative static parts in the **static-parts** folder. \ No newline at end of file From dc93323c00c9b0a3af29286eff050e1fdd4a8432 Mon Sep 17 00:00:00 2001 From: Stefan Fejes Date: Tue, 20 Aug 2019 10:04:20 +0200 Subject: [PATCH 3/3] remove old website --- website/Procfile | 1 - website/app/__init__.py | 5 - website/app/etc/hosts | 2 - website/app/prism.css | 124 --- website/app/prism.js | 4 - website/app/routes.py | 23 - website/app/snippets | 3 - website/app/static/css/prism.css | 1229 ------------------------------ website/app/static/favicon.1png | Bin 99889 -> 0 bytes website/app/static/favicon.ico | Bin 1086 -> 0 bytes website/app/static/favicon.png | Bin 7004 -> 0 bytes website/app/static/js/prism.js | 4 - website/app/templates/base.html | 74 -- website/app/templates/index.html | 466 ----------- website/app/templates/prism.css | 124 --- website/app/templates/prism.js | 2 - website/app/vote.py | 16 - website/app/vote_data.py | 16 - website/app/votes.json | 1 - website/main.py | 69 -- website/requirements.txt | 16 - website/run.py | 6 - 22 files changed, 2185 deletions(-) delete mode 100644 website/Procfile delete mode 100644 website/app/__init__.py delete mode 100644 website/app/etc/hosts delete mode 100644 website/app/prism.css delete mode 100644 website/app/prism.js delete mode 100644 website/app/routes.py delete mode 100644 website/app/snippets delete mode 100644 website/app/static/css/prism.css delete mode 100644 website/app/static/favicon.1png delete mode 100644 website/app/static/favicon.ico delete mode 100644 website/app/static/favicon.png delete mode 100644 website/app/static/js/prism.js delete mode 100644 website/app/templates/base.html delete mode 100644 website/app/templates/index.html delete mode 100644 website/app/templates/prism.css delete mode 100644 website/app/templates/prism.js delete mode 100644 website/app/vote.py delete mode 100644 website/app/vote_data.py delete mode 100644 website/app/votes.json delete mode 100644 website/main.py delete mode 100644 website/requirements.txt delete mode 100644 website/run.py diff --git a/website/Procfile b/website/Procfile deleted file mode 100644 index 80a980e84..000000000 --- a/website/Procfile +++ /dev/null @@ -1 +0,0 @@ -web: gunicorn run:app \ No newline at end of file diff --git a/website/app/__init__.py b/website/app/__init__.py deleted file mode 100644 index 6c5009aa4..000000000 --- a/website/app/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from flask import Flask - -app = Flask(__name__) - -from app import routes,vote \ No newline at end of file diff --git a/website/app/etc/hosts b/website/app/etc/hosts deleted file mode 100644 index 62a8cca88..000000000 --- a/website/app/etc/hosts +++ /dev/null @@ -1,2 +0,0 @@ -127.0.0.1 localwebsite -127.0.0.1 blog.localwebsite \ No newline at end of file diff --git a/website/app/prism.css b/website/app/prism.css deleted file mode 100644 index 5bf332cb8..000000000 --- a/website/app/prism.css +++ /dev/null @@ -1,124 +0,0 @@ -/* PrismJS 1.10.0 -http://prismjs.com/download.html?themes=prism-okaidia&languages=python */ -/** - * okaidia theme for JavaScript, CSS and HTML - * Loosely based on Monokai textmate theme by http://www.monokai.nl/ - * @author ocodia - */ - -code[class*="language-"], -pre[class*="language-"] { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #272822; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #f8f8f2; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: #f92672; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: #f8f8f2; -} - -.token.atrule, -.token.attr-value, -.token.function { - color: #e6db74; -} - -.token.keyword { - color: #66d9ef; -} - -.token.regex, -.token.important { - color: #fd971f; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - diff --git a/website/app/prism.js b/website/app/prism.js deleted file mode 100644 index b94bbedde..000000000 --- a/website/app/prism.js +++ /dev/null @@ -1,4 +0,0 @@ -/* PrismJS 1.10.0 -http://prismjs.com/download.html?themes=prism-okaidia&languages=python */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,N=t.length;N>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,S=w.slice(0,A),C=w.slice(j),M=[b,P];S&&(++b,k+=S.length,M.push(S));var E=new s(g,f?n.tokenize(_,f):_,y,_,m);if(M.push(E),C&&M.push(C),Array.prototype.splice.apply(t,M),1!=P&&n.matchGrammar(e,t,r,b,k,!0,g),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; diff --git a/website/app/routes.py b/website/app/routes.py deleted file mode 100644 index 44bc4f1a0..000000000 --- a/website/app/routes.py +++ /dev/null @@ -1,23 +0,0 @@ -from flask import render_template, redirect ,request, url_for -from app import app, vote, vote_data - -@app.route('/') -@app.route('/index') -@app.route('/index/') -def index(): - return render_template('index.html',vote={}) -''' -For future when we have logins -@app.route('/',methods=['POST']) -@app.route('/index',methods=['POST']) -@app.route('/index/',methods=['POST']) -def post(): - try: - vote.vote(request.form['submit']) - except Exception as e: - return render_template('index.html', vote=vote_data.vote_data(),err_400=True,message=e) - return redirect(f"/#{request.form['submit']}",code=302) -''' - - - diff --git a/website/app/snippets b/website/app/snippets deleted file mode 100644 index 9b16aa4f6..000000000 --- a/website/app/snippets +++ /dev/null @@ -1,3 +0,0 @@ -keys_only -values_only -all_unique \ No newline at end of file diff --git a/website/app/static/css/prism.css b/website/app/static/css/prism.css deleted file mode 100644 index 2a173aeee..000000000 --- a/website/app/static/css/prism.css +++ /dev/null @@ -1,1229 +0,0 @@ -:root { - --f-col:#111; - --f-col2:#444; - --b-col:#f8f8f8; - --b-col2:#f0f0f0; - --blq-col:#f57c00; - --pre-col:#1565c0; - --br-col:#aaa; - --br-col2:#ddd; - --h-ratio:1.19; - --u-m:.5rem; - --u-p:.5rem; - --u-br-r:.125rem; - --a-l-col:#0277bd; - --a-v-col:#01579b - } - html { - font-size:16px - } - a,b,del,em,i,ins,q,span,strong,u { - font-size:1em - } - html,* { - font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Ubuntu,"Helvetica Neue",Helvetica,sans-serif; - line-height:1.5; - -webkit-text-size-adjust:100% - } - * { - font-size:1rem - } - body { - margin:0; - color:var(--f-col); - background:var(--b-col) - } - details { - display:block - } - summary { - display:list-item - } - abbr[title] { - border-bottom:none; - text-decoration:underline dotted - } - input { - overflow:visible - } - img { - max-width:100%; - height:auto - } - h1,h2,h3,h4,h5,h6 { - line-height:1.2; - margin:calc(1.5 * var(--u-m)) var(--u-m); - font-weight:500 - } - h1 small,h2 small,h3 small,h4 small,h5 small,h6 small { - color:var(--f-col2); - display:block; - margin-top:-.25rem - } - h1 { - font-size:calc(1rem * var(--h-ratio) * var(--h-ratio) * var(--h-ratio) * var(--h-ratio)) - } - h2 { - font-size:calc(1rem * var(--h-ratio) * var(--h-ratio) * var(--h-ratio)) - } - h3 { - font-size:calc(1rem * var(--h-ratio) * var(--h-ratio)) - } - h4 { - font-size:calc(1rem * var(--h-ratio)) - } - h5 { - font-size:1rem - } - h6 { - font-size:calc(1rem/ var(--h-ratio)) - } - p { - margin:var(--u-m) - } - ol,ul { - margin:var(--u-m); - padding-left:calc(2 * var(--u-m)) - } - b,strong { - font-weight:700 - } - hr { - box-sizing:content-box; - border:0; - line-height:1.25em; - margin:var(--u-m); - height:.0625rem; - background:linear-gradient(to right,transparent,var(--br-col) 20%,var(--br-col) 80%,transparent) - } - blockquote { - display:block; - position:relative; - font-style:italic; - color:var(--f-col2); - margin:var(--u-m); - padding:calc(3 * var(--u-p)); - border:.0625rem solid var(--br-col2); - border-left:.375rem solid var(--blq-col); - border-radius:0 var(--u-br-r) var(--u-br-r) 0 - } - blockquote:before { - position:absolute; - top:calc(0rem - var(--u-p)); - left:0; - font-family:sans-serif; - font-size:3rem; - font-weight:700; - content:"\201c"; - color:var(--blq-col) - } - blockquote[cite]:after { - font-style:normal; - font-size:.75em; - font-weight:700; - content:"\a— " attr(cite); - white-space:pre - } - code,kbd,pre,samp { - font-family:Menlo,Consolas,monospace; - font-size:.85em - } - code { - background:var(--b-col2); - border-radius:var(--u-br-r); - padding:calc(var(--u-p)/ 4) calc(var(--u-p)/ 2) - } - kbd { - background:var(--f-col); - color:var(--b-col); - border-radius:var(--u-br-r); - padding:calc(var(--u-p)/ 4) calc(var(--u-p)/ 2) - } - pre { - overflow:auto; - background:var(--b-col2); - padding:calc(1.5 * var(--u-p)); - margin:var(--u-m); - border:.0625rem solid var(--br-col2); - border-left:.25rem solid var(--pre-col); - border-radius:0 var(--u-br-r) var(--u-br-r) 0 - } - sup,sub,code,kbd { - line-height:0; - position:relative; - vertical-align:baseline - } - small,sup,sub,figcaption { - font-size:.75em - } - sup { - top:-.5em - } - sub { - bottom:-.25em - } - figure { - margin:var(--u-m) - } - figcaption { - color:var(--f-col2) - } - a { - text-decoration:none - } - a:link { - color:var(--a-l-col) - } - a:visited { - color:var(--a-v-col) - } - a:hover,a:focus { - text-decoration:underline - } - .container { - margin:0 auto; - padding:0 calc(1.5 * var(--u-p)) - } - .row { - box-sizing:border-box; - display:flex; - flex:0 1 auto; - flex-flow:row wrap - } - .col-sm,[class^='col-sm-'],[class^='col-sm-o-'] { - flex:0 0 auto; - padding:0 calc(var(--u-p)/ 2) - } - .col-sm { - max-width:100%; - flex-grow:1; - flex-basis:0 - } - .col-sm-1 { - max-width:8.33333%; - flex-basis:8.33333% - } - .col-sm-o-0 { - margin-left:0 - } - .col-sm-2 { - max-width:16.66667%; - flex-basis:16.66667% - } - .col-sm-o-1 { - margin-left:8.33333% - } - .col-sm-3 { - max-width:25%; - flex-basis:25% - } - .col-sm-o-2 { - margin-left:16.66667% - } - .col-sm-4 { - max-width:33.33333%; - flex-basis:33.33333% - } - .col-sm-o-3 { - margin-left:25% - } - .col-sm-5 { - max-width:41.66667%; - flex-basis:41.66667% - } - .col-sm-o-4 { - margin-left:33.33333% - } - .col-sm-6 { - max-width:50%; - flex-basis:50% - } - .col-sm-o-5 { - margin-left:41.66667% - } - .col-sm-7 { - max-width:58.33333%; - flex-basis:58.33333% - } - .col-sm-o-6 { - margin-left:50% - } - .col-sm-8 { - max-width:66.66667%; - flex-basis:66.66667% - } - .col-sm-o-7 { - margin-left:58.33333% - } - .col-sm-9 { - max-width:75%; - flex-basis:75% - } - .col-sm-o-8 { - margin-left:66.66667% - } - .col-sm-10 { - max-width:83.33333%; - flex-basis:83.33333% - } - .col-sm-o-9 { - margin-left:75% - } - .col-sm-11 { - max-width:91.66667%; - flex-basis:91.66667% - } - .col-sm-o-10 { - margin-left:83.33333% - } - .col-sm-12 { - max-width:100%; - flex-basis:100% - } - .col-sm-o-11 { - margin-left:91.66667% - } - .col-sm-n { - order:initial - } - .col-sm-f { - order:-999 - } - .col-sm-l { - order:999 - } - @media screen and (min-width: 768px) { - .col-md,[class^='col-md-'],[class^='col-md-o-'] { - flex:0 0 auto; - padding:0 calc(var(--u-p)/ 2) - } - .col-md { - max-width:100%; - flex-grow:1; - flex-basis:0 - } - .col-md-1 { - max-width:8.33333%; - flex-basis:8.33333% - } - .col-md-o-0 { - margin-left:0 - } - .col-md-2 { - max-width:16.66667%; - flex-basis:16.66667% - } - .col-md-o-1 { - margin-left:8.33333% - } - .col-md-3 { - max-width:25%; - flex-basis:25% - } - .col-md-o-2 { - margin-left:16.66667% - } - .col-md-4 { - max-width:33.33333%; - flex-basis:33.33333% - } - .col-md-o-3 { - margin-left:25% - } - .col-md-5 { - max-width:41.66667%; - flex-basis:41.66667% - } - .col-md-o-4 { - margin-left:33.33333% - } - .col-md-6 { - max-width:50%; - flex-basis:50% - } - .col-md-o-5 { - margin-left:41.66667% - } - .col-md-7 { - max-width:58.33333%; - flex-basis:58.33333% - } - .col-md-o-6 { - margin-left:50% - } - .col-md-8 { - max-width:66.66667%; - flex-basis:66.66667% - } - .col-md-o-7 { - margin-left:58.33333% - } - .col-md-9 { - max-width:75%; - flex-basis:75% - } - .col-md-o-8 { - margin-left:66.66667% - } - .col-md-10 { - max-width:83.33333%; - flex-basis:83.33333% - } - .col-md-o-9 { - margin-left:75% - } - .col-md-11 { - max-width:91.66667%; - flex-basis:91.66667% - } - .col-md-o-10 { - margin-left:83.33333% - } - .col-md-12 { - max-width:100%; - flex-basis:100% - } - .col-md-o-11 { - margin-left:91.66667% - } - .col-md-n { - order:initial - } - .col-md-f { - order:-999 - } - .col-md-l { - order:999 - } - } - @media screen and (min-width: 1280px) { - .col-lg,[class^='col-lg-'],[class^='col-lg-o-'] { - flex:0 0 auto; - padding:0 calc(var(--u-p)/ 2) - } - .col-lg { - max-width:100%; - flex-grow:1; - flex-basis:0 - } - .col-lg-1 { - max-width:8.33333%; - flex-basis:8.33333% - } - .col-lg-o-0 { - margin-left:0 - } - .col-lg-2 { - max-width:16.66667%; - flex-basis:16.66667% - } - .col-lg-o-1 { - margin-left:8.33333% - } - .col-lg-3 { - max-width:25%; - flex-basis:25% - } - .col-lg-o-2 { - margin-left:16.66667% - } - .col-lg-4 { - max-width:33.33333%; - flex-basis:33.33333% - } - .col-lg-o-3 { - margin-left:25% - } - .col-lg-5 { - max-width:41.66667%; - flex-basis:41.66667% - } - .col-lg-o-4 { - margin-left:33.33333% - } - .col-lg-6 { - max-width:50%; - flex-basis:50% - } - .col-lg-o-5 { - margin-left:41.66667% - } - .col-lg-7 { - max-width:58.33333%; - flex-basis:58.33333% - } - .col-lg-o-6 { - margin-left:50% - } - .col-lg-8 { - max-width:66.66667%; - flex-basis:66.66667% - } - .col-lg-o-7 { - margin-left:58.33333% - } - .col-lg-9 { - max-width:75%; - flex-basis:75% - } - .col-lg-o-8 { - margin-left:66.66667% - } - .col-lg-10 { - max-width:83.33333%; - flex-basis:83.33333% - } - .col-lg-o-9 { - margin-left:75% - } - .col-lg-11 { - max-width:91.66667%; - flex-basis:91.66667% - } - .col-lg-o-10 { - margin-left:83.33333% - } - .col-lg-12 { - max-width:100%; - flex-basis:100% - } - .col-lg-o-11 { - margin-left:91.66667% - } - .col-lg-n { - order:initial - } - .col-lg-f { - order:-999 - } - .col-lg-l { - order:999 - } - } - :root { - --cd-b-col:#f8f8f8; - --cd-f-col:#111; - --cd-br-col:#ddd - } - .card { - display:flex; - flex-direction:column; - justify-content:space-between; - align-self:center; - position:relative; - width:100%; - background:var(--cd-b-col); - color:var(--cd-f-col); - border:.0625rem solid var(--cd-br-col); - border-radius:var(--u-br-r); - margin:var(--u-m); - overflow:hidden - } - @media screen and (min-width: 320px) { - .card { - max-width:320px - } - } - .card>.section { - background:var(--cd-b-col); - color:var(--cd-f-col); - box-sizing:border-box; - margin:0; - border:0; - border-radius:0; - border-bottom:.0625rem solid var(--cd-br-col); - padding:var(--u-p); - width:100% - } - .card>.section.media { - height:200px; - padding:0; - -o-object-fit:cover; - object-fit:cover - } - .card>.section:last-child { - border-bottom:0 - } - .card.fluid { - max-width:100%; - width:auto - } - .card>.section.double-padded { - padding:calc(1.5 * var(--u-p)) - } - .card { - box-shadow:0 1.25rem 2.5rem -0.625rem rgba(0,32,64,0.1) - } - .card>h3.section.double-padded { - padding:calc(3 * var(--u-p)) - } - .card>.section.double-padded>p { - margin:var(--u-m) calc(var(--u-m)/ 2) - } - .card+.card { - margin-top:calc(5 * var(--u-m)) - } - :root { - --frm-b-col:#f0f0f0; - --frm-f-col:#111; - --frm-br-col:#ddd; - --in-b-col:#f8f8f8; - --in-f-col:#111; - --in-br-col:#ddd; - --in-fc-col:#0288d1; - --in-inv-col:#d32f2f; - --btn-b-col:#e2e2e2; - --btn-h-b-col:#dcdcdc; - --btn-f-col:#212121; - --btn-br-col:transparent; - --btn-h-br-col:transparent; - --btn-grp-br-col:rgba(124,124,124,0.54) - } - form { - background:var(--frm-b-col); - color:var(--frm-f-col); - border:.0625rem solid var(--frm-br-col); - border-radius:var(--u-br-r); - margin:var(--u-m); - padding:calc(2 * var(--u-p)) var(--u-p) - } - fieldset { - border:.0625rem solid var(--frm-br-col); - border-radius:var(--u-br-r); - margin:calc(var(--u-m)/ 4); - padding:var(--u-p) - } - legend { - box-sizing:border-box; - display:table; - max-width:100%; - white-space:normal; - font-weight:700; - padding:calc(var(--u-p)/ 2) - } - label { - padding:calc(var(--u-p)/ 2) var(--u-p) - } - .input-group { - display:inline-block - } - [type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button { - height:auto - } - [type="search"] { - -webkit-appearance:textfield; - outline-offset:-2px - } - [type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration { - -webkit-appearance:none - } - input:not([type]),[type="text"],[type="email"],[type="number"],[type="search"],[type="password"],[type="url"],[type="tel"],[type="checkbox"],[type="radio"],textarea,select { - box-sizing:border-box; - background:var(--in-b-col); - color:var(--in-f-col); - border:.0625rem solid var(--in-br-col); - border-radius:var(--u-br-r); - margin:calc(var(--u-m)/ 2); - padding:var(--u-p) calc(1.5 * var(--u-p)) - } - input:not([type="button"]):not([type="submit"]):not([type="reset"]):hover,input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus,textarea:hover,textarea:focus,select:hover,select:focus { - border-color:var(--in-fc-col); - box-shadow:none - } - input:not([type="button"]):not([type="submit"]):not([type="reset"]):invalid,input:not([type="button"]):not([type="submit"]):not([type="reset"]):focus:invalid,textarea:invalid,textarea:focus:invalid,select:invalid,select:focus:invalid { - border-color:var(--in-inv-col); - box-shadow:none - } - input:not([type="button"]):not([type="submit"]):not([type="reset"])[readonly],textarea[readonly],select[readonly] { - background:var(--b-col2) - } - select { - max-width:100% - } - option { - overflow:hidden; - text-overflow:ellipsis - } - [type="checkbox"],[type="radio"] { - -webkit-appearance:none; - -moz-appearance:none; - appearance:none; - position:relative; - height:calc(1rem + var(--u-p) / 2); - width:calc(1rem + var(--u-p) / 2); - vertical-align:text-bottom; - padding:0; - flex-basis:calc(1rem + var(--u-p) / 2)!important; - flex-grow:0!important - } - [type="checkbox"]:checked:before,[type="radio"]:checked:before { - position:absolute - } - [type="checkbox"]:checked:before { - content:'\2713'; - font-family:sans-serif; - font-size:calc(1rem + var(--u-p) / 2); - top:calc(0rem - var(--u-p)); - left:calc(var(--u-p)/ 4) - } - [type="radio"] { - border-radius:100% - } - [type="radio"]:checked:before { - border-radius:100%; - content:''; - top:calc(.0625rem + var(--u-p) / 2); - left:calc(.0625rem + var(--u-p) / 2); - background:var(--in-f-col); - width:0.5rem; - height:0.5rem - } - :placeholder-shown { - color:var(--in-f-col) - } - ::-ms-placeholder { - color:var(--in-f-col); - opacity:0.54 - } - button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner { - border-style:none; - padding:0 - } - button,html [type="button"],[type="reset"],[type="submit"] { - -webkit-appearance:button - } - button { - overflow:visible; - text-transform:none - } - button,[type="button"],[type="submit"],[type="reset"],a.button,label.button,.button,a[role="button"],label[role="button"],[role="button"] { - display:inline-block; - background:var(--btn-b-col); - color:var(--btn-f-col); - border:.0625rem solid var(--btn-br-col); - border-radius:var(--u-br-r); - padding:var(--u-p) calc(1.5 * var(--u-p)); - margin:var(--u-m); - text-decoration:none; - cursor:pointer; - transition:background 0.3s - } - button:hover,button:focus,[type="button"]:hover,[type="button"]:focus,[type="submit"]:hover,[type="submit"]:focus,[type="reset"]:hover,[type="reset"]:focus,a.button:hover,a.button:focus,label.button:hover,label.button:focus,.button:hover,.button:focus,a[role="button"]:hover,a[role="button"]:focus,label[role="button"]:hover,label[role="button"]:focus,[role="button"]:hover,[role="button"]:focus { - background:var(--btn-h-b-col); - border-color:var(--btn-h-br-col) - } - input:disabled,input[disabled],textarea:disabled,textarea[disabled],select:disabled,select[disabled],button:disabled,button[disabled],.button:disabled,.button[disabled],[role="button"]:disabled,[role="button"][disabled] { - cursor:not-allowed; - opacity:.75 - } - .button-group { - display:flex; - border:.0625rem solid var(--btn-grp-br-col); - border-radius:var(--u-br-r); - margin:var(--u-m) - } - .button-group>button,.button-group [type="button"],.button-group>[type="submit"],.button-group>[type="reset"],.button-group>.button,.button-group>[role="button"] { - margin:0; - max-width:100%; - flex:1 1 auto; - text-align:center; - border:0; - border-radius:0; - box-shadow:none - } - .button-group>:not(:first-child) { - border-left:.0625rem solid var(--btn-grp-br-col) - } - @media screen and (max-width: 767px) { - .button-group { - flex-direction:column - } - .button-group>:not(:first-child) { - border:0; - border-top:.0625rem solid var(--btn-grp-br-col) - } - } - button.primary,[type="button"].primary,[type="submit"].primary,[type="reset"].primary,.button.primary,[role="button"].primary { - --btn-b-col:#1976d2; - --btn-f-col:#f8f8f8 - } - button.primary:hover,button.primary:focus,[type="button"].primary:hover,[type="button"].primary:focus,[type="submit"].primary:hover,[type="submit"].primary:focus,[type="reset"].primary:hover,[type="reset"].primary:focus,.button.primary:hover,.button.primary:focus,[role="button"].primary:hover,[role="button"].primary:focus { - --btn-h-b-col:#1565c0 - } - :root { - --hd-b-col:#f8f8f8; - --hd-hv-b-col:#f0f0f0; - --hd-f-col:#444; - --hd-br-col:#ddd; - --nv-b-col:#f8f8f8; - --nv-hv-b-col:#f0f0f0; - --nv-f-col:#444; - --nv-br-col:#ddd; - --nv-ln-col:#0277bd; - --ft-f-col:#444; - --ft-b-col:#f8f8f8; - --ft-br-col:#ddd; - --ft-ln-col:#0277bd; - --dr-b-col:#f8f8f8; - --dr-hv-b-col:#f0f0f0; - --dr-br-col:#ddd; - --dr-cl-col:#444 - } - header { - height:3.1875rem; - background:var(--hd-b-col); - color:var(--hd-f-col); - border-bottom:.0625rem solid var(--hd-br-col); - padding:calc(var(--u-p)/ 4) 0; - white-space:nowrap; - overflow-x:auto; - overflow-y:hidden - } - header.row { - box-sizing:content-box - } - header .logo { - color:var(--hd-f-col); - font-size:1.75rem; - padding:var(--u-p) calc(2 * var(--u-p)); - text-decoration:none - } - header button,header [type="button"],header .button,header [role="button"] { - box-sizing:border-box; - position:relative; - top:calc(0rem - var(--u-p) / 4); - height:calc(3.1875rem + var(--u-p) / 2); - background:var(--hd-b-col); - line-height:calc(3.1875rem - var(--u-p) * 1.5); - text-align:center; - color:var(--hd-f-col); - border:0; - border-radius:0; - margin:0; - text-transform:uppercase - } - header button:hover,header button:focus,header [type="button"]:hover,header [type="button"]:focus,header .button:hover,header .button:focus,header [role="button"]:hover,header [role="button"]:focus { - background:var(--hd-hv-b-col) - } - nav { - background:var(--nv-b-col); - color:var(--nv-f-col); - border:.0625rem solid var(--nv-br-col); - border-radius:var(--u-br-r); - margin:var(--u-m) - } - nav * { - padding:var(--u-p) calc(1.5 * var(--u-p)) - } - nav a,nav a:visited { - display:block; - color:var(--nv-ln-col); - border-radius:var(--u-br-r); - transition:background 0.3s - } - nav a:hover,nav a:focus,nav a:visited:hover,nav a:visited:focus { - text-decoration:none; - background:var(--nv-hv-b-col) - } - nav .sublink-1 { - position:relative; - margin-left:calc(2 * var(--u-p)) - } - nav .sublink-1:before { - position:absolute; - left:calc(var(--u-p) - 1 * var(--u-p)); - top:-.0625rem; - content:''; - height:100%; - border:.0625rem solid var(--nv-br-col); - border-left:0 - } - footer { - background:var(--ft-b-col); - color:var(--ft-f-col); - border-top:.0625rem solid var(--ft-br-col); - padding:calc(2 * var(--u-p)) var(--u-p); - font-size:.875rem - } - footer a,footer a:visited { - color:var(--ft-ln-col) - } - header.sticky { - position:-webkit-sticky; - position:sticky; - z-index:1101; - top:0 - } - footer.sticky { - position:-webkit-sticky; - position:sticky; - z-index:1101; - bottom:0 - } - .drawer-toggle:before { - display:inline-block; - position:relative; - vertical-align:bottom; - content:'\00a0\2261\00a0'; - font-family:sans-serif; - font-size:1.5em - } - @media screen and (min-width: 768px) { - .drawer-toggle:not(.persistent) { - display:none - } - } - [type="checkbox"].drawer { - height:1px; - width:1px; - margin:-1px; - overflow:hidden; - position:absolute; - clip:rect(0 0 0 0); - -webkit-clip-path:inset(100%); - clip-path:inset(100%) - } - [type="checkbox"].drawer+* { - display:block; - box-sizing:border-box; - position:fixed; - top:0; - width:320px; - height:100vh; - overflow-y:auto; - background:var(--dr-b-col); - border:.0625rem solid var(--dr-br-col); - border-radius:0; - margin:0; - z-index:1110; - left:-320px; - transition:left 0.3s - } - [type="checkbox"].drawer+* .drawer-close { - position:absolute; - top:var(--u-m); - right:var(--u-m); - z-index:1111; - width:2rem; - height:2rem; - border-radius:var(--u-br-r); - padding:var(--u-p); - margin:0; - cursor:pointer; - transition:background 0.3s - } - [type="checkbox"].drawer+* .drawer-close:before { - display:block; - content:'\00D7'; - color:var(--dr-cl-col); - position:relative; - font-family:sans-serif; - font-size:2rem; - line-height:1; - text-align:center - } - [type="checkbox"].drawer+* .drawer-close:hover,[type="checkbox"].drawer+* .drawer-close:focus { - background:var(--dr-hv-b-col) - } - @media screen and (max-width: 320px) { - [type="checkbox"].drawer+* { - width:100% - } - } - [type="checkbox"].drawer:checked+* { - left:0 - } - @media screen and (min-width: 768px) { - [type="checkbox"].drawer:not(.persistent)+* { - position:static; - height:100%; - z-index:1100 - } - [type="checkbox"].drawer:not(.persistent)+* .drawer-close { - display:none - } - } - :root { - --mrk-b-col:#424242; - --mrk-f-col:#fafafa - } - mark { - background:var(--mrk-b-col); - color:var(--mrk-f-col); - font-size:.5em; - line-height:1em; - border-radius:var(--u-br-r); - padding:calc(var(--u-p)/ 4) calc(var(--u-p)/ 2) - } - mark.inline-block { - display:inline-block; - font-size:1em; - line-height:1.5; - padding:calc(var(--u-p)/ 2) var(--u-p) - } - :root { - --tst-b-col:#212121; - --tst-f-col:#fafafa - } - .toast { - position:fixed; - bottom:calc(var(--u-m) * 3); - left:50%; - transform:translate(-50%,-50%); - z-index:1111; - color:var(--tst-f-col); - background:var(--tst-b-col); - border-radius:calc(var(--u-br-r) * 16); - padding:var(--u-p) calc(var(--u-p) * 3) - } - .toast { - bottom:calc(var(--u-m)/ 2); - opacity:1; - transition:opacity 0.3s ease-in-out - } - mark { - position:relative; - top:-0.25rem; - left:0.25rem - } - mark.secondary { - --mrk-b-col:#d32f2f - } - mark.tertiary { - --mrk-b-col:#308732 - } - mark.tag { - padding:calc(var(--u-p)/2) var(--u-p); - border-radius:1em - } - code,pre,kbd,code *,pre *,kbd *,code[class*="language-"],pre[class*="language-"] { - font-family:Menlo,Consolas,monospace!important - } - pre { - border:0.0625rem solid var(--br-col2); - border-radius:var(--u-br-r) - } - .group { - position:relative; - margin-top:2em; - margin-bottom:1em - } - .search { - font-size:0.875rem; - margin-top:-0.1em; - display:block; - width:100%; - border:none; - border-bottom:.0625rem solid var(--nv-ln-col) - } - .search:focus { - outline:none - } - label#search-label { - color:var(--nv-ln-col); - font-size:1.125rem; - font-weight:400; - position:absolute; - left:0.3125rem; - top:0.625rem - } - .search:focus~label#search-label,.search:valid~label#search-label { - top:-1.25rem; - font-size:0.875rem; - color:var(--nv-ln-col) - } - label#menu-toggle { - width:3.4375rem - } - header h1.logo { - margin-top:-0.8rem; - text-align:center - } - header h1.logo a { - text-decoration:none; - color:#111 - } - header #title { - position:relative; - top:-1rem - } - @media screen and (max-width: 500px) { - header #title { - font-size:1rem; - display:block - } - } - header h1 small { - display:block; - font-size:0.875rem; - color:#888; - margin-top:-0.8rem - } - @media screen and (max-width: 768px) { - header h1 small { - font-size:0.75rem - } - } - @media screen and (max-width: 600px) { - header h1 small { - font-size:0.625rem - } - } - @media screen and (max-width: 500px) { - header h1 small { - font-size:0.5rem; - margin-top:-1.2rem - } - } - label#menu-toggle { - position:absolute; - left:0.5rem; - top:0.5rem; - width:3.4375rem - } - main { - padding:0 - } - :root { - --clps-lbl-b-col:#e8e8e8; - --clps-lbl-f-col:#212121; - --clps-lbl-h-b-col:#f0f0f0; - --clps-sel-lbl-b-col:#ececec; - --clps-br-col:#ddd; - --clps-cnt-b-col:#fafafa; - --clps-sel-lbl-br-col:#0277bd - } - label.collapse { - width:100%; - display:inline-block; - cursor:pointer; - box-sizing:border-box; - transition:background 0.3s; - color:var(--clps-lbl-f-col); - background:var(--clps-lbl-b-col); - border:.0625rem solid var(--clps-br-col); - padding:calc(1.5 * var(--u-p)); - border-radius:var(--u-br-r) - } - label.collapse:hover,label.collapse:focus { - background:var(--clps-lbl-h-b-col) - } - label.collapse+pre { - box-sizing:border-box; - height:0; - max-height:1px; - overflow:auto; - margin:0; - border:0; - padding:0; - transition:max-height 0.3s - } - label.collapse.toggled { - background:var(--clps-sel-lbl-b-col); - border-bottom-color:var(--clps-sel-lbl-br-col); - border-bottom-left-radius:0; - border-bottom-right-radius:0 - } - label.collapse.toggled+pre { - border-top-left-radius:0; - border-top-right-radius:0; - position:relative; - width:100%; - height:auto; - border:.0625rem solid var(--clps-br-col); - border-top:0; - padding:calc(2 * var(--u-p)); - max-height:400px - } - button.primary.clipboard-copy { - width:100%; - margin-left:0 - } - button.primary.clipboard-copy>img { - vertical-align:bottom - } - code[class*="language-"],pre[class*="language-"] { - color:#222; - text-align:left; - white-space:pre; - word-spacing:normal; - word-break:normal; - word-wrap:normal; - line-height:1.8; - -moz-tab-size:2; - -o-tab-size:2; - tab-size:2; - -webkit-hypens:none; - -moz-hyphens:none; - -ms-hyphens:none; - hyphens:none - } - pre[class*="language-"] { - padding:calc(2 * var(--u-p)); - overflow:auto; - margin:var(--u-m) 0 - } - pre[class*="language-"]::-moz-selection,pre[class*="language-"] ::-moz-selection,code[class*="language-"]::-moz-selection,code[class*="language-"] ::-moz-selection { - background:#b3d4fc - } - pre[class*="language-"]::selection,pre[class*="language-"] ::selection,code[class*="language-"]::selection,code[class*="language-"] ::selection { - background:#b3d4fc - } - :not(pre)>code[class*="language-"] { - padding:.1em; - border-radius:.3em; - white-space:normal - } - .token.comment,.token.prolog,.token.doctype,.token.cdata { - color:#7a8490 - } - .token.punctuation { - color:#666 - } - .namespace { - opacity:.7 - } - .token.property,.token.tag,.token.boolean,.token.constant,.token.symbol,.token.deleted,.token.function { - color:#005cc5 - } - .token.number,.token.class-name { - color:#832ed2 - } - .token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted { - color:#067e36 - } - .token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.atrule,.token.attr-value,.token.keyword { - color:#d73a49 - } - .token.regex { - color:#097cab - } - .token.important,.token.variable { - color:#e90 - } - .token.important,.token.bold { - font-weight:bold - } - .token.italic { - font-style:italic - } - .token.entity { - cursor:help - } - button.scroll-to-top { - border-radius:100%; - font-size:1.5rem; - line-height:1; - box-sizing:border-box; - width:2.75rem; - height:2.75rem; - position:fixed; - bottom:1rem; - right:2rem; - background:var(--b-col); - box-shadow:0 0.25rem 0.25rem 0 rgba(0,0,0,0.125),0 0.125rem 0.125rem -0.125rem rgba(0,0,0,0.25) - } - button.scroll-to-top:hover,button.scroll-to-top:focus { - background:var(--b-col2) - } - \ No newline at end of file diff --git a/website/app/static/favicon.1png b/website/app/static/favicon.1png deleted file mode 100644 index b84672d14070753d6698f8e70725799a92f7017b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99889 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

_b|Cv6K%#75DroCIZ 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 diff --git a/website/app/static/favicon.ico b/website/app/static/favicon.ico deleted file mode 100644 index 30fcc5df0700d66c2927f003c40cb18fee0de95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmbW0OH30{6o$v>&IQJWYnE&^nusU@DvBn?1rPy)i7ymm+^7ixp#=&;q983rDG4OX z8-!5kgVJ_vdHDz`xKJpR$g@;i9xb$%>F=4Ttw`d=GdcIp+&TYzbI!S!VRq0JwuhlH zoQc@QF#8yWi69Rn4=3l>d1H4n%--Dr7Zzy17W4Z#__Hn|Ko#4G*WFUg3^ikY zbqSk%EXDlWcqL$#Uq)SNGG0j%pv~HkidGp$CPwKE2QCmI#PK}d?33>?&emaSs0D_K zG-&dULL-TXT5=jKk5kZ*6A5eo%fB?j0}Ven*5G!|!?X4s=IR^h5*>$%bgIHr&=$l& zn;(OQ(j_qxl9O0pUc~%o1HR~MVCioVxD!0P zzaBbiIspd8^hCd;}0hBB5 zp)cnUx{J@DmvSzz6~jEYApEy&e2CZzSOyvewq>vh#daPM zr9F}gWnnywq9~|xBcXnh42Q=Zl!RuV$0acN{u-odP~{vJYOBeQg}m|(y2?_pIx~jF z1sl8`Pe}LYCXmB`>=NXP`)Dh<06q1%rLPHdJ`T3oZ@87236}ETZozZpo*hF;V?Evu xYr(DA=xhbP>GgV`*Xv=o+qX+YwbST~$jy2Psq7gX&SfEvqy4wlg6H^u=U=?c8qoj% diff --git a/website/app/static/favicon.png b/website/app/static/favicon.png deleted file mode 100644 index f98e25b179d3001364c1a0622023c9bdecadd003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7004 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 diff --git a/website/app/static/js/prism.js b/website/app/static/js/prism.js deleted file mode 100644 index 6ee9187a2..000000000 --- a/website/app/static/js/prism.js +++ /dev/null @@ -1,4 +0,0 @@ -/* PrismJS 1.10.0 -http://prismjs.com/download.html?themes=prism-okaidia&languages=python */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,N=t.length;N>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,S=w.slice(0,A),C=w.slice(j),M=[b,P];S&&(++b,k+=S.length,M.push(S));var E=new s(g,f?n.tokenize(_,f):_,y,_,m);if(M.push(E),C&&M.push(C),Array.prototype.splice.apply(t,M),1!=P&&n.matchGrammar(e,t,r,b,k,!0,g),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"malfunction":{pattern:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,alias:"function"},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; diff --git a/website/app/templates/base.html b/website/app/templates/base.html deleted file mode 100644 index 9f96496f3..000000000 --- a/website/app/templates/base.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - -30 seconds of python code - - - - {% if err_400 %} -

{{ message }}
- {% endif %} -

logo 30 seconds of python code Python Implementation of 30 seconds of code

- {% block content %}{% endblock %} - - - - diff --git a/website/app/templates/index.html b/website/app/templates/index.html deleted file mode 100644 index bb18cd40d..000000000 --- a/website/app/templates/index.html +++ /dev/null @@ -1,466 +0,0 @@ -{% extends "base.html" %} - -{% block content %}

Math

average

-

Already implemented via statistics.mean. statistics.mean takes an array as an argument whereas this function takes variadic arguments.

-

Returns the average of two or more numbers.

-

Takes the sum of all the args and divides it by len(args). The second argument 0.0 in sum is to handle floating point division in python3.

- -
def average(*args):
-    return sum(args, 0.0) / len(args)
- -
average(*[1, 2, 3]) # 2.0
-average(1, 2, 3) # 2.0
-
- -

factorial

-

Calculates the factorial of a number.

-

Use recursion. If num is less than or equal to 1, return 1. Otherwise, return the product of num and the factorial of num - 1. Throws an exception if num is a negative or a floating point number.

- -
def factorial(num):
-    if not ((num >= 0) & (num % 1 == 0)):
-        raise Exception(
-            f"Number( {num} ) can't be floating point or negative ")
-    return 1 if num == 0 else num * factorial(num - 1)
- -
factorial(6) # 720
-
- -

gcd

-

math.gcd works with only two numbers

-

Calculates the greatest common divisor between two or more numbers/lists.

-

The helperGcdfunction uses recursion. Base case is when y equals 0. In this case, return x. Otherwise, return the GCD of y and the remainder of the division x/y.

-

Uses the reduce function from the inbuilt module functools. Also defines a method spread for javascript like spreading of lists.

- -
from functools import reduce
-
-
-def spread(arg):
-    ret = []
-    for i in arg:
-        if isinstance(i, list):
-            ret.extend(i)
-        else:
-            ret.append(i)
-    return ret
-
-
-def gcd(*args):
-    numbers = []
-    numbers.extend(spread(list(args)))
-
-    def _gcd(x, y):
-        return x if not y else gcd(y, x % y)
-
-    return reduce((lambda x, y: _gcd(x, y)), numbers)
- -
gcd(8,36) # 4
-
- -

lcm

-

Returns the least common multiple of two or more numbers.

-

Use the greatest common divisor (GCD) formula and the fact that lcm(x,y) = x * y / gcd(x,y) to determine the least common multiple. The GCD formula uses recursion.

-

Uses reduce function from the inbuilt module functools. Also defines a method spread for javascript like spreading of lists.

- -
from functools import reduce
-
-
-def spread(arg):
-    ret = []
-    for i in arg:
-        if isinstance(i, list):
-            ret.extend(i)
-        else:
-            ret.append(i)
-    return ret
-
-
-def lcm(*args):
-    numbers = []
-    numbers.extend(spread(list(args)))
-
-    def _gcd(x, y):
-        return x if not y else _gcd(y, x % y)
-
-    def _lcm(x, y):
-        return x * y / _gcd(x, y)
-
-    return reduce((lambda x, y: _lcm(x, y)), numbers)
- -
lcm(12, 7) # 84
-lcm([1, 3, 4], 5) # 60
-
- -

max_n

-

Returns the n maximum elements from the provided list. If n is greater than or equal to the provided list's length, then return the original list(sorted in descending order).

-

Use list.sort() combined with the deepcopy function from the inbuilt copy module to create a shallow clone of the list and sort it in ascending order and then use list.reverse() reverse it to make it descending order. Use [:n] to get the specified number of elements. Omit the second argument, n, to get a one-element list

- -
def max_n(lst, n=1, reverse=True):
-    return sorted(lst, reverse=reverse)[:n]
- -
max_n([1, 2, 3]) # [3]
-max_n([1, 2, 3], 2) # [3,2]
-
- -

min_n

-

Returns the n minimum elements from the provided list. If n is greater than or equal to the provided list's length, then return the original list(sorted in ascending order).

-

Use list.sort() combined with the deepcopy function from the inbuilt copy module to create a shallow clone of the list and sort it in ascending order. Use [:n] to get the specified number of elements. Omit the second argument, n, to get a one-element list

- -
from copy import deepcopy
-
-
-def min_n(lst, n=1):
-    numbers = deepcopy(lst)
-    numbers.sort()
-    return numbers[:n]
- -
min_n([1, 2, 3]) # [1]
-min_n([1, 2, 3], 2) # [1,2]
-
- -

List

chunk

-

Chunks an list into smaller lists of a specified size.

-

Uses range to create a list of desired size. Then use map on this list and fill it with splices of lst.

- -
from math import ceil
-
-
-def chunk(lst, size):
-    return list(
-        map(lambda x: lst[x * size:x * size + size],
-            list(range(0, ceil(len(lst) / size)))))
- -
chunk([1,2,3,4,5],2) # [[1,2],[3,4],5]
-
- -

compact

-

Removes falsey values from a list.

-

Use filter() to filter out falsey values (False, None, 0, and "").

- -
def compact(lst):
-    return list(filter(bool, lst))
- -
compact([0, 1, False, 2, '', 3, 'a', 's', 34]) # [ 1, 2, 3, 'a', 's', 34 ]
-
- -

count_occurences

-

Already implemented via list.count().

-

Counts the occurrences of a value in an list.

-

Uses the list comprehension to increment a counter each time you encounter the specific value inside the list.

- -
def count_occurrences(lst, val):
-    return len([x for x in lst if x == val and type(x) == type(val)])
- -
count_occurrences([1, 1, 2, 1, 2, 3], 1) # 3
-
- -

deep_flatten

-

Deep flattens a list.

-

Use recursion. Use list.extend() with an empty list (result) and the spread function to flatten a list. Recursively flatten each element that is a list.

- -
def spread(arg):
-    ret = []
-    for i in arg:
-        if isinstance(i, list):
-            ret.extend(i)
-        else:
-            ret.append(i)
-    return ret
-
-
-def deep_flatten(lst):
-    result = []
-    result.extend(
-        spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))
-    return result
- -
deep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]
-
- -

difference

-

Returns the difference between two iterables.

-

Use list comprehension to only keep values not contained in b

- -
def difference(a, b):
-    return [item for item in a if item not in b]
- -
difference([1, 2, 3], [1, 2, 4]) # [3]
-
- -

shuffle

-

The same algorithm is already implemented via random.shuffle.

-

Randomizes the order of the values of an list, returning a new list.

-

Uses the Fisher-Yates algorithm to reorder the elements of the list.

- -
from copy import deepcopy
-from random import randint
-
-
-def shuffle(lst):
-    temp_lst = deepcopy(lst)
-    m = len(temp_lst)
-    while (m):
-        m -= 1
-        i = randint(0, m)
-        temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
-    return temp_lst
- -
foo = [1,2,3]
-shuffle(foo) # [2,3,1] , foo = [1,2,3]
-
- -

spread

-

Implements javascript's [].concat(...arr). Flattens the list(non-deep) and returns an list.

- -
def spread(arg):
-    ret = []
-    for i in arg:
-        if isinstance(i, list):
-            ret.extend(i)
-        else:
-            ret.append(i)
-    return ret
- -
spread([1,2,3,[4,5,6],[7],8,9]) # [1,2,3,4,5,6,7,8,9]
-
- -

zip

-

Already implemented via itertools.zip_longest()

-

Creates a list of elements, grouped based on the position in the original lists.

-

Use max combined with list comprehension to get the length of the longest list in the arguments. Loops for max_length times grouping elements. If lengths of lists vary fill_value is used. By default fill_value is None.

- -
def zip(*args, fillvalue=None):
-    max_length = max([len(lst) for lst in args])
-    result = []
-    for i in range(max_length):
-        result.append([
-            args[k][i] if i < len(args[k]) else None for k in range(len(args))
-        ])
-    return result
- -
zip(['a', 'b'], [1, 2], [True, False]) # [['a', 1, True], ['b', 2, False]]
-zip(['a'], [1, 2], [True, False]) # [['a', 1, True], [None, 2, False]]
-zip(['a'], [1, 2], [True, False], fill_value = '_') # [['a', 1, True], ['_', 2, False]]
-
- -

count_by

-

Already implemented via collections.Counter

-

Groups the elements of a list based on the given function and returns the count of elements in each group.

-

Use map() to map the values of the list using the given function. Iterate over the map and increase the the elements count each time it occurs.

- -
def count_by(arr, fn=lambda x: x):
-    key = {}
-    for el in map(fn, arr):
-        key[el] = 0 if el not in key else key[el]
-        key[el] += 1
-    return key
- -
from math import floor
-count_by([6.1, 4.2, 6.3], floor) # {4: 1, 6: 2}
-count_by(['one', 'two', 'three'], len) # {3: 2, 5: 1}
-
- -

difference_by

-

Returns the difference between two list, after applying the provided function to each list element of both.

-

Create a set by applying fn to each element in b, then use list comprehension in combination with fn on a to only keep values not contained in the previously created set.

- -
def difference_by(a, b, fn):
-    b = set(map(fn, b))
-    return [item for item in a if fn(item) not in b]
- -
from math import floor
-difference_by([2.1, 1.2], [2.3, 3.4],floor) # [1.2]
-difference_by([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], lambda v : v['x']) # [ { x: 2 } ]
-
- -

insertion_sort

-

On a very basic level, an insertion sort algorithm contains the logic of shifting around and inserting elements in order to sort an unordered list of any size. The way that it goes about inserting elements, however, is what makes insertion sort so very interesting!

- -
def insertion_sort(lst):
-
-    for i in range(1, len(lst)):
-        key = lst[i]
-        j = i - 1
-        while j >= 0 and key < lst[j]:
-            lst[j + 1] = lst[j]
-            j -= 1
-            lst[j + 1] = key
- -
lst = [7,4,9,2,6,3]
-insertionsort(lst)
-print('Sorted %s'  %lst) # sorted [2, 3, 4, 6, 7, 9]
-
- -

bubble_sort

-

Bubble_sort uses the technique of comparing and swapping

- -
def bubble_sort(lst):
-    for passnum in range(len(lst) - 1, 0, -1):
-        for i in range(passnum):
-            if lst[i] > lst[i + 1]:
-                temp = lst[i]
-                lst[i] = lst[i + 1]
-                lst[i + 1] = temp
- -
lst = [54,26,93,17,77,31,44,55,20]
-bubble_sort(lst)
-print("sorted %s" %lst) # [17,20,26,31,44,54,55,77,91]
-
- -

has_duplicates

-

Checks a flat list for duplicate values. Returns True if duplicate values exist and False if values are all unique.

-

This function compares the length of the list with length of the set() of the list. set() removes duplicate values from the list.

- -
def has_duplicates(lst):
-    return len(lst) != len(set(lst))
- -
x = [1,2,3,4,5,5]
-y = [1,2,3,4,5]
-has_duplicates(x) # True
-has_duplicates(y) # False
-
- -

String

count_vowels

-

Retuns number of vowels in provided string.

-

Use a regular expression to count the number of vowels (A, E, I, O, U) in a string.

- -
import re
-
-
-def count_vowels(str):
-    return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE)))
- -
count_vowels('foobar') # 3
-count_vowels('gym') # 0
-
- -

byte_size

-

Returns the length of a string in bytes.

-

utf-8 encodes a given string and find its length.

- -
def byte_size(string):
-    return(len(string.encode('utf-8')))
- -
byte_size('😀') # 4
-byte_size('Hello World') # 11
-
- -

capitalize

-

Capitalizes the first letter of a string.

-

Capitalizes the fist letter of the sring and then adds it with rest of the string. Omit the lower_rest parameter to keep the rest of the string intact, or set it to true to convert to lowercase.

- -
def capitalize(string, lower_rest=False):
-    return string[:1].upper() + (string[1:].lower() if lower_rest else string[1:])
- -
capitalize('fooBar') # 'FooBar'
-capitalize('fooBar', True) # 'Foobar'
-
- -

capitalize_every_word

-

Capitalizes the first letter of every word in a string.

-

Uses str.title to capitalize first letter of evry word in the string.

- -
def capitalize_every_word(string):
-    return string.title()
- -
capitalize_every_word('hello world!') # 'Hello World!'
-
- -

decapitalize

-

Decapitalizes the first letter of a string.

-

Decapitalizes the fist letter of the sring and then adds it with rest of the string. Omit the upper_rest parameter to keep the rest of the string intact, or set it to true to convert to uppercase.

- -
def decapitalize(string, upper_rest=False):
-    return str[:1].lower() + (str[1:].upper() if upper_rest else str[1:])
- -
decapitalize('FooBar') # 'fooBar'
-decapitalize('FooBar', True) # 'fOOBAR'
-
- -

palindrome

-

Returns True if the given string is a palindrome, False otherwise.

-

Convert string str.lower() and use re.sub to remove non-alphanumeric characters from it. Then compare the new string to the reversed.

- -
def palindrome(string):
-    from re import sub
-    s = sub('[\W_]', '', string.lower())
-    return s == s[::-1]
- -
palindrome('taco cat') # True
-
- -

is_upper_case

-

Checks if a string is upper case.

-

Convert the given string to upper case, using str.upper() method and compare it to the original.

- -
def is_upper_case(string):
-    return string == string.upper()
- -
is_upper_case('ABC') # True
-is_upper_case('a3@$') # True
-is_upper_case('aB4') # False
-
- -

is_lower_case

-

Checks if a string is lower case.

-

Convert the given string to lower case, using str.lower() method and compare it to the original.

- -
def is_lower_case(string):
-    return string == string.lower()
- -
is_lower_case('abc') # True
-is_lower_case('a3@$') # True
-is_lower_case('Ab4') # False
-
- -

Object

keys_only

-

Function which accepts a dictionary of key value pairs and returns a new flat list of only the keys.

-

Uses the .items() function with a for loop on the dictionary to track both the key and value and returns a new list by appending the keys to it. Best used on 1 level-deep key:value pair dictionaries (a flat dictionary) and not nested data-structures which are also commonly used with dictionaries. (a flat dictionary resembles a json and a flat list an array for javascript people).

- -
def keys_only(flat_dict):
-    lst = []
-    for k, v in flat_dict.items():
-        lst.append(k)
-    return lst
- -
ages = {
-     "Peter": 10,
-     "Isabel": 11,
-     "Anna": 9,
-}
-keys_only(ages) # ['Peter', 'Isabel', 'Anna']
-
- -

values_only

-

Function which accepts a dictionary of key value pairs and returns a new flat list of only the values.

-

Uses the .items() function with a for loop on the dictionary to track both the key and value of the iteration and returns a new list by appending the values to it. Best used on 1 level-deep key:value pair dictionaries and not nested data-structures.

- -
def values_only(dict):
-    lst = []
-    for k, v in dict.items():
-        lst.append(v)
-    return lst
- -
ages = {
-     "Peter": 10,
-     "Isabel": 11,
-     "Anna": 9,
-}
-values_only(ages) # [10, 11, 9]
-
- -

all_unique

-

Checks a flat list for all unique values. Returns True if list values are all unique and False if list values aren't all unique.

-

This function compares the length of the list with length of the set() of the list. set() removes duplicate values from the list.

- -
def all_unique(lst):
-    return len(lst) == len(set(lst))
- -
x = [1,2,3,4,5,6]
-y = [1,2,2,3,4,5]
-all_unique(x) # True
-all_unique(y) # False
-
- -
- -
{% endblock %} \ No newline at end of file diff --git a/website/app/templates/prism.css b/website/app/templates/prism.css deleted file mode 100644 index 5bf332cb8..000000000 --- a/website/app/templates/prism.css +++ /dev/null @@ -1,124 +0,0 @@ -/* PrismJS 1.10.0 -http://prismjs.com/download.html?themes=prism-okaidia&languages=python */ -/** - * okaidia theme for JavaScript, CSS and HTML - * Loosely based on Monokai textmate theme by http://www.monokai.nl/ - * @author ocodia - */ - -code[class*="language-"], -pre[class*="language-"] { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre[class*="language-"] { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: #272822; -} - -/* Inline code */ -:not(pre) > code[class*="language-"] { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #f8f8f2; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: #f92672; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: #f8f8f2; -} - -.token.atrule, -.token.attr-value, -.token.function { - color: #e6db74; -} - -.token.keyword { - color: #66d9ef; -} - -.token.regex, -.token.important { - color: #fd971f; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - diff --git a/website/app/templates/prism.js b/website/app/templates/prism.js deleted file mode 100644 index 982420588..000000000 --- a/website/app/templates/prism.js +++ /dev/null @@ -1,2 +0,0 @@ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,N=t.length;N>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,S=w.slice(0,A),C=w.slice(j),M=[b,P];S&&(++b,k+=S.length,M.push(S));var E=new s(g,f?n.tokenize(_,f):_,y,_,m);if(M.push(E),C&&M.push(C),Array.prototype.splice.apply(t,M),1!=P&&n.matchGrammar(e,t,r,b,k,!0,g),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"callable":{pattern:/\S+\([\s\S]*\)/g},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; diff --git a/website/app/vote.py b/website/app/vote.py deleted file mode 100644 index 7132c5487..000000000 --- a/website/app/vote.py +++ /dev/null @@ -1,16 +0,0 @@ -import json - - -def vote(snippet): - snippets = open('website/app/snippets').read().split('\n') - with open('website/app/votes.json', 'r') as f: - if snippet in snippets: - data = json.load(f) - try: - data[snippet] - except KeyError: - data[snippet] = 0 - data[snippet] += 1 - open('website/app/votes.json','w').write(str(data).replace("'",'"')) - else: - raise Exception(f'{snippet} does not exists ') diff --git a/website/app/vote_data.py b/website/app/vote_data.py deleted file mode 100644 index 64b01507a..000000000 --- a/website/app/vote_data.py +++ /dev/null @@ -1,16 +0,0 @@ -import json - -def vote_data(): - f = open('website/app/snippets') - snippets = f.read().split('\n') - f.close() - - f = open('website/app/votes.json') - votes_data = json.load(f) - votes = {} - for snippet in snippets: - try: - votes[snippet] = votes_data[snippet] - except KeyError: - votes[snippet] = 0 - return votes diff --git a/website/app/votes.json b/website/app/votes.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/website/app/votes.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/website/main.py b/website/main.py deleted file mode 100644 index 9409634fa..000000000 --- a/website/main.py +++ /dev/null @@ -1,69 +0,0 @@ -import os -import re - -import emoji -import mistune - -codeRe = "```\s*python([\s\S]*?)```" -def tagger(): - tag_data = open('tag_database').read() - tag_dict = {} - tag_list = filter(lambda x:x.strip() != '',tag_data.split('\n')) - for tag in tag_list: - category = tag.split(':')[1] - snippet = tag.split(':')[0] - if category in tag_dict: - tag_dict[category].append(snippet) - else: - tag_dict[category] = [snippet] - return tag_dict - -class MyRenderer(mistune.Renderer): - def block_code(self, code, lang): - if not lang: - return f'\n
{mistune.escape(code.strip())}
\n' - else: - return f'\n
{mistune.escape(code.strip())}
\n' - - -renderer = MyRenderer() -md = mistune.Markdown(renderer=renderer,escape=True) -def title_case(str): - return str[:1].upper() + str[1:].lower() - -rendered = '' - -tag_dict = tagger() - -for category in tag_dict: - rendered += f'

{title_case(category)}

' - snippets = tag_dict[category] - for file in snippets: - content = open('snippets/'+file+'.md').read() - content = re.sub(':(\S+):',r':\1:',content) - codeParts = re.split(codeRe,content) - codeParts[3] = f'\n\n\n\n```python\n{codeParts[3].strip()}\n```\n' - content = codeParts[0] + '``` python' + codeParts[1] + '```' + codeParts[2] + codeParts[3] - content = f'
{emoji.emojize(md.render(content),use_aliases=True)}
'+'\n\n' - rendered += re.sub('

(\S+)

',r'

\1

',content) + '
' - rendered = re.sub('

(\S+)

',r'

\1

',rendered) -nav_string = '' -start = '''{% extends "base.html" %} - -{% block content %}''' - -end = '{% endblock %}' - -footer = ''' - - ''' -rendered = f'
{nav_string}
' + rendered + f'{footer}
' -rendered = re.sub('','',rendered) -open('website/app/templates/index.html','w',encoding='utf-8').write(start + rendered + end) -snippets = [snippet.replace('.md','') for snippet in snippets] -open('website/app/snippets','w').write('\n'.join(snippets)) diff --git a/website/requirements.txt b/website/requirements.txt deleted file mode 100644 index d588895dc..000000000 --- a/website/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -cffi==1.11.4 -click==6.7 -emoji==0.4.5 -flake8==3.5.0 -Flask==1.0 -Flask-OAuth==0.12 -gunicorn==19.7.1 -httplib2==0.10.3 -itsdangerous==0.24 -Jinja2==2.10 -MarkupSafe==1.0 -misaka==2.1.0 -mistune==0.8.3 -oauth2==1.9.0.post1 -pycparser==2.18 -Werkzeug==0.14.1 \ No newline at end of file diff --git a/website/run.py b/website/run.py deleted file mode 100644 index 9d4666819..000000000 --- a/website/run.py +++ /dev/null @@ -1,6 +0,0 @@ -from app import app - -if __name__ == '__main__': - app.jinja_env.auto_reload = True - app.config['TEMPLATES_AUTO_RELOAD'] = True - app.run(debug=True, host='0.0.0.0',port=80) \ No newline at end of file