API - update python dependencies
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| # Sphinx build info version 1 | ||||
| # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||||
| config: decfa2dae1e84647384628335efaed4b | ||||
| config: fd14930d8249b79d3fb1ebf8277e148b | ||||
| tags: 645f666f9bcd5a90fca523b33c5a78b7 | ||||
|   | ||||
							
								
								
									
										7
									
								
								docs/_static/doctools.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								docs/_static/doctools.js
									
									
									
									
										vendored
									
									
								
							| @@ -29,9 +29,14 @@ if (!window.console || !console.firebug) { | ||||
|  | ||||
| /** | ||||
|  * small helper function to urldecode strings | ||||
|  * | ||||
|  * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL | ||||
|  */ | ||||
| jQuery.urldecode = function(x) { | ||||
|   return decodeURIComponent(x).replace(/\+/g, ' '); | ||||
|   if (!x) { | ||||
|     return x | ||||
|   } | ||||
|   return decodeURIComponent(x.replace(/\+/g, ' ')); | ||||
| }; | ||||
|  | ||||
| /** | ||||
|   | ||||
							
								
								
									
										4
									
								
								docs/_static/language_data.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								docs/_static/language_data.js
									
									
									
									
										vendored
									
									
								
							| @@ -13,7 +13,8 @@ | ||||
| var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; | ||||
|  | ||||
|  | ||||
| /* Non-minified version JS is _stemmer.js if file is provided */  | ||||
| /* Non-minified version is copied as a separate JS file, is available */ | ||||
|  | ||||
| /** | ||||
|  * Porter Stemmer | ||||
|  */ | ||||
| @@ -199,7 +200,6 @@ var Stemmer = function() { | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| var splitChars = (function() { | ||||
|     var result = {}; | ||||
|     var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, | ||||
|   | ||||
							
								
								
									
										6
									
								
								docs/_static/pygments.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								docs/_static/pygments.css
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| pre { line-height: 125%; } | ||||
| td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } | ||||
| span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } | ||||
| td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||||
| td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||||
| span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | ||||
| td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||||
| span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | ||||
| .highlight .hll { background-color: #ffffcc } | ||||
| .highlight { background: #f8f8f8; } | ||||
|   | ||||
							
								
								
									
										26
									
								
								docs/_static/searchtools.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								docs/_static/searchtools.js
									
									
									
									
										vendored
									
									
								
							| @@ -248,7 +248,7 @@ var Search = { | ||||
|       // results left, load the summary and display it | ||||
|       if (results.length) { | ||||
|         var item = results.pop(); | ||||
|         var listItem = $('<li style="display:none"></li>'); | ||||
|         var listItem = $('<li></li>'); | ||||
|         var requestUrl = ""; | ||||
|         var linkUrl = ""; | ||||
|         if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') { | ||||
| @@ -273,9 +273,9 @@ var Search = { | ||||
|         if (item[3]) { | ||||
|           listItem.append($('<span> (' + item[3] + ')</span>')); | ||||
|           Search.output.append(listItem); | ||||
|           listItem.slideDown(5, function() { | ||||
|           setTimeout(function() { | ||||
|             displayNextItem(); | ||||
|           }); | ||||
|           }, 5); | ||||
|         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { | ||||
|           $.ajax({url: requestUrl, | ||||
|                   dataType: "text", | ||||
| @@ -285,16 +285,16 @@ var Search = { | ||||
|                       listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); | ||||
|                     } | ||||
|                     Search.output.append(listItem); | ||||
|                     listItem.slideDown(5, function() { | ||||
|                     setTimeout(function() { | ||||
|                       displayNextItem(); | ||||
|                     }); | ||||
|                     }, 5); | ||||
|                   }}); | ||||
|         } else { | ||||
|           // no source available, just display title | ||||
|           Search.output.append(listItem); | ||||
|           listItem.slideDown(5, function() { | ||||
|           setTimeout(function() { | ||||
|             displayNextItem(); | ||||
|           }); | ||||
|           }, 5); | ||||
|         } | ||||
|       } | ||||
|       // search finished, update title and status message | ||||
| @@ -379,6 +379,13 @@ var Search = { | ||||
|     return results; | ||||
|   }, | ||||
|  | ||||
|   /** | ||||
|    * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions | ||||
|    */ | ||||
|   escapeRegExp : function(string) { | ||||
|     return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string | ||||
|   }, | ||||
|  | ||||
|   /** | ||||
|    * search for full-text terms in the index | ||||
|    */ | ||||
| @@ -402,13 +409,14 @@ var Search = { | ||||
|       ]; | ||||
|       // add support for partial matches | ||||
|       if (word.length > 2) { | ||||
|         var word_regex = this.escapeRegExp(word); | ||||
|         for (var w in terms) { | ||||
|           if (w.match(word) && !terms[word]) { | ||||
|           if (w.match(word_regex) && !terms[word]) { | ||||
|             _o.push({files: terms[w], score: Scorer.partialTerm}) | ||||
|           } | ||||
|         } | ||||
|         for (var w in titleterms) { | ||||
|           if (w.match(word) && !titleterms[word]) { | ||||
|           if (w.match(word_regex) && !titleterms[word]) { | ||||
|               _o.push({files: titleterms[w], score: Scorer.partialTitle}) | ||||
|           } | ||||
|         } | ||||
|   | ||||
							
								
								
									
										2027
									
								
								docs/_static/underscore-1.12.0.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2027
									
								
								docs/_static/underscore-1.12.0.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										999
									
								
								docs/_static/underscore-1.3.1.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										999
									
								
								docs/_static/underscore-1.3.1.js
									
									
									
									
										vendored
									
									
								
							| @@ -1,999 +0,0 @@ | ||||
| //     Underscore.js 1.3.1 | ||||
| //     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. | ||||
| //     Underscore is freely distributable under the MIT license. | ||||
| //     Portions of Underscore are inspired or borrowed from Prototype, | ||||
| //     Oliver Steele's Functional, and John Resig's Micro-Templating. | ||||
| //     For all details and documentation: | ||||
| //     http://documentcloud.github.com/underscore | ||||
|  | ||||
| (function() { | ||||
|  | ||||
|   // Baseline setup | ||||
|   // -------------- | ||||
|  | ||||
|   // Establish the root object, `window` in the browser, or `global` on the server. | ||||
|   var root = this; | ||||
|  | ||||
|   // Save the previous value of the `_` variable. | ||||
|   var previousUnderscore = root._; | ||||
|  | ||||
|   // Establish the object that gets returned to break out of a loop iteration. | ||||
|   var breaker = {}; | ||||
|  | ||||
|   // Save bytes in the minified (but not gzipped) version: | ||||
|   var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; | ||||
|  | ||||
|   // Create quick reference variables for speed access to core prototypes. | ||||
|   var slice            = ArrayProto.slice, | ||||
|       unshift          = ArrayProto.unshift, | ||||
|       toString         = ObjProto.toString, | ||||
|       hasOwnProperty   = ObjProto.hasOwnProperty; | ||||
|  | ||||
|   // All **ECMAScript 5** native function implementations that we hope to use | ||||
|   // are declared here. | ||||
|   var | ||||
|     nativeForEach      = ArrayProto.forEach, | ||||
|     nativeMap          = ArrayProto.map, | ||||
|     nativeReduce       = ArrayProto.reduce, | ||||
|     nativeReduceRight  = ArrayProto.reduceRight, | ||||
|     nativeFilter       = ArrayProto.filter, | ||||
|     nativeEvery        = ArrayProto.every, | ||||
|     nativeSome         = ArrayProto.some, | ||||
|     nativeIndexOf      = ArrayProto.indexOf, | ||||
|     nativeLastIndexOf  = ArrayProto.lastIndexOf, | ||||
|     nativeIsArray      = Array.isArray, | ||||
|     nativeKeys         = Object.keys, | ||||
|     nativeBind         = FuncProto.bind; | ||||
|  | ||||
|   // Create a safe reference to the Underscore object for use below. | ||||
|   var _ = function(obj) { return new wrapper(obj); }; | ||||
|  | ||||
|   // Export the Underscore object for **Node.js**, with | ||||
|   // backwards-compatibility for the old `require()` API. If we're in | ||||
|   // the browser, add `_` as a global object via a string identifier, | ||||
|   // for Closure Compiler "advanced" mode. | ||||
|   if (typeof exports !== 'undefined') { | ||||
|     if (typeof module !== 'undefined' && module.exports) { | ||||
|       exports = module.exports = _; | ||||
|     } | ||||
|     exports._ = _; | ||||
|   } else { | ||||
|     root['_'] = _; | ||||
|   } | ||||
|  | ||||
|   // Current version. | ||||
|   _.VERSION = '1.3.1'; | ||||
|  | ||||
|   // Collection Functions | ||||
|   // -------------------- | ||||
|  | ||||
|   // The cornerstone, an `each` implementation, aka `forEach`. | ||||
|   // Handles objects with the built-in `forEach`, arrays, and raw objects. | ||||
|   // Delegates to **ECMAScript 5**'s native `forEach` if available. | ||||
|   var each = _.each = _.forEach = function(obj, iterator, context) { | ||||
|     if (obj == null) return; | ||||
|     if (nativeForEach && obj.forEach === nativeForEach) { | ||||
|       obj.forEach(iterator, context); | ||||
|     } else if (obj.length === +obj.length) { | ||||
|       for (var i = 0, l = obj.length; i < l; i++) { | ||||
|         if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; | ||||
|       } | ||||
|     } else { | ||||
|       for (var key in obj) { | ||||
|         if (_.has(obj, key)) { | ||||
|           if (iterator.call(context, obj[key], key, obj) === breaker) return; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   // Return the results of applying the iterator to each element. | ||||
|   // Delegates to **ECMAScript 5**'s native `map` if available. | ||||
|   _.map = _.collect = function(obj, iterator, context) { | ||||
|     var results = []; | ||||
|     if (obj == null) return results; | ||||
|     if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); | ||||
|     each(obj, function(value, index, list) { | ||||
|       results[results.length] = iterator.call(context, value, index, list); | ||||
|     }); | ||||
|     if (obj.length === +obj.length) results.length = obj.length; | ||||
|     return results; | ||||
|   }; | ||||
|  | ||||
|   // **Reduce** builds up a single result from a list of values, aka `inject`, | ||||
|   // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. | ||||
|   _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { | ||||
|     var initial = arguments.length > 2; | ||||
|     if (obj == null) obj = []; | ||||
|     if (nativeReduce && obj.reduce === nativeReduce) { | ||||
|       if (context) iterator = _.bind(iterator, context); | ||||
|       return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); | ||||
|     } | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (!initial) { | ||||
|         memo = value; | ||||
|         initial = true; | ||||
|       } else { | ||||
|         memo = iterator.call(context, memo, value, index, list); | ||||
|       } | ||||
|     }); | ||||
|     if (!initial) throw new TypeError('Reduce of empty array with no initial value'); | ||||
|     return memo; | ||||
|   }; | ||||
|  | ||||
|   // The right-associative version of reduce, also known as `foldr`. | ||||
|   // Delegates to **ECMAScript 5**'s native `reduceRight` if available. | ||||
|   _.reduceRight = _.foldr = function(obj, iterator, memo, context) { | ||||
|     var initial = arguments.length > 2; | ||||
|     if (obj == null) obj = []; | ||||
|     if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { | ||||
|       if (context) iterator = _.bind(iterator, context); | ||||
|       return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); | ||||
|     } | ||||
|     var reversed = _.toArray(obj).reverse(); | ||||
|     if (context && !initial) iterator = _.bind(iterator, context); | ||||
|     return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator); | ||||
|   }; | ||||
|  | ||||
|   // Return the first value which passes a truth test. Aliased as `detect`. | ||||
|   _.find = _.detect = function(obj, iterator, context) { | ||||
|     var result; | ||||
|     any(obj, function(value, index, list) { | ||||
|       if (iterator.call(context, value, index, list)) { | ||||
|         result = value; | ||||
|         return true; | ||||
|       } | ||||
|     }); | ||||
|     return result; | ||||
|   }; | ||||
|  | ||||
|   // Return all the elements that pass a truth test. | ||||
|   // Delegates to **ECMAScript 5**'s native `filter` if available. | ||||
|   // Aliased as `select`. | ||||
|   _.filter = _.select = function(obj, iterator, context) { | ||||
|     var results = []; | ||||
|     if (obj == null) return results; | ||||
|     if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (iterator.call(context, value, index, list)) results[results.length] = value; | ||||
|     }); | ||||
|     return results; | ||||
|   }; | ||||
|  | ||||
|   // Return all the elements for which a truth test fails. | ||||
|   _.reject = function(obj, iterator, context) { | ||||
|     var results = []; | ||||
|     if (obj == null) return results; | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (!iterator.call(context, value, index, list)) results[results.length] = value; | ||||
|     }); | ||||
|     return results; | ||||
|   }; | ||||
|  | ||||
|   // Determine whether all of the elements match a truth test. | ||||
|   // Delegates to **ECMAScript 5**'s native `every` if available. | ||||
|   // Aliased as `all`. | ||||
|   _.every = _.all = function(obj, iterator, context) { | ||||
|     var result = true; | ||||
|     if (obj == null) return result; | ||||
|     if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (!(result = result && iterator.call(context, value, index, list))) return breaker; | ||||
|     }); | ||||
|     return result; | ||||
|   }; | ||||
|  | ||||
|   // Determine if at least one element in the object matches a truth test. | ||||
|   // Delegates to **ECMAScript 5**'s native `some` if available. | ||||
|   // Aliased as `any`. | ||||
|   var any = _.some = _.any = function(obj, iterator, context) { | ||||
|     iterator || (iterator = _.identity); | ||||
|     var result = false; | ||||
|     if (obj == null) return result; | ||||
|     if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (result || (result = iterator.call(context, value, index, list))) return breaker; | ||||
|     }); | ||||
|     return !!result; | ||||
|   }; | ||||
|  | ||||
|   // Determine if a given value is included in the array or object using `===`. | ||||
|   // Aliased as `contains`. | ||||
|   _.include = _.contains = function(obj, target) { | ||||
|     var found = false; | ||||
|     if (obj == null) return found; | ||||
|     if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; | ||||
|     found = any(obj, function(value) { | ||||
|       return value === target; | ||||
|     }); | ||||
|     return found; | ||||
|   }; | ||||
|  | ||||
|   // Invoke a method (with arguments) on every item in a collection. | ||||
|   _.invoke = function(obj, method) { | ||||
|     var args = slice.call(arguments, 2); | ||||
|     return _.map(obj, function(value) { | ||||
|       return (_.isFunction(method) ? method || value : value[method]).apply(value, args); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   // Convenience version of a common use case of `map`: fetching a property. | ||||
|   _.pluck = function(obj, key) { | ||||
|     return _.map(obj, function(value){ return value[key]; }); | ||||
|   }; | ||||
|  | ||||
|   // Return the maximum element or (element-based computation). | ||||
|   _.max = function(obj, iterator, context) { | ||||
|     if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); | ||||
|     if (!iterator && _.isEmpty(obj)) return -Infinity; | ||||
|     var result = {computed : -Infinity}; | ||||
|     each(obj, function(value, index, list) { | ||||
|       var computed = iterator ? iterator.call(context, value, index, list) : value; | ||||
|       computed >= result.computed && (result = {value : value, computed : computed}); | ||||
|     }); | ||||
|     return result.value; | ||||
|   }; | ||||
|  | ||||
|   // Return the minimum element (or element-based computation). | ||||
|   _.min = function(obj, iterator, context) { | ||||
|     if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); | ||||
|     if (!iterator && _.isEmpty(obj)) return Infinity; | ||||
|     var result = {computed : Infinity}; | ||||
|     each(obj, function(value, index, list) { | ||||
|       var computed = iterator ? iterator.call(context, value, index, list) : value; | ||||
|       computed < result.computed && (result = {value : value, computed : computed}); | ||||
|     }); | ||||
|     return result.value; | ||||
|   }; | ||||
|  | ||||
|   // Shuffle an array. | ||||
|   _.shuffle = function(obj) { | ||||
|     var shuffled = [], rand; | ||||
|     each(obj, function(value, index, list) { | ||||
|       if (index == 0) { | ||||
|         shuffled[0] = value; | ||||
|       } else { | ||||
|         rand = Math.floor(Math.random() * (index + 1)); | ||||
|         shuffled[index] = shuffled[rand]; | ||||
|         shuffled[rand] = value; | ||||
|       } | ||||
|     }); | ||||
|     return shuffled; | ||||
|   }; | ||||
|  | ||||
|   // Sort the object's values by a criterion produced by an iterator. | ||||
|   _.sortBy = function(obj, iterator, context) { | ||||
|     return _.pluck(_.map(obj, function(value, index, list) { | ||||
|       return { | ||||
|         value : value, | ||||
|         criteria : iterator.call(context, value, index, list) | ||||
|       }; | ||||
|     }).sort(function(left, right) { | ||||
|       var a = left.criteria, b = right.criteria; | ||||
|       return a < b ? -1 : a > b ? 1 : 0; | ||||
|     }), 'value'); | ||||
|   }; | ||||
|  | ||||
|   // Groups the object's values by a criterion. Pass either a string attribute | ||||
|   // to group by, or a function that returns the criterion. | ||||
|   _.groupBy = function(obj, val) { | ||||
|     var result = {}; | ||||
|     var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; }; | ||||
|     each(obj, function(value, index) { | ||||
|       var key = iterator(value, index); | ||||
|       (result[key] || (result[key] = [])).push(value); | ||||
|     }); | ||||
|     return result; | ||||
|   }; | ||||
|  | ||||
|   // Use a comparator function to figure out at what index an object should | ||||
|   // be inserted so as to maintain order. Uses binary search. | ||||
|   _.sortedIndex = function(array, obj, iterator) { | ||||
|     iterator || (iterator = _.identity); | ||||
|     var low = 0, high = array.length; | ||||
|     while (low < high) { | ||||
|       var mid = (low + high) >> 1; | ||||
|       iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; | ||||
|     } | ||||
|     return low; | ||||
|   }; | ||||
|  | ||||
|   // Safely convert anything iterable into a real, live array. | ||||
|   _.toArray = function(iterable) { | ||||
|     if (!iterable)                return []; | ||||
|     if (iterable.toArray)         return iterable.toArray(); | ||||
|     if (_.isArray(iterable))      return slice.call(iterable); | ||||
|     if (_.isArguments(iterable))  return slice.call(iterable); | ||||
|     return _.values(iterable); | ||||
|   }; | ||||
|  | ||||
|   // Return the number of elements in an object. | ||||
|   _.size = function(obj) { | ||||
|     return _.toArray(obj).length; | ||||
|   }; | ||||
|  | ||||
|   // Array Functions | ||||
|   // --------------- | ||||
|  | ||||
|   // Get the first element of an array. Passing **n** will return the first N | ||||
|   // values in the array. Aliased as `head`. The **guard** check allows it to work | ||||
|   // with `_.map`. | ||||
|   _.first = _.head = function(array, n, guard) { | ||||
|     return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; | ||||
|   }; | ||||
|  | ||||
|   // Returns everything but the last entry of the array. Especcialy useful on | ||||
|   // the arguments object. Passing **n** will return all the values in | ||||
|   // the array, excluding the last N. The **guard** check allows it to work with | ||||
|   // `_.map`. | ||||
|   _.initial = function(array, n, guard) { | ||||
|     return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); | ||||
|   }; | ||||
|  | ||||
|   // Get the last element of an array. Passing **n** will return the last N | ||||
|   // values in the array. The **guard** check allows it to work with `_.map`. | ||||
|   _.last = function(array, n, guard) { | ||||
|     if ((n != null) && !guard) { | ||||
|       return slice.call(array, Math.max(array.length - n, 0)); | ||||
|     } else { | ||||
|       return array[array.length - 1]; | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   // Returns everything but the first entry of the array. Aliased as `tail`. | ||||
|   // Especially useful on the arguments object. Passing an **index** will return | ||||
|   // the rest of the values in the array from that index onward. The **guard** | ||||
|   // check allows it to work with `_.map`. | ||||
|   _.rest = _.tail = function(array, index, guard) { | ||||
|     return slice.call(array, (index == null) || guard ? 1 : index); | ||||
|   }; | ||||
|  | ||||
|   // Trim out all falsy values from an array. | ||||
|   _.compact = function(array) { | ||||
|     return _.filter(array, function(value){ return !!value; }); | ||||
|   }; | ||||
|  | ||||
|   // Return a completely flattened version of an array. | ||||
|   _.flatten = function(array, shallow) { | ||||
|     return _.reduce(array, function(memo, value) { | ||||
|       if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value)); | ||||
|       memo[memo.length] = value; | ||||
|       return memo; | ||||
|     }, []); | ||||
|   }; | ||||
|  | ||||
|   // Return a version of the array that does not contain the specified value(s). | ||||
|   _.without = function(array) { | ||||
|     return _.difference(array, slice.call(arguments, 1)); | ||||
|   }; | ||||
|  | ||||
|   // Produce a duplicate-free version of the array. If the array has already | ||||
|   // been sorted, you have the option of using a faster algorithm. | ||||
|   // Aliased as `unique`. | ||||
|   _.uniq = _.unique = function(array, isSorted, iterator) { | ||||
|     var initial = iterator ? _.map(array, iterator) : array; | ||||
|     var result = []; | ||||
|     _.reduce(initial, function(memo, el, i) { | ||||
|       if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) { | ||||
|         memo[memo.length] = el; | ||||
|         result[result.length] = array[i]; | ||||
|       } | ||||
|       return memo; | ||||
|     }, []); | ||||
|     return result; | ||||
|   }; | ||||
|  | ||||
|   // Produce an array that contains the union: each distinct element from all of | ||||
|   // the passed-in arrays. | ||||
|   _.union = function() { | ||||
|     return _.uniq(_.flatten(arguments, true)); | ||||
|   }; | ||||
|  | ||||
|   // Produce an array that contains every item shared between all the | ||||
|   // passed-in arrays. (Aliased as "intersect" for back-compat.) | ||||
|   _.intersection = _.intersect = function(array) { | ||||
|     var rest = slice.call(arguments, 1); | ||||
|     return _.filter(_.uniq(array), function(item) { | ||||
|       return _.every(rest, function(other) { | ||||
|         return _.indexOf(other, item) >= 0; | ||||
|       }); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   // Take the difference between one array and a number of other arrays. | ||||
|   // Only the elements present in just the first array will remain. | ||||
|   _.difference = function(array) { | ||||
|     var rest = _.flatten(slice.call(arguments, 1)); | ||||
|     return _.filter(array, function(value){ return !_.include(rest, value); }); | ||||
|   }; | ||||
|  | ||||
|   // Zip together multiple lists into a single array -- elements that share | ||||
|   // an index go together. | ||||
|   _.zip = function() { | ||||
|     var args = slice.call(arguments); | ||||
|     var length = _.max(_.pluck(args, 'length')); | ||||
|     var results = new Array(length); | ||||
|     for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); | ||||
|     return results; | ||||
|   }; | ||||
|  | ||||
|   // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), | ||||
|   // we need this function. Return the position of the first occurrence of an | ||||
|   // item in an array, or -1 if the item is not included in the array. | ||||
|   // Delegates to **ECMAScript 5**'s native `indexOf` if available. | ||||
|   // If the array is large and already in sort order, pass `true` | ||||
|   // for **isSorted** to use binary search. | ||||
|   _.indexOf = function(array, item, isSorted) { | ||||
|     if (array == null) return -1; | ||||
|     var i, l; | ||||
|     if (isSorted) { | ||||
|       i = _.sortedIndex(array, item); | ||||
|       return array[i] === item ? i : -1; | ||||
|     } | ||||
|     if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); | ||||
|     for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i; | ||||
|     return -1; | ||||
|   }; | ||||
|  | ||||
|   // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. | ||||
|   _.lastIndexOf = function(array, item) { | ||||
|     if (array == null) return -1; | ||||
|     if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); | ||||
|     var i = array.length; | ||||
|     while (i--) if (i in array && array[i] === item) return i; | ||||
|     return -1; | ||||
|   }; | ||||
|  | ||||
|   // Generate an integer Array containing an arithmetic progression. A port of | ||||
|   // the native Python `range()` function. See | ||||
|   // [the Python documentation](http://docs.python.org/library/functions.html#range). | ||||
|   _.range = function(start, stop, step) { | ||||
|     if (arguments.length <= 1) { | ||||
|       stop = start || 0; | ||||
|       start = 0; | ||||
|     } | ||||
|     step = arguments[2] || 1; | ||||
|  | ||||
|     var len = Math.max(Math.ceil((stop - start) / step), 0); | ||||
|     var idx = 0; | ||||
|     var range = new Array(len); | ||||
|  | ||||
|     while(idx < len) { | ||||
|       range[idx++] = start; | ||||
|       start += step; | ||||
|     } | ||||
|  | ||||
|     return range; | ||||
|   }; | ||||
|  | ||||
|   // Function (ahem) Functions | ||||
|   // ------------------ | ||||
|  | ||||
|   // Reusable constructor function for prototype setting. | ||||
|   var ctor = function(){}; | ||||
|  | ||||
|   // Create a function bound to a given object (assigning `this`, and arguments, | ||||
|   // optionally). Binding with arguments is also known as `curry`. | ||||
|   // Delegates to **ECMAScript 5**'s native `Function.bind` if available. | ||||
|   // We check for `func.bind` first, to fail fast when `func` is undefined. | ||||
|   _.bind = function bind(func, context) { | ||||
|     var bound, args; | ||||
|     if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); | ||||
|     if (!_.isFunction(func)) throw new TypeError; | ||||
|     args = slice.call(arguments, 2); | ||||
|     return bound = function() { | ||||
|       if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); | ||||
|       ctor.prototype = func.prototype; | ||||
|       var self = new ctor; | ||||
|       var result = func.apply(self, args.concat(slice.call(arguments))); | ||||
|       if (Object(result) === result) return result; | ||||
|       return self; | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Bind all of an object's methods to that object. Useful for ensuring that | ||||
|   // all callbacks defined on an object belong to it. | ||||
|   _.bindAll = function(obj) { | ||||
|     var funcs = slice.call(arguments, 1); | ||||
|     if (funcs.length == 0) funcs = _.functions(obj); | ||||
|     each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); | ||||
|     return obj; | ||||
|   }; | ||||
|  | ||||
|   // Memoize an expensive function by storing its results. | ||||
|   _.memoize = function(func, hasher) { | ||||
|     var memo = {}; | ||||
|     hasher || (hasher = _.identity); | ||||
|     return function() { | ||||
|       var key = hasher.apply(this, arguments); | ||||
|       return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Delays a function for the given number of milliseconds, and then calls | ||||
|   // it with the arguments supplied. | ||||
|   _.delay = function(func, wait) { | ||||
|     var args = slice.call(arguments, 2); | ||||
|     return setTimeout(function(){ return func.apply(func, args); }, wait); | ||||
|   }; | ||||
|  | ||||
|   // Defers a function, scheduling it to run after the current call stack has | ||||
|   // cleared. | ||||
|   _.defer = function(func) { | ||||
|     return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); | ||||
|   }; | ||||
|  | ||||
|   // Returns a function, that, when invoked, will only be triggered at most once | ||||
|   // during a given window of time. | ||||
|   _.throttle = function(func, wait) { | ||||
|     var context, args, timeout, throttling, more; | ||||
|     var whenDone = _.debounce(function(){ more = throttling = false; }, wait); | ||||
|     return function() { | ||||
|       context = this; args = arguments; | ||||
|       var later = function() { | ||||
|         timeout = null; | ||||
|         if (more) func.apply(context, args); | ||||
|         whenDone(); | ||||
|       }; | ||||
|       if (!timeout) timeout = setTimeout(later, wait); | ||||
|       if (throttling) { | ||||
|         more = true; | ||||
|       } else { | ||||
|         func.apply(context, args); | ||||
|       } | ||||
|       whenDone(); | ||||
|       throttling = true; | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Returns a function, that, as long as it continues to be invoked, will not | ||||
|   // be triggered. The function will be called after it stops being called for | ||||
|   // N milliseconds. | ||||
|   _.debounce = function(func, wait) { | ||||
|     var timeout; | ||||
|     return function() { | ||||
|       var context = this, args = arguments; | ||||
|       var later = function() { | ||||
|         timeout = null; | ||||
|         func.apply(context, args); | ||||
|       }; | ||||
|       clearTimeout(timeout); | ||||
|       timeout = setTimeout(later, wait); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Returns a function that will be executed at most one time, no matter how | ||||
|   // often you call it. Useful for lazy initialization. | ||||
|   _.once = function(func) { | ||||
|     var ran = false, memo; | ||||
|     return function() { | ||||
|       if (ran) return memo; | ||||
|       ran = true; | ||||
|       return memo = func.apply(this, arguments); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Returns the first function passed as an argument to the second, | ||||
|   // allowing you to adjust arguments, run code before and after, and | ||||
|   // conditionally execute the original function. | ||||
|   _.wrap = function(func, wrapper) { | ||||
|     return function() { | ||||
|       var args = [func].concat(slice.call(arguments, 0)); | ||||
|       return wrapper.apply(this, args); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Returns a function that is the composition of a list of functions, each | ||||
|   // consuming the return value of the function that follows. | ||||
|   _.compose = function() { | ||||
|     var funcs = arguments; | ||||
|     return function() { | ||||
|       var args = arguments; | ||||
|       for (var i = funcs.length - 1; i >= 0; i--) { | ||||
|         args = [funcs[i].apply(this, args)]; | ||||
|       } | ||||
|       return args[0]; | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Returns a function that will only be executed after being called N times. | ||||
|   _.after = function(times, func) { | ||||
|     if (times <= 0) return func(); | ||||
|     return function() { | ||||
|       if (--times < 1) { return func.apply(this, arguments); } | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Object Functions | ||||
|   // ---------------- | ||||
|  | ||||
|   // Retrieve the names of an object's properties. | ||||
|   // Delegates to **ECMAScript 5**'s native `Object.keys` | ||||
|   _.keys = nativeKeys || function(obj) { | ||||
|     if (obj !== Object(obj)) throw new TypeError('Invalid object'); | ||||
|     var keys = []; | ||||
|     for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; | ||||
|     return keys; | ||||
|   }; | ||||
|  | ||||
|   // Retrieve the values of an object's properties. | ||||
|   _.values = function(obj) { | ||||
|     return _.map(obj, _.identity); | ||||
|   }; | ||||
|  | ||||
|   // Return a sorted list of the function names available on the object. | ||||
|   // Aliased as `methods` | ||||
|   _.functions = _.methods = function(obj) { | ||||
|     var names = []; | ||||
|     for (var key in obj) { | ||||
|       if (_.isFunction(obj[key])) names.push(key); | ||||
|     } | ||||
|     return names.sort(); | ||||
|   }; | ||||
|  | ||||
|   // Extend a given object with all the properties in passed-in object(s). | ||||
|   _.extend = function(obj) { | ||||
|     each(slice.call(arguments, 1), function(source) { | ||||
|       for (var prop in source) { | ||||
|         obj[prop] = source[prop]; | ||||
|       } | ||||
|     }); | ||||
|     return obj; | ||||
|   }; | ||||
|  | ||||
|   // Fill in a given object with default properties. | ||||
|   _.defaults = function(obj) { | ||||
|     each(slice.call(arguments, 1), function(source) { | ||||
|       for (var prop in source) { | ||||
|         if (obj[prop] == null) obj[prop] = source[prop]; | ||||
|       } | ||||
|     }); | ||||
|     return obj; | ||||
|   }; | ||||
|  | ||||
|   // Create a (shallow-cloned) duplicate of an object. | ||||
|   _.clone = function(obj) { | ||||
|     if (!_.isObject(obj)) return obj; | ||||
|     return _.isArray(obj) ? obj.slice() : _.extend({}, obj); | ||||
|   }; | ||||
|  | ||||
|   // Invokes interceptor with the obj, and then returns obj. | ||||
|   // The primary purpose of this method is to "tap into" a method chain, in | ||||
|   // order to perform operations on intermediate results within the chain. | ||||
|   _.tap = function(obj, interceptor) { | ||||
|     interceptor(obj); | ||||
|     return obj; | ||||
|   }; | ||||
|  | ||||
|   // Internal recursive comparison function. | ||||
|   function eq(a, b, stack) { | ||||
|     // Identical objects are equal. `0 === -0`, but they aren't identical. | ||||
|     // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. | ||||
|     if (a === b) return a !== 0 || 1 / a == 1 / b; | ||||
|     // A strict comparison is necessary because `null == undefined`. | ||||
|     if (a == null || b == null) return a === b; | ||||
|     // Unwrap any wrapped objects. | ||||
|     if (a._chain) a = a._wrapped; | ||||
|     if (b._chain) b = b._wrapped; | ||||
|     // Invoke a custom `isEqual` method if one is provided. | ||||
|     if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b); | ||||
|     if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a); | ||||
|     // Compare `[[Class]]` names. | ||||
|     var className = toString.call(a); | ||||
|     if (className != toString.call(b)) return false; | ||||
|     switch (className) { | ||||
|       // Strings, numbers, dates, and booleans are compared by value. | ||||
|       case '[object String]': | ||||
|         // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is | ||||
|         // equivalent to `new String("5")`. | ||||
|         return a == String(b); | ||||
|       case '[object Number]': | ||||
|         // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for | ||||
|         // other numeric values. | ||||
|         return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); | ||||
|       case '[object Date]': | ||||
|       case '[object Boolean]': | ||||
|         // Coerce dates and booleans to numeric primitive values. Dates are compared by their | ||||
|         // millisecond representations. Note that invalid dates with millisecond representations | ||||
|         // of `NaN` are not equivalent. | ||||
|         return +a == +b; | ||||
|       // RegExps are compared by their source patterns and flags. | ||||
|       case '[object RegExp]': | ||||
|         return a.source == b.source && | ||||
|                a.global == b.global && | ||||
|                a.multiline == b.multiline && | ||||
|                a.ignoreCase == b.ignoreCase; | ||||
|     } | ||||
|     if (typeof a != 'object' || typeof b != 'object') return false; | ||||
|     // Assume equality for cyclic structures. The algorithm for detecting cyclic | ||||
|     // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. | ||||
|     var length = stack.length; | ||||
|     while (length--) { | ||||
|       // Linear search. Performance is inversely proportional to the number of | ||||
|       // unique nested structures. | ||||
|       if (stack[length] == a) return true; | ||||
|     } | ||||
|     // Add the first object to the stack of traversed objects. | ||||
|     stack.push(a); | ||||
|     var size = 0, result = true; | ||||
|     // Recursively compare objects and arrays. | ||||
|     if (className == '[object Array]') { | ||||
|       // Compare array lengths to determine if a deep comparison is necessary. | ||||
|       size = a.length; | ||||
|       result = size == b.length; | ||||
|       if (result) { | ||||
|         // Deep compare the contents, ignoring non-numeric properties. | ||||
|         while (size--) { | ||||
|           // Ensure commutative equality for sparse arrays. | ||||
|           if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break; | ||||
|         } | ||||
|       } | ||||
|     } else { | ||||
|       // Objects with different constructors are not equivalent. | ||||
|       if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false; | ||||
|       // Deep compare objects. | ||||
|       for (var key in a) { | ||||
|         if (_.has(a, key)) { | ||||
|           // Count the expected number of properties. | ||||
|           size++; | ||||
|           // Deep compare each member. | ||||
|           if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break; | ||||
|         } | ||||
|       } | ||||
|       // Ensure that both objects contain the same number of properties. | ||||
|       if (result) { | ||||
|         for (key in b) { | ||||
|           if (_.has(b, key) && !(size--)) break; | ||||
|         } | ||||
|         result = !size; | ||||
|       } | ||||
|     } | ||||
|     // Remove the first object from the stack of traversed objects. | ||||
|     stack.pop(); | ||||
|     return result; | ||||
|   } | ||||
|  | ||||
|   // Perform a deep comparison to check if two objects are equal. | ||||
|   _.isEqual = function(a, b) { | ||||
|     return eq(a, b, []); | ||||
|   }; | ||||
|  | ||||
|   // Is a given array, string, or object empty? | ||||
|   // An "empty" object has no enumerable own-properties. | ||||
|   _.isEmpty = function(obj) { | ||||
|     if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; | ||||
|     for (var key in obj) if (_.has(obj, key)) return false; | ||||
|     return true; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value a DOM element? | ||||
|   _.isElement = function(obj) { | ||||
|     return !!(obj && obj.nodeType == 1); | ||||
|   }; | ||||
|  | ||||
|   // Is a given value an array? | ||||
|   // Delegates to ECMA5's native Array.isArray | ||||
|   _.isArray = nativeIsArray || function(obj) { | ||||
|     return toString.call(obj) == '[object Array]'; | ||||
|   }; | ||||
|  | ||||
|   // Is a given variable an object? | ||||
|   _.isObject = function(obj) { | ||||
|     return obj === Object(obj); | ||||
|   }; | ||||
|  | ||||
|   // Is a given variable an arguments object? | ||||
|   _.isArguments = function(obj) { | ||||
|     return toString.call(obj) == '[object Arguments]'; | ||||
|   }; | ||||
|   if (!_.isArguments(arguments)) { | ||||
|     _.isArguments = function(obj) { | ||||
|       return !!(obj && _.has(obj, 'callee')); | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   // Is a given value a function? | ||||
|   _.isFunction = function(obj) { | ||||
|     return toString.call(obj) == '[object Function]'; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value a string? | ||||
|   _.isString = function(obj) { | ||||
|     return toString.call(obj) == '[object String]'; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value a number? | ||||
|   _.isNumber = function(obj) { | ||||
|     return toString.call(obj) == '[object Number]'; | ||||
|   }; | ||||
|  | ||||
|   // Is the given value `NaN`? | ||||
|   _.isNaN = function(obj) { | ||||
|     // `NaN` is the only value for which `===` is not reflexive. | ||||
|     return obj !== obj; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value a boolean? | ||||
|   _.isBoolean = function(obj) { | ||||
|     return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value a date? | ||||
|   _.isDate = function(obj) { | ||||
|     return toString.call(obj) == '[object Date]'; | ||||
|   }; | ||||
|  | ||||
|   // Is the given value a regular expression? | ||||
|   _.isRegExp = function(obj) { | ||||
|     return toString.call(obj) == '[object RegExp]'; | ||||
|   }; | ||||
|  | ||||
|   // Is a given value equal to null? | ||||
|   _.isNull = function(obj) { | ||||
|     return obj === null; | ||||
|   }; | ||||
|  | ||||
|   // Is a given variable undefined? | ||||
|   _.isUndefined = function(obj) { | ||||
|     return obj === void 0; | ||||
|   }; | ||||
|  | ||||
|   // Has own property? | ||||
|   _.has = function(obj, key) { | ||||
|     return hasOwnProperty.call(obj, key); | ||||
|   }; | ||||
|  | ||||
|   // Utility Functions | ||||
|   // ----------------- | ||||
|  | ||||
|   // Run Underscore.js in *noConflict* mode, returning the `_` variable to its | ||||
|   // previous owner. Returns a reference to the Underscore object. | ||||
|   _.noConflict = function() { | ||||
|     root._ = previousUnderscore; | ||||
|     return this; | ||||
|   }; | ||||
|  | ||||
|   // Keep the identity function around for default iterators. | ||||
|   _.identity = function(value) { | ||||
|     return value; | ||||
|   }; | ||||
|  | ||||
|   // Run a function **n** times. | ||||
|   _.times = function (n, iterator, context) { | ||||
|     for (var i = 0; i < n; i++) iterator.call(context, i); | ||||
|   }; | ||||
|  | ||||
|   // Escape a string for HTML interpolation. | ||||
|   _.escape = function(string) { | ||||
|     return (''+string).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(/\//g,'/'); | ||||
|   }; | ||||
|  | ||||
|   // Add your own custom functions to the Underscore object, ensuring that | ||||
|   // they're correctly added to the OOP wrapper as well. | ||||
|   _.mixin = function(obj) { | ||||
|     each(_.functions(obj), function(name){ | ||||
|       addToWrapper(name, _[name] = obj[name]); | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   // Generate a unique integer id (unique within the entire client session). | ||||
|   // Useful for temporary DOM ids. | ||||
|   var idCounter = 0; | ||||
|   _.uniqueId = function(prefix) { | ||||
|     var id = idCounter++; | ||||
|     return prefix ? prefix + id : id; | ||||
|   }; | ||||
|  | ||||
|   // By default, Underscore uses ERB-style template delimiters, change the | ||||
|   // following template settings to use alternative delimiters. | ||||
|   _.templateSettings = { | ||||
|     evaluate    : /<%([\s\S]+?)%>/g, | ||||
|     interpolate : /<%=([\s\S]+?)%>/g, | ||||
|     escape      : /<%-([\s\S]+?)%>/g | ||||
|   }; | ||||
|  | ||||
|   // When customizing `templateSettings`, if you don't want to define an | ||||
|   // interpolation, evaluation or escaping regex, we need one that is | ||||
|   // guaranteed not to match. | ||||
|   var noMatch = /.^/; | ||||
|  | ||||
|   // Within an interpolation, evaluation, or escaping, remove HTML escaping | ||||
|   // that had been previously added. | ||||
|   var unescape = function(code) { | ||||
|     return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'"); | ||||
|   }; | ||||
|  | ||||
|   // JavaScript micro-templating, similar to John Resig's implementation. | ||||
|   // Underscore templating handles arbitrary delimiters, preserves whitespace, | ||||
|   // and correctly escapes quotes within interpolated code. | ||||
|   _.template = function(str, data) { | ||||
|     var c  = _.templateSettings; | ||||
|     var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + | ||||
|       'with(obj||{}){__p.push(\'' + | ||||
|       str.replace(/\\/g, '\\\\') | ||||
|          .replace(/'/g, "\\'") | ||||
|          .replace(c.escape || noMatch, function(match, code) { | ||||
|            return "',_.escape(" + unescape(code) + "),'"; | ||||
|          }) | ||||
|          .replace(c.interpolate || noMatch, function(match, code) { | ||||
|            return "'," + unescape(code) + ",'"; | ||||
|          }) | ||||
|          .replace(c.evaluate || noMatch, function(match, code) { | ||||
|            return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('"; | ||||
|          }) | ||||
|          .replace(/\r/g, '\\r') | ||||
|          .replace(/\n/g, '\\n') | ||||
|          .replace(/\t/g, '\\t') | ||||
|          + "');}return __p.join('');"; | ||||
|     var func = new Function('obj', '_', tmpl); | ||||
|     if (data) return func(data, _); | ||||
|     return function(data) { | ||||
|       return func.call(this, data, _); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Add a "chain" function, which will delegate to the wrapper. | ||||
|   _.chain = function(obj) { | ||||
|     return _(obj).chain(); | ||||
|   }; | ||||
|  | ||||
|   // The OOP Wrapper | ||||
|   // --------------- | ||||
|  | ||||
|   // If Underscore is called as a function, it returns a wrapped object that | ||||
|   // can be used OO-style. This wrapper holds altered versions of all the | ||||
|   // underscore functions. Wrapped objects may be chained. | ||||
|   var wrapper = function(obj) { this._wrapped = obj; }; | ||||
|  | ||||
|   // Expose `wrapper.prototype` as `_.prototype` | ||||
|   _.prototype = wrapper.prototype; | ||||
|  | ||||
|   // Helper function to continue chaining intermediate results. | ||||
|   var result = function(obj, chain) { | ||||
|     return chain ? _(obj).chain() : obj; | ||||
|   }; | ||||
|  | ||||
|   // A method to easily add functions to the OOP wrapper. | ||||
|   var addToWrapper = function(name, func) { | ||||
|     wrapper.prototype[name] = function() { | ||||
|       var args = slice.call(arguments); | ||||
|       unshift.call(args, this._wrapped); | ||||
|       return result(func.apply(_, args), this._chain); | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   // Add all of the Underscore functions to the wrapper object. | ||||
|   _.mixin(_); | ||||
|  | ||||
|   // Add all mutator Array functions to the wrapper. | ||||
|   each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { | ||||
|     var method = ArrayProto[name]; | ||||
|     wrapper.prototype[name] = function() { | ||||
|       var wrapped = this._wrapped; | ||||
|       method.apply(wrapped, arguments); | ||||
|       var length = wrapped.length; | ||||
|       if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0]; | ||||
|       return result(wrapped, this._chain); | ||||
|     }; | ||||
|   }); | ||||
|  | ||||
|   // Add all accessor Array functions to the wrapper. | ||||
|   each(['concat', 'join', 'slice'], function(name) { | ||||
|     var method = ArrayProto[name]; | ||||
|     wrapper.prototype[name] = function() { | ||||
|       return result(method.apply(this._wrapped, arguments), this._chain); | ||||
|     }; | ||||
|   }); | ||||
|  | ||||
|   // Start chaining a wrapped Underscore object. | ||||
|   wrapper.prototype.chain = function() { | ||||
|     this._chain = true; | ||||
|     return this; | ||||
|   }; | ||||
|  | ||||
|   // Extracts the result from a wrapped and chained object. | ||||
|   wrapper.prototype.value = function() { | ||||
|     return this._wrapped; | ||||
|   }; | ||||
|  | ||||
| }).call(this); | ||||
							
								
								
									
										37
									
								
								docs/_static/underscore.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								docs/_static/underscore.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -128,7 +128,7 @@ | ||||
| <h1>Authentication<a class="headerlink" href="#authentication" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-register"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/register</code><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/register</span></code><a class="headerlink" href="#post--api-auth-register" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>register a user</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/register</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -197,7 +197,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-login"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/login</code><a class="headerlink" href="#post--api-auth-login" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/login</span></code><a class="headerlink" href="#post--api-auth-login" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>user login</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/login</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -250,7 +250,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-auth-logout"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/auth/logout</code><a class="headerlink" href="#get--api-auth-logout" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/auth/logout</span></code><a class="headerlink" href="#get--api-auth-logout" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>user logout</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/auth/logout</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -299,7 +299,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-auth-profile"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/auth/profile</code><a class="headerlink" href="#get--api-auth-profile" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/auth/profile</span></code><a class="headerlink" href="#get--api-auth-profile" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>get authenticated user info</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/auth/profile</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -361,7 +361,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-profile-edit"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/profile/edit</code><a class="headerlink" href="#post--api-auth-profile-edit" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/profile/edit</span></code><a class="headerlink" href="#post--api-auth-profile-edit" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>edit authenticated user</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/profile/edit</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -444,7 +444,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-picture"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/picture</code><a class="headerlink" href="#post--api-auth-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/picture</span></code><a class="headerlink" href="#post--api-auth-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>update authenticated user picture</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -497,7 +497,7 @@ | ||||
|  | ||||
| <dl class="http delete"> | ||||
| <dt id="delete--api-auth-picture"> | ||||
| <code class="sig-name descname">DELETE </code><code class="sig-name descname">/api/auth/picture</code><a class="headerlink" href="#delete--api-auth-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/auth/picture</span></code><a class="headerlink" href="#delete--api-auth-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>delete authenticated user picture</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/auth/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -532,7 +532,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-password-reset-request"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/password/reset-request</code><a class="headerlink" href="#post--api-auth-password-reset-request" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/password/reset-request</span></code><a class="headerlink" href="#post--api-auth-password-reset-request" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>handle password reset request</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/password/reset-request</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -566,7 +566,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-auth-password-update"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/auth/password/update</code><a class="headerlink" href="#post--api-auth-password-update" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/auth/password/update</span></code><a class="headerlink" href="#post--api-auth-password-update" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>update user password</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/auth/password/update</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -617,7 +617,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-config"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/config</code><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/config</span></code><a class="headerlink" href="#get--api-config" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get Application config</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/config</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -164,7 +164,7 @@ | ||||
|  | ||||
| <dl class="http patch"> | ||||
| <dt id="patch--api-config"> | ||||
| <code class="sig-name descname">PATCH </code><code class="sig-name descname">/api/config</code><a class="headerlink" href="#patch--api-config" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/config</span></code><a class="headerlink" href="#patch--api-config" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Update Application config</p> | ||||
| <p>Authenticated user must be an admin</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| @@ -227,7 +227,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-ping"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/ping</code><a class="headerlink" href="#get--api-ping" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/ping</span></code><a class="headerlink" href="#get--api-ping" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>health check endpoint</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/ping</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -268,7 +268,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -153,7 +153,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Records<a class="headerlink" href="#records" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-records"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/records</code><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/records</span></code><a class="headerlink" href="#get--api-records" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get all records for authenticated user.</p> | ||||
| <dl class="simple"> | ||||
| <dt>Following types of records are available:</dt><dd><ul class="simple"> | ||||
| @@ -250,7 +250,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Sports<a class="headerlink" href="#sports" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-sports"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/sports</code><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/sports</span></code><a class="headerlink" href="#get--api-sports" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get all sports</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/sports</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -271,7 +271,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-sports-(int-sport_id)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/sports/</code><span class="sig-paren">(</span><em class="property">int: </em><em class="sig-param">sport_id</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/sports/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get a sport</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/sports/1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -365,7 +365,7 @@ | ||||
|  | ||||
| <dl class="http patch"> | ||||
| <dt id="patch--api-sports-(int-sport_id)"> | ||||
| <code class="sig-name descname">PATCH </code><code class="sig-name descname">/api/sports/</code><span class="sig-paren">(</span><em class="property">int: </em><em class="sig-param">sport_id</em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/sports/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">sport_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-sports-(int-sport_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Update a sport | ||||
| Authenticated user must be an admin</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| @@ -460,7 +460,7 @@ Authenticated user must be an admin</p> | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Statistics<a class="headerlink" href="#statistics" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-stats-(user_name)-by_time"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/stats/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><code class="sig-name descname">/by_time</code><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/by_time</span></code><a class="headerlink" href="#get--api-stats-(user_name)-by_time" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get workouts statistics for a user by time</p> | ||||
| <p><strong>Example requests</strong>:</p> | ||||
| <ul class="simple"> | ||||
| @@ -239,7 +239,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-stats-(user_name)-by_sport"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/stats/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><code class="sig-name descname">/by_sport</code><a class="headerlink" href="#get--api-stats-(user_name)-by_sport" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/by_sport</span></code><a class="headerlink" href="#get--api-stats-(user_name)-by_sport" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get workouts statistics for a user by sport</p> | ||||
| <p><strong>Example requests</strong>:</p> | ||||
| <ul class="simple"> | ||||
| @@ -337,7 +337,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-stats-all"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/stats/all</code><a class="headerlink" href="#get--api-stats-all" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/stats/all</span></code><a class="headerlink" href="#get--api-stats-all" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get all application statistics</p> | ||||
| <p><strong>Example requests</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/stats/all</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -399,7 +399,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Users<a class="headerlink" href="#users" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-users"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/users</code><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users</span></code><a class="headerlink" href="#get--api-users" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get all users</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <ul class="simple"> | ||||
| @@ -237,7 +237,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-users-(user_name)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/users/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get single user details</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/users/admin</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -310,7 +310,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-users-(user_name)-picture"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/users/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><code class="sig-name descname">/picture</code><a class="headerlink" href="#get--api-users-(user_name)-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/picture</span></code><a class="headerlink" href="#get--api-users-(user_name)-picture" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>get user picture</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/users/admin/picture</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -343,7 +343,7 @@ | ||||
|  | ||||
| <dl class="http patch"> | ||||
| <dt id="patch--api-users-(user_name)"> | ||||
| <code class="sig-name descname">PATCH </code><code class="sig-name descname">/api/users/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Update user to add admin rights</p> | ||||
| <p>Only user with admin rights can modify another user</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| @@ -424,7 +424,7 @@ | ||||
|  | ||||
| <dl class="http delete"> | ||||
| <dt id="delete--api-users-(user_name)"> | ||||
| <code class="sig-name descname">DELETE </code><code class="sig-name descname">/api/users/</code><span class="sig-paren">(</span><em class="sig-param">user_name</em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/users/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">user_name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-users-(user_name)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Delete a user account</p> | ||||
| <p>A user can only delete his own account</p> | ||||
| <p>An admin can delete all accounts except his account if he’s the only | ||||
| @@ -490,7 +490,7 @@ one admin</p> | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -128,7 +128,7 @@ | ||||
| <h1>Workouts<a class="headerlink" href="#workouts" title="Permalink to this headline">¶</a></h1> | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts</code><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts</span></code><a class="headerlink" href="#get--api-workouts" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get workouts for the authenticated user.</p> | ||||
| <p><strong>Example requests</strong>:</p> | ||||
| <ul class="simple"> | ||||
| @@ -286,7 +286,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-(string-workout_short_id)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get an workout</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -381,7 +381,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-(string-workout_short_id)-gpx"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><code class="sig-name descname">/gpx</code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/gpx</span></code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get gpx file for an workout displayed on map with Leaflet</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -435,7 +435,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-(string-workout_short_id)-chart_data"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><code class="sig-name descname">/chart_data</code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/chart_data</span></code><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get chart data from an workout gpx file, to display it with Recharts</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -508,7 +508,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><code class="sig-name descname">/chart_data/segment/</code><span class="sig-paren">(</span><em class="property">int: </em><em class="sig-param">segment_id</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/chart_data/segment/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-chart_data-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get chart data from an workout gpx file, to display it with Recharts</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart/segment/0</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -579,7 +579,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><code class="sig-name descname">/gpx/segment/</code><span class="sig-paren">(</span><em class="property">int: </em><em class="sig-param">segment_id</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/gpx/segment/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">int:</span> </em><em class="sig-param"><span class="pre">segment_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-(string-workout_short_id)-gpx-segment-(int-segment_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get gpx file for an workout segment displayed on map with Leaflet</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx/segment/0</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -631,7 +631,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-map-(map_id)"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/map/</code><span class="sig-paren">(</span><em class="sig-param">map_id</em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-map-(map_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/map/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">map_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#get--api-workouts-map-(map_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get map image for workouts with gpx</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/map/fa33f4d996844a5c73ecd1ae24456ab8?1563529507772</span> | ||||
| @@ -667,7 +667,7 @@ | ||||
|  | ||||
| <dl class="http get"> | ||||
| <dt id="get--api-workouts-map_tile-(s)-(z)-(x)-(y).png"> | ||||
| <code class="sig-name descname">GET </code><code class="sig-name descname">/api/workouts/map_tile/</code><span class="sig-paren">(</span><em class="sig-param">s</em><span class="sig-paren">)</span><code class="sig-name descname">/</code><span class="sig-paren">(</span><em class="sig-param">z</em><span class="sig-paren">)</span><code class="sig-name descname">/</code><span class="sig-paren">(</span><em class="sig-param">x</em><span class="sig-paren">)</span><code class="sig-name descname">/</code><span class="sig-paren">(</span><em class="sig-param">y</em><span class="sig-paren">)</span><code class="sig-name descname">.png</code><a class="headerlink" href="#get--api-workouts-map_tile-(s)-(z)-(x)-(y).png" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">GET</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/map_tile/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">s</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">z</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">x</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">/</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="pre">y</span></em><span class="sig-paren">)</span><code class="sig-name descname"><span class="pre">.png</span></code><a class="headerlink" href="#get--api-workouts-map_tile-(s)-(z)-(x)-(y).png" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Get map tile from tile server.</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/workouts/map_tile/c/13/4109/2930.png</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -693,7 +693,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-workouts"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/workouts</code><a class="headerlink" href="#post--api-workouts" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/workouts</span></code><a class="headerlink" href="#post--api-workouts" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Post an workout with a gpx file</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/workouts/</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -821,7 +821,7 @@ | ||||
|  | ||||
| <dl class="http post"> | ||||
| <dt id="post--api-workouts-no_gpx"> | ||||
| <code class="sig-name descname">POST </code><code class="sig-name descname">/api/workouts/no_gpx</code><a class="headerlink" href="#post--api-workouts-no_gpx" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">POST</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/no_gpx</span></code><a class="headerlink" href="#post--api-workouts-no_gpx" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Post an workout without gpx file</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/workouts/no_gpx</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -946,7 +946,7 @@ | ||||
|  | ||||
| <dl class="http patch"> | ||||
| <dt id="patch--api-workouts-(string-workout_short_id)"> | ||||
| <code class="sig-name descname">PATCH </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">PATCH</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#patch--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Update an workout</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">PATCH</span> <span class="nn">/api/workouts/1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -1076,7 +1076,7 @@ | ||||
|  | ||||
| <dl class="http delete"> | ||||
| <dt id="delete--api-workouts-(string-workout_short_id)"> | ||||
| <code class="sig-name descname">DELETE </code><code class="sig-name descname">/api/workouts/</code><span class="sig-paren">(</span><em class="property">string: </em><em class="sig-param">workout_short_id</em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">DELETE</span> </code><code class="sig-name descname"><span class="pre">/api/workouts/</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">string:</span> </em><em class="sig-param"><span class="pre">workout_short_id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#delete--api-workouts-(string-workout_short_id)" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Delete an workout</p> | ||||
| <p><strong>Example request</strong>:</p> | ||||
| <div class="highlight-http notranslate"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/workouts/kjxavSTUrJvoAh2wvCeGEF</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> | ||||
| @@ -1131,7 +1131,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -525,7 +525,7 @@ add URL interceptors to simplify routes definition</p></li> | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -263,7 +263,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -187,7 +187,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -320,7 +320,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -220,7 +220,7 @@ Map</a>.</div> | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -214,7 +214,7 @@ or the task processing library. They are not all mandatory depending on | ||||
| deployment method.</p> | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-FLASK_APP"> | ||||
| <code class="sig-name descname">FLASK_APP</code><a class="headerlink" href="#envvar-FLASK_APP" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">FLASK_APP</span></code><a class="headerlink" href="#envvar-FLASK_APP" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="line-block"> | ||||
| <div class="line">Name of the module to import at flask run.</div> | ||||
| <div class="line"><code class="docutils literal notranslate"><span class="pre">FLASK_APP</span></code> should contain <code class="docutils literal notranslate"><span class="pre">$(PWD)/fittrackee/__main__.py</span></code> with installation from sources, else <code class="docutils literal notranslate"><span class="pre">fittrackee</span></code>.</div> | ||||
| @@ -223,7 +223,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-HOST"> | ||||
| <code class="sig-name descname">HOST</code><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">HOST</span></code><a class="headerlink" href="#envvar-HOST" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> host.</p> | ||||
| <dl class="field-list simple"> | ||||
| <dt class="field-odd">Default</dt> | ||||
| @@ -234,7 +234,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-PORT"> | ||||
| <code class="sig-name descname">PORT</code><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">PORT</span></code><a class="headerlink" href="#envvar-PORT" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> port.</p> | ||||
| <dl class="field-list simple"> | ||||
| <dt class="field-odd">Default</dt> | ||||
| @@ -245,7 +245,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-APP_SETTINGS"> | ||||
| <code class="sig-name descname">APP_SETTINGS</code><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">APP_SETTINGS</span></code><a class="headerlink" href="#envvar-APP_SETTINGS" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> configuration.</p> | ||||
| <dl class="field-list simple"> | ||||
| <dt class="field-odd">Default</dt> | ||||
| @@ -256,13 +256,13 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-APP_SECRET_KEY"> | ||||
| <code class="sig-name descname">APP_SECRET_KEY</code><a class="headerlink" href="#envvar-APP_SECRET_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">APP_SECRET_KEY</span></code><a class="headerlink" href="#envvar-APP_SECRET_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> secret key, must be initialized in production environment.</p> | ||||
| </dd></dl> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-APP_WORKERS"> | ||||
| <code class="sig-name descname">APP_WORKERS</code><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">APP_WORKERS</span></code><a class="headerlink" href="#envvar-APP_WORKERS" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p>Number of workers spawned by <strong>Gunicorn</strong>.</p> | ||||
| <dl class="field-list simple"> | ||||
| <dt class="field-odd">Default</dt> | ||||
| @@ -273,7 +273,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-APP_LOG"> | ||||
| <span id="envvar-APP_LOG 🆕"></span><code class="sig-name descname">APP_LOG 🆕</code><a class="headerlink" href="#envvar-APP_LOG" title="Permalink to this definition">¶</a></dt> | ||||
| <span id="envvar-APP_LOG 🆕"></span><code class="sig-name descname"><span class="pre">APP_LOG</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-APP_LOG" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||
| </div> | ||||
| @@ -282,7 +282,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-UPLOAD_FOLDER"> | ||||
| <span id="envvar-UPLOAD_FOLDER 🆕"></span><code class="sig-name descname">UPLOAD_FOLDER 🆕</code><a class="headerlink" href="#envvar-UPLOAD_FOLDER" title="Permalink to this definition">¶</a></dt> | ||||
| <span id="envvar-UPLOAD_FOLDER 🆕"></span><code class="sig-name descname"><span class="pre">UPLOAD_FOLDER</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-UPLOAD_FOLDER" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||
| </div> | ||||
| @@ -303,7 +303,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-DATABASE_URL"> | ||||
| <code class="sig-name descname">DATABASE_URL</code><a class="headerlink" href="#envvar-DATABASE_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">DATABASE_URL</span></code><a class="headerlink" href="#envvar-DATABASE_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="line-block"> | ||||
| <div class="line">Database URL with username and password, must be initialized in production environment.</div> | ||||
| <div class="line">For example in dev environment : <code class="docutils literal notranslate"><span class="pre">postgres://fittrackee:fittrackee@localhost:5432/fittrackee</span></code></div> | ||||
| @@ -312,7 +312,7 @@ deployment method.</p> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-DATABASE_DISABLE_POOLING"> | ||||
| <span id="envvar-DATABASE_DISABLE_POOLING 🆕"></span><code class="sig-name descname">DATABASE_DISABLE_POOLING 🆕</code><a class="headerlink" href="#envvar-DATABASE_DISABLE_POOLING" title="Permalink to this definition">¶</a></dt> | ||||
| <span id="envvar-DATABASE_DISABLE_POOLING 🆕"></span><code class="sig-name descname"><span class="pre">DATABASE_DISABLE_POOLING</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-DATABASE_DISABLE_POOLING" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||
| </div> | ||||
| @@ -327,13 +327,13 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-UI_URL"> | ||||
| <code class="sig-name descname">UI_URL</code><a class="headerlink" href="#envvar-UI_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">UI_URL</span></code><a class="headerlink" href="#envvar-UI_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> URL, needed for links in emails.</p> | ||||
| </dd></dl> | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-EMAIL_URL"> | ||||
| <code class="sig-name descname">EMAIL_URL</code><a class="headerlink" href="#envvar-EMAIL_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">EMAIL_URL</span></code><a class="headerlink" href="#envvar-EMAIL_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.3.0.</span></p> | ||||
| </div> | ||||
| @@ -342,7 +342,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-SENDER_EMAIL"> | ||||
| <code class="sig-name descname">SENDER_EMAIL</code><a class="headerlink" href="#envvar-SENDER_EMAIL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">SENDER_EMAIL</span></code><a class="headerlink" href="#envvar-SENDER_EMAIL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.3.0.</span></p> | ||||
| </div> | ||||
| @@ -351,7 +351,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REDIS_URL"> | ||||
| <code class="sig-name descname">REDIS_URL</code><a class="headerlink" href="#envvar-REDIS_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REDIS_URL</span></code><a class="headerlink" href="#envvar-REDIS_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.3.0.</span></p> | ||||
| </div> | ||||
| @@ -365,7 +365,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-WORKERS_PROCESSES"> | ||||
| <code class="sig-name descname">WORKERS_PROCESSES</code><a class="headerlink" href="#envvar-WORKERS_PROCESSES" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">WORKERS_PROCESSES</span></code><a class="headerlink" href="#envvar-WORKERS_PROCESSES" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.3.0.</span></p> | ||||
| </div> | ||||
| @@ -374,7 +374,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-TILE_SERVER_URL"> | ||||
| <span id="envvar-TILE_SERVER_URL 🆕"></span><code class="sig-name descname">TILE_SERVER_URL 🆕</code><a class="headerlink" href="#envvar-TILE_SERVER_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <span id="envvar-TILE_SERVER_URL 🆕"></span><code class="sig-name descname"><span class="pre">TILE_SERVER_URL</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-TILE_SERVER_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||
| </div> | ||||
| @@ -388,7 +388,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-MAP_ATTRIBUTION"> | ||||
| <span id="envvar-MAP_ATTRIBUTION 🆕"></span><code class="sig-name descname">MAP_ATTRIBUTION 🆕</code><a class="headerlink" href="#envvar-MAP_ATTRIBUTION" title="Permalink to this definition">¶</a></dt> | ||||
| <span id="envvar-MAP_ATTRIBUTION 🆕"></span><code class="sig-name descname"><span class="pre">MAP_ATTRIBUTION</span> <span class="pre">🆕</span></code><a class="headerlink" href="#envvar-MAP_ATTRIBUTION" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionadded"> | ||||
| <p><span class="versionmodified added">New in version 0.4.0.</span></p> | ||||
| </div> | ||||
| @@ -402,7 +402,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-WEATHER_API_KEY"> | ||||
| <code class="sig-name descname">WEATHER_API_KEY</code><a class="headerlink" href="#envvar-WEATHER_API_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">WEATHER_API_KEY</span></code><a class="headerlink" href="#envvar-WEATHER_API_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="versionchanged"> | ||||
| <p><span class="versionmodified changed">Changed in version 0.4.0: </span>⚠️ replaces <code class="docutils literal notranslate"><span class="pre">WEATHER_API</span></code></p> | ||||
| </div> | ||||
| @@ -411,7 +411,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_API_URL"> | ||||
| <code class="sig-name descname">REACT_APP_API_URL</code><a class="headerlink" href="#envvar-REACT_APP_API_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_API_URL</span></code><a class="headerlink" href="#envvar-REACT_APP_API_URL" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><p><strong>FitTrackee</strong> API URL, only needed in dev environment.</p> | ||||
| </dd></dl> | ||||
|  | ||||
| @@ -419,7 +419,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
| <h3>Deprecated variables<a class="headerlink" href="#deprecated-variables" title="Permalink to this headline">¶</a></h3> | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_GPX_LIMIT_IMPORT"> | ||||
| <code class="sig-name descname">REACT_APP_GPX_LIMIT_IMPORT</code><a class="headerlink" href="#envvar-REACT_APP_GPX_LIMIT_IMPORT" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_GPX_LIMIT_IMPORT</span></code><a class="headerlink" href="#envvar-REACT_APP_GPX_LIMIT_IMPORT" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="deprecated"> | ||||
| <p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p> | ||||
| </div> | ||||
| @@ -433,7 +433,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_MAX_SINGLE_FILE_SIZE"> | ||||
| <code class="sig-name descname">REACT_APP_MAX_SINGLE_FILE_SIZE</code><a class="headerlink" href="#envvar-REACT_APP_MAX_SINGLE_FILE_SIZE" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_MAX_SINGLE_FILE_SIZE</span></code><a class="headerlink" href="#envvar-REACT_APP_MAX_SINGLE_FILE_SIZE" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="deprecated"> | ||||
| <p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p> | ||||
| </div> | ||||
| @@ -447,7 +447,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_MAX_ZIP_FILE_SIZE"> | ||||
| <code class="sig-name descname">REACT_APP_MAX_ZIP_FILE_SIZE</code><a class="headerlink" href="#envvar-REACT_APP_MAX_ZIP_FILE_SIZE" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_MAX_ZIP_FILE_SIZE</span></code><a class="headerlink" href="#envvar-REACT_APP_MAX_ZIP_FILE_SIZE" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="deprecated"> | ||||
| <p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p> | ||||
| </div> | ||||
| @@ -461,7 +461,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_ALLOW_REGISTRATION"> | ||||
| <code class="sig-name descname">REACT_APP_ALLOW_REGISTRATION</code><a class="headerlink" href="#envvar-REACT_APP_ALLOW_REGISTRATION" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_ALLOW_REGISTRATION</span></code><a class="headerlink" href="#envvar-REACT_APP_ALLOW_REGISTRATION" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="deprecated"> | ||||
| <p><span class="versionmodified deprecated">Deprecated since version 0.3.0: </span>now stored in database</p> | ||||
| </div> | ||||
| @@ -475,7 +475,7 @@ see <a class="reference external" href="https://docs.sqlalchemy.org/en/13/core/p | ||||
|  | ||||
| <dl class="std envvar"> | ||||
| <dt id="envvar-REACT_APP_THUNDERFOREST_API_KEY"> | ||||
| <code class="sig-name descname">REACT_APP_THUNDERFOREST_API_KEY</code><a class="headerlink" href="#envvar-REACT_APP_THUNDERFOREST_API_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <code class="sig-name descname"><span class="pre">REACT_APP_THUNDERFOREST_API_KEY</span></code><a class="headerlink" href="#envvar-REACT_APP_THUNDERFOREST_API_KEY" title="Permalink to this definition">¶</a></dt> | ||||
| <dd><div class="deprecated"> | ||||
| <p><span class="versionmodified deprecated">Deprecated since version 0.4.0: </span>see <a class="reference external" href="installation.html#envvar-TILE_SERVER_URL">TILE_SERVER_URL</a></p> | ||||
| </div> | ||||
| @@ -951,7 +951,7 @@ $ make docker-build docker-run docker-init | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -148,7 +148,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -149,7 +149,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -151,7 +151,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
| @@ -142,7 +142,7 @@ | ||||
|     </p> | ||||
|     <p> | ||||
|         © Copyright 2018 - 2020, SamR1.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.4.3.<br/> | ||||
|       Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.5.1.<br/> | ||||
|     </p> | ||||
|   </div> | ||||
| </footer> | ||||
|   | ||||
							
								
								
									
										439
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										439
									
								
								poetry.lock
									
									
									
										generated
									
									
									
								
							| @@ -8,7 +8,7 @@ python-versions = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "alembic" | ||||
| version = "1.5.3" | ||||
| version = "1.5.4" | ||||
| description = "A database migration tool for SQLAlchemy." | ||||
| category = "main" | ||||
| optional = false | ||||
| @@ -35,7 +35,6 @@ description = "Atomic file writes." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | ||||
| marker = "sys_platform == \"win32\"" | ||||
|  | ||||
| [[package]] | ||||
| name = "attrs" | ||||
| @@ -46,10 +45,10 @@ optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | ||||
|  | ||||
| [package.extras] | ||||
| dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] | ||||
| dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"] | ||||
| docs = ["furo", "sphinx", "zope.interface"] | ||||
| tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] | ||||
| tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] | ||||
| tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] | ||||
| tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"] | ||||
|  | ||||
| [[package]] | ||||
| name = "babel" | ||||
| @@ -70,14 +69,14 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)"] | ||||
| typecheck = ["mypy"] | ||||
|  | ||||
| [package.dependencies] | ||||
| cffi = ">=1.1" | ||||
| six = ">=1.4.1" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["pytest (>=3.2.1,!=3.3.0)"] | ||||
| typecheck = ["mypy"] | ||||
|  | ||||
| [[package]] | ||||
| name = "black" | ||||
| version = "20.8b1" | ||||
| @@ -86,10 +85,6 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| colorama = ["colorama (>=0.4.3)"] | ||||
| d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] | ||||
|  | ||||
| [package.dependencies] | ||||
| appdirs = "*" | ||||
| click = ">=7.1.2" | ||||
| @@ -100,6 +95,10 @@ toml = ">=0.10.1" | ||||
| typed-ast = ">=1.4.0" | ||||
| typing-extensions = ">=3.7.4" | ||||
|  | ||||
| [package.extras] | ||||
| colorama = ["colorama (>=0.4.3)"] | ||||
| d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] | ||||
|  | ||||
| [[package]] | ||||
| name = "certifi" | ||||
| version = "2020.12.5" | ||||
| @@ -110,7 +109,7 @@ python-versions = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "cffi" | ||||
| version = "1.14.4" | ||||
| version = "1.14.5" | ||||
| description = "Foreign Function Interface for Python calling C code." | ||||
| category = "main" | ||||
| optional = false | ||||
| @@ -142,7 +141,6 @@ description = "Cross-platform colored terminal text." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
| marker = "sys_platform == \"win32\"" | ||||
|  | ||||
| [[package]] | ||||
| name = "commonmark" | ||||
| @@ -153,7 +151,7 @@ optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [package.extras] | ||||
| test = ["flake8 (3.7.8)", "hypothesis (3.55.3)"] | ||||
| test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "coverage" | ||||
| @@ -168,22 +166,22 @@ toml = ["toml"] | ||||
|  | ||||
| [[package]] | ||||
| name = "cryptography" | ||||
| version = "3.3.1" | ||||
| version = "3.4.6" | ||||
| description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx (>=1.6.5,<1.8.0 || >1.8.0,<3.1.0 || >3.1.0,<3.1.1 || >3.1.1)", "sphinx-rtd-theme"] | ||||
| docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] | ||||
| pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] | ||||
| ssh = ["bcrypt (>=3.1.5)"] | ||||
| test = ["pytest (>=3.6.0,<3.9.0 || >3.9.0,<3.9.1 || >3.9.1,<3.9.2 || >3.9.2)", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,<3.79.2 || >3.79.2)"] | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.dependencies] | ||||
| cffi = ">=1.12" | ||||
| six = ">=1.4.1" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] | ||||
| docstest = ["doc8", "pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"] | ||||
| pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] | ||||
| sdist = ["setuptools-rust (>=0.11.4)"] | ||||
| ssh = ["bcrypt (>=3.1.5)"] | ||||
| test = ["pytest (>=6.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "docutils" | ||||
| @@ -201,20 +199,17 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=3.5" | ||||
|  | ||||
| [package.dependencies] | ||||
| prometheus-client = ">=0.2" | ||||
| redis = {version = ">=2.0,<4.0", optional = true, markers = "extra == \"redis\""} | ||||
|  | ||||
| [package.extras] | ||||
| all = ["pika (>=1.0,<2.0)", "watchdog-gevent (0.1)", "watchdog (>=0.8,<0.9)", "redis (>=2.0,<4.0)", "pylibmc (>=1.5,<2.0)"] | ||||
| dev = ["pika (>=1.0,<2.0)", "watchdog-gevent (0.1)", "watchdog (>=0.8,<0.9)", "redis (>=2.0,<4.0)", "pylibmc (>=1.5,<2.0)", "alabaster", "sphinx (<1.8)", "sphinxcontrib-napoleon", "flake8", "flake8-bugbear", "flake8-quotes", "isort", "bumpversion", "hiredis", "twine", "wheel", "pytest (<4)", "pytest-benchmark", "pytest-cov", "tox"] | ||||
| all = ["pika (>=1.0,<2.0)", "watchdog-gevent (==0.1)", "watchdog (>=0.8,<0.9)", "redis (>=2.0,<4.0)", "pylibmc (>=1.5,<2.0)"] | ||||
| dev = ["pika (>=1.0,<2.0)", "watchdog-gevent (==0.1)", "watchdog (>=0.8,<0.9)", "redis (>=2.0,<4.0)", "pylibmc (>=1.5,<2.0)", "alabaster", "sphinx (<1.8)", "sphinxcontrib-napoleon", "flake8", "flake8-bugbear", "flake8-quotes", "isort", "bumpversion", "hiredis", "twine", "wheel", "pytest (<4)", "pytest-benchmark", "pytest-cov", "tox"] | ||||
| memcached = ["pylibmc (>=1.5,<2.0)"] | ||||
| rabbitmq = ["pika (>=1.0,<2.0)"] | ||||
| redis = ["redis (>=2.0,<4.0)"] | ||||
| watch = ["watchdog (>=0.8,<0.9)", "watchdog-gevent (0.1)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| prometheus-client = ">=0.2" | ||||
|  | ||||
| [package.dependencies.redis] | ||||
| version = ">=2.0,<4.0" | ||||
| optional = true | ||||
| watch = ["watchdog (>=0.8,<0.9)", "watchdog-gevent (==0.1)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "flake8" | ||||
| @@ -225,14 +220,11 @@ optional = false | ||||
| python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" | ||||
|  | ||||
| [package.dependencies] | ||||
| importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} | ||||
| mccabe = ">=0.6.0,<0.7.0" | ||||
| pycodestyle = ">=2.6.0a1,<2.7.0" | ||||
| pyflakes = ">=2.2.0,<2.3.0" | ||||
|  | ||||
| [package.dependencies.importlib-metadata] | ||||
| version = "*" | ||||
| python = "<3.8" | ||||
|  | ||||
| [[package]] | ||||
| name = "flask" | ||||
| version = "1.1.2" | ||||
| @@ -241,17 +233,17 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] | ||||
| docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] | ||||
| dotenv = ["python-dotenv"] | ||||
|  | ||||
| [package.dependencies] | ||||
| click = ">=5.1" | ||||
| itsdangerous = ">=0.24" | ||||
| Jinja2 = ">=2.10.1" | ||||
| Werkzeug = ">=0.15" | ||||
|  | ||||
| [package.extras] | ||||
| dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] | ||||
| docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"] | ||||
| dotenv = ["python-dotenv"] | ||||
|  | ||||
| [[package]] | ||||
| name = "flask-bcrypt" | ||||
| version = "0.7.1" | ||||
| @@ -333,9 +325,6 @@ gevent = ["gevent (>=0.13)"] | ||||
| setproctitle = ["setproctitle"] | ||||
| tornado = ["tornado (>=0.2)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| setuptools = ">=3.0" | ||||
|  | ||||
| [[package]] | ||||
| name = "humanize" | ||||
| version = "3.2.0" | ||||
| @@ -347,9 +336,6 @@ python-versions = ">=3.6" | ||||
| [package.extras] | ||||
| tests = ["freezegun", "pytest", "pytest-cov"] | ||||
|  | ||||
| [package.dependencies] | ||||
| setuptools = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "idna" | ||||
| version = "2.10" | ||||
| @@ -373,18 +359,14 @@ description = "Read metadata from Python packages" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| marker = "python_version < \"3.8\"" | ||||
|  | ||||
| [package.dependencies] | ||||
| typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} | ||||
| zipp = ">=0.5" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] | ||||
| testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| zipp = ">=0.5" | ||||
|  | ||||
| [package.dependencies.typing-extensions] | ||||
| version = ">=3.6.4" | ||||
| python = "<3.8" | ||||
| testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "iniconfig" | ||||
| @@ -423,12 +405,12 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| i18n = ["Babel (>=0.8)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| MarkupSafe = ">=0.23" | ||||
|  | ||||
| [package.extras] | ||||
| i18n = ["Babel (>=0.8)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "mako" | ||||
| version = "1.1.4" | ||||
| @@ -437,13 +419,13 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | ||||
|  | ||||
| [package.dependencies] | ||||
| MarkupSafe = ">=0.9.2" | ||||
|  | ||||
| [package.extras] | ||||
| babel = ["babel"] | ||||
| lingua = ["lingua"] | ||||
|  | ||||
| [package.dependencies] | ||||
| MarkupSafe = ">=0.9.2" | ||||
|  | ||||
| [[package]] | ||||
| name = "markupsafe" | ||||
| version = "1.1.1" | ||||
| @@ -468,14 +450,14 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.5" | ||||
|  | ||||
| [package.extras] | ||||
| dmypy = ["psutil (>=4.0)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| mypy-extensions = ">=0.4.3,<0.5.0" | ||||
| typed-ast = ">=1.4.0,<1.5.0" | ||||
| typing-extensions = ">=3.7.4" | ||||
|  | ||||
| [package.extras] | ||||
| dmypy = ["psutil (>=4.0)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "mypy-extensions" | ||||
| version = "0.4.3" | ||||
| @@ -519,14 +501,12 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | ||||
|  | ||||
| [package.dependencies] | ||||
| importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} | ||||
|  | ||||
| [package.extras] | ||||
| dev = ["pre-commit", "tox"] | ||||
|  | ||||
| [package.dependencies] | ||||
| [package.dependencies.importlib-metadata] | ||||
| version = ">=0.12" | ||||
| python = "<3.8" | ||||
|  | ||||
| [[package]] | ||||
| name = "prometheus-client" | ||||
| version = "0.9.0" | ||||
| @@ -580,7 +560,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | ||||
|  | ||||
| [[package]] | ||||
| name = "pygments" | ||||
| version = "2.7.4" | ||||
| version = "2.8.0" | ||||
| description = "Pygments is a syntax highlighting package written in Python." | ||||
| category = "dev" | ||||
| optional = false | ||||
| @@ -596,9 +576,9 @@ python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| crypto = ["cryptography (>=3.3.1,<4.0.0)"] | ||||
| dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4.0.0)", "pytest (>=6.0.0,<7.0.0)", "coverage (5.0.4)", "mypy", "pre-commit"] | ||||
| dev = ["sphinx", "sphinx-rtd-theme", "zope.interface", "cryptography (>=3.3.1,<4.0.0)", "pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)", "mypy", "pre-commit"] | ||||
| docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"] | ||||
| tests = ["pytest (>=6.0.0,<7.0.0)", "coverage (5.0.4)"] | ||||
| tests = ["pytest (>=6.0.0,<7.0.0)", "coverage[toml] (==5.0.4)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pyopenssl" | ||||
| @@ -608,14 +588,14 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx", "sphinx-rtd-theme"] | ||||
| test = ["flaky", "pretend", "pytest (>=3.0.1)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| cryptography = ">=3.2" | ||||
| six = ">=1.5.2" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx", "sphinx-rtd-theme"] | ||||
| test = ["flaky", "pretend", "pytest (>=3.0.1)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pyparsing" | ||||
| version = "2.4.7" | ||||
| @@ -632,22 +612,19 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] | ||||
|  | ||||
| [package.dependencies] | ||||
| atomicwrites = ">=1.0" | ||||
| atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} | ||||
| attrs = ">=19.2.0" | ||||
| colorama = "*" | ||||
| colorama = {version = "*", markers = "sys_platform == \"win32\""} | ||||
| importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} | ||||
| iniconfig = "*" | ||||
| packaging = "*" | ||||
| pluggy = ">=0.12,<1.0.0a1" | ||||
| py = ">=1.8.2" | ||||
| toml = "*" | ||||
|  | ||||
| [package.dependencies.importlib-metadata] | ||||
| version = ">=0.12" | ||||
| python = "<3.8" | ||||
| [package.extras] | ||||
| testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-base-url" | ||||
| @@ -670,13 +647,10 @@ optional = false | ||||
| python-versions = ">=2.7" | ||||
|  | ||||
| [package.dependencies] | ||||
| black = {version = "*", markers = "python_version >= \"3.6\""} | ||||
| pytest = ">=3.5.0" | ||||
| toml = "*" | ||||
|  | ||||
| [package.dependencies.black] | ||||
| version = "*" | ||||
| python = ">=3.6" | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-cov" | ||||
| version = "2.11.1" | ||||
| @@ -685,13 +659,13 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| testing = ["fields", "hunter", "process-tests (2.0.2)", "six", "pytest-xdist", "virtualenv"] | ||||
|  | ||||
| [package.dependencies] | ||||
| coverage = ">=5.2.1" | ||||
| pytest = ">=4.6" | ||||
|  | ||||
| [package.extras] | ||||
| testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist", "virtualenv"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-flake8" | ||||
| version = "1.0.7" | ||||
| @@ -724,12 +698,12 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["mock"] | ||||
|  | ||||
| [package.dependencies] | ||||
| isort = ">=4.0" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["mock"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-metadata" | ||||
| version = "1.11.0" | ||||
| @@ -743,15 +717,15 @@ pytest = ">=2.9.0" | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-runner" | ||||
| version = "5.2" | ||||
| version = "5.3.0" | ||||
| description = "Invoke py.test as distutils command with dependency resolution" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=2.7" | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] | ||||
| testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs", "pytest-flake8", "pytest-black-multipy", "pytest-cov", "pytest-virtualenv"] | ||||
| docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] | ||||
| testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "pytest-virtualenv", "pytest-black (>=0.3.7)", "pytest-mypy"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-selenium" | ||||
| @@ -761,9 +735,6 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
|  | ||||
| [package.extras] | ||||
| appium = ["appium-python-client (>=0.44)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| pytest = ">=5.0.0" | ||||
| pytest-base-url = "*" | ||||
| @@ -773,6 +744,9 @@ requests = "*" | ||||
| selenium = ">=3.0.0" | ||||
| tenacity = ">=6,<7" | ||||
|  | ||||
| [package.extras] | ||||
| appium = ["appium-python-client (>=0.44)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "pytest-variables" | ||||
| version = "1.9.0" | ||||
| @@ -781,14 +755,14 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [package.dependencies] | ||||
| pytest = ">=2.4.2" | ||||
|  | ||||
| [package.extras] | ||||
| hjson = ["hjson"] | ||||
| toml = ["toml"] | ||||
| yaml = ["pyyaml"] | ||||
|  | ||||
| [package.dependencies] | ||||
| pytest = ">=2.4.2" | ||||
|  | ||||
| [[package]] | ||||
| name = "python-dateutil" | ||||
| version = "2.8.1" | ||||
| @@ -822,7 +796,7 @@ responses = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "pytz" | ||||
| version = "2020.5" | ||||
| version = "2021.1" | ||||
| description = "World timezone definitions, modern and historical" | ||||
| category = "main" | ||||
| optional = false | ||||
| @@ -868,16 +842,16 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] | ||||
| socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] | ||||
|  | ||||
| [package.dependencies] | ||||
| certifi = ">=2017.4.17" | ||||
| chardet = ">=3.0.2,<5" | ||||
| idna = ">=2.5,<3" | ||||
| urllib3 = ">=1.21.1,<1.27" | ||||
|  | ||||
| [package.extras] | ||||
| security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] | ||||
| socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] | ||||
|  | ||||
| [[package]] | ||||
| name = "responses" | ||||
| version = "0.12.1" | ||||
| @@ -886,14 +860,14 @@ category = "main" | ||||
| optional = false | ||||
| python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["coverage (>=3.7.1,<6.0.0)", "pytest-cov", "pytest-localserver", "flake8", "pytest (>=4.6,<5.0)", "pytest (>=4.6)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| requests = ">=2.0" | ||||
| six = "*" | ||||
| urllib3 = ">=1.25.10" | ||||
|  | ||||
| [package.extras] | ||||
| tests = ["coverage (>=3.7.1,<6.0.0)", "pytest-cov", "pytest-localserver", "flake8", "pytest (>=4.6,<5.0)", "pytest (>=4.6)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "selenium" | ||||
| version = "3.141.0" | ||||
| @@ -931,28 +905,22 @@ python-versions = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "sphinx" | ||||
| version = "3.4.3" | ||||
| version = "3.5.1" | ||||
| description = "Python documentation generator" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.5" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinxcontrib-websupport"] | ||||
| lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.790)", "docutils-stubs"] | ||||
| test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] | ||||
|  | ||||
| [package.dependencies] | ||||
| alabaster = ">=0.7,<0.8" | ||||
| babel = ">=1.3" | ||||
| colorama = ">=0.3.5" | ||||
| colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} | ||||
| docutils = ">=0.12" | ||||
| imagesize = "*" | ||||
| Jinja2 = ">=2.3" | ||||
| packaging = "*" | ||||
| Pygments = ">=2.0" | ||||
| requests = ">=2.5.0" | ||||
| setuptools = "*" | ||||
| snowballstemmer = ">=1.1" | ||||
| sphinxcontrib-applehelp = "*" | ||||
| sphinxcontrib-devhelp = "*" | ||||
| @@ -961,6 +929,11 @@ sphinxcontrib-jsmath = "*" | ||||
| sphinxcontrib-qthelp = "*" | ||||
| sphinxcontrib-serializinghtml = "*" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinxcontrib-websupport"] | ||||
| lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.800)", "docutils-stubs"] | ||||
| test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] | ||||
|  | ||||
| [[package]] | ||||
| name = "sphinx-bootstrap-theme" | ||||
| version = "0.7.1" | ||||
| @@ -969,9 +942,6 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [package.dependencies] | ||||
| setuptools = "*" | ||||
|  | ||||
| [[package]] | ||||
| name = "sphinxcontrib-applehelp" | ||||
| version = "1.0.2" | ||||
| @@ -1057,7 +1027,7 @@ test = ["pytest"] | ||||
|  | ||||
| [[package]] | ||||
| name = "sqlalchemy" | ||||
| version = "1.3.22" | ||||
| version = "1.3.23" | ||||
| description = "Database Abstraction Library" | ||||
| category = "main" | ||||
| optional = false | ||||
| @@ -1070,10 +1040,10 @@ mssql_pyodbc = ["pyodbc"] | ||||
| mysql = ["mysqlclient"] | ||||
| oracle = ["cx-oracle"] | ||||
| postgresql = ["psycopg2"] | ||||
| postgresql_pg8000 = ["pg8000"] | ||||
| postgresql_pg8000 = ["pg8000 (<1.16.6)"] | ||||
| postgresql_psycopg2binary = ["psycopg2-binary"] | ||||
| postgresql_psycopg2cffi = ["psycopg2cffi"] | ||||
| pymysql = ["pymysql"] | ||||
| pymysql = ["pymysql (<1)", "pymysql"] | ||||
|  | ||||
| [[package]] | ||||
| name = "staticmap" | ||||
| @@ -1095,12 +1065,12 @@ category = "dev" | ||||
| optional = false | ||||
| python-versions = "*" | ||||
|  | ||||
| [package.extras] | ||||
| doc = ["reno", "sphinx", "tornado (>=4.5)"] | ||||
|  | ||||
| [package.dependencies] | ||||
| six = ">=1.9.0" | ||||
|  | ||||
| [package.extras] | ||||
| doc = ["reno", "sphinx", "tornado (>=4.5)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "toml" | ||||
| version = "0.10.2" | ||||
| @@ -1111,7 +1081,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" | ||||
|  | ||||
| [[package]] | ||||
| name = "tqdm" | ||||
| version = "4.56.0" | ||||
| version = "4.56.2" | ||||
| description = "Fast, Extensible Progress Meter" | ||||
| category = "main" | ||||
| optional = false | ||||
| @@ -1148,7 +1118,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" | ||||
| [package.extras] | ||||
| brotli = ["brotlipy (>=0.6.0)"] | ||||
| secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] | ||||
| socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] | ||||
| socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] | ||||
|  | ||||
| [[package]] | ||||
| name = "werkzeug" | ||||
| @@ -1169,16 +1139,15 @@ description = "Backport of pathlib-compatible object wrapper for zip files" | ||||
| category = "dev" | ||||
| optional = false | ||||
| python-versions = ">=3.6" | ||||
| marker = "python_version < \"3.8\"" | ||||
|  | ||||
| [package.extras] | ||||
| docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] | ||||
| testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] | ||||
| testing = ["pytest (>=3.5,!=3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] | ||||
|  | ||||
| [metadata] | ||||
| lock-version = "1.0" | ||||
| lock-version = "1.1" | ||||
| python-versions = "^3.7" | ||||
| content-hash = "33f0a4c90621c743d729331d579050adee2e855baaa81ef3b88e7fbf62c9cfbf" | ||||
| content-hash = "6f7257670b33ecc83442a1d347ce18de249d9dee5405fce109590ff36f8fd009" | ||||
|  | ||||
| [metadata.files] | ||||
| alabaster = [ | ||||
| @@ -1186,7 +1155,7 @@ alabaster = [ | ||||
|     {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, | ||||
| ] | ||||
| alembic = [ | ||||
|     {file = "alembic-1.5.3.tar.gz", hash = "sha256:04608b6904a6e6bd1af83e1a48f73f50ba214aeddef44b92d498df33818654a8"}, | ||||
|     {file = "alembic-1.5.4.tar.gz", hash = "sha256:e871118b6174681f7e9a9ea67cfcae954c6d18e05b49c6b17f662d2530c76bf5"}, | ||||
| ] | ||||
| appdirs = [ | ||||
|     {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, | ||||
| @@ -1222,40 +1191,43 @@ certifi = [ | ||||
|     {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"}, | ||||
| ] | ||||
| cffi = [ | ||||
|     {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27m-win32.whl", hash = "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27m-win_amd64.whl", hash = "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d"}, | ||||
|     {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca"}, | ||||
|     {file = "cffi-1.14.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698"}, | ||||
|     {file = "cffi-1.14.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b"}, | ||||
|     {file = "cffi-1.14.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293"}, | ||||
|     {file = "cffi-1.14.4-cp35-cp35m-win32.whl", hash = "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2"}, | ||||
|     {file = "cffi-1.14.4-cp35-cp35m-win_amd64.whl", hash = "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-win32.whl", hash = "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668"}, | ||||
|     {file = "cffi-1.14.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009"}, | ||||
|     {file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"}, | ||||
|     {file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"}, | ||||
|     {file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"}, | ||||
|     {file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"}, | ||||
|     {file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"}, | ||||
|     {file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"}, | ||||
|     {file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"}, | ||||
|     {file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"}, | ||||
|     {file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"}, | ||||
|     {file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"}, | ||||
|     {file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"}, | ||||
|     {file = "cffi-1.14.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd"}, | ||||
|     {file = "cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a"}, | ||||
|     {file = "cffi-1.14.4-cp39-cp39-win32.whl", hash = "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3"}, | ||||
|     {file = "cffi-1.14.4-cp39-cp39-win_amd64.whl", hash = "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b"}, | ||||
|     {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27m-win32.whl", hash = "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27m-win_amd64.whl", hash = "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482"}, | ||||
|     {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6"}, | ||||
|     {file = "cffi-1.14.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045"}, | ||||
|     {file = "cffi-1.14.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa"}, | ||||
|     {file = "cffi-1.14.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406"}, | ||||
|     {file = "cffi-1.14.5-cp35-cp35m-win32.whl", hash = "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369"}, | ||||
|     {file = "cffi-1.14.5-cp35-cp35m-win_amd64.whl", hash = "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-win32.whl", hash = "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53"}, | ||||
|     {file = "cffi-1.14.5-cp36-cp36m-win_amd64.whl", hash = "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-win32.whl", hash = "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62"}, | ||||
|     {file = "cffi-1.14.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-win32.whl", hash = "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e"}, | ||||
|     {file = "cffi-1.14.5-cp38-cp38-win_amd64.whl", hash = "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-win32.whl", hash = "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396"}, | ||||
|     {file = "cffi-1.14.5-cp39-cp39-win_amd64.whl", hash = "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d"}, | ||||
|     {file = "cffi-1.14.5.tar.gz", hash = "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c"}, | ||||
| ] | ||||
| chardet = [ | ||||
|     {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, | ||||
| @@ -1325,20 +1297,13 @@ coverage = [ | ||||
|     {file = "coverage-5.4.tar.gz", hash = "sha256:6d2e262e5e8da6fa56e774fb8e2643417351427604c2b177f8e8c5f75fc928ca"}, | ||||
| ] | ||||
| cryptography = [ | ||||
|     {file = "cryptography-3.3.1-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:c366df0401d1ec4e548bebe8f91d55ebcc0ec3137900d214dd7aac8427ef3030"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f6b0492d111b43de5f70052e24c1f0951cb9e6022188ebcb1cc3a3d301469b0"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a69bd3c68b98298f490e84519b954335154917eaab52cf582fa2c5c7efc6e812"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27m-win32.whl", hash = "sha256:84ef7a0c10c24a7773163f917f1cb6b4444597efd505a8aed0a22e8c4780f27e"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:594a1db4511bc4d960571536abe21b4e5c3003e8750ab8365fafce71c5d86901"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0003a52a123602e1acee177dc90dd201f9bb1e73f24a070db7d36c588e8f5c7d"}, | ||||
|     {file = "cryptography-3.3.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:83d9d2dfec70364a74f4e7c70ad04d3ca2e6a08b703606993407bf46b97868c5"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:dc42f645f8f3a489c3dd416730a514e7a91a59510ddaadc09d04224c098d3302"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:788a3c9942df5e4371c199d10383f44a105d67d401fb4304178020142f020244"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:69e836c9e5ff4373ce6d3ab311c1a2eed274793083858d3cd4c7d12ce20d5f9c"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:9e21301f7a1e7c03dbea73e8602905a4ebba641547a462b26dd03451e5769e7c"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-win32.whl", hash = "sha256:b4890d5fb9b7a23e3bf8abf5a8a7da8e228f1e97dc96b30b95685df840b6914a"}, | ||||
|     {file = "cryptography-3.3.1-cp36-abi3-win_amd64.whl", hash = "sha256:0e85aaae861d0485eb5a79d33226dd6248d2a9f133b81532c8f5aae37de10ff7"}, | ||||
|     {file = "cryptography-3.3.1.tar.gz", hash = "sha256:7e177e4bea2de937a584b13645cab32f25e3d96fc0bc4a4cf99c27dc77682be6"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:57ad77d32917bc55299b16d3b996ffa42a1c73c6cfa829b14043c561288d2799"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:93cfe5b7ff006de13e1e89830810ecbd014791b042cbe5eec253be11ac2b28f3"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:5ecf2bcb34d17415e89b546dbb44e73080f747e504273e4d4987630493cded1b"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-manylinux2014_x86_64.whl", hash = "sha256:fec7fb46b10da10d9e1d078d1ff8ed9e05ae14f431fdbd11145edd0550b9a964"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-win32.whl", hash = "sha256:df186fcbf86dc1ce56305becb8434e4b6b7504bc724b71ad7a3239e0c9d14ef2"}, | ||||
|     {file = "cryptography-3.4.6-cp36-abi3-win_amd64.whl", hash = "sha256:66b57a9ca4b3221d51b237094b0303843b914b7d5afd4349970bb26518e350b0"}, | ||||
|     {file = "cryptography-3.4.6.tar.gz", hash = "sha256:2d32223e5b0ee02943f32b19245b61a62db83a882f0e76cc564e1cec60d48f87"}, | ||||
| ] | ||||
| docutils = [ | ||||
|     {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, | ||||
| @@ -1581,8 +1546,8 @@ pyflakes = [ | ||||
|     {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"}, | ||||
| ] | ||||
| pygments = [ | ||||
|     {file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"}, | ||||
|     {file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"}, | ||||
|     {file = "Pygments-2.8.0-py3-none-any.whl", hash = "sha256:b21b072d0ccdf29297a82a2363359d99623597b8a265b8081760e4d0f7153c88"}, | ||||
|     {file = "Pygments-2.8.0.tar.gz", hash = "sha256:37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0"}, | ||||
| ] | ||||
| pyjwt = [ | ||||
|     {file = "PyJWT-2.0.1-py3-none-any.whl", hash = "sha256:b70b15f89dc69b993d8a8d32c299032d5355c82f9b5b7e851d1a6d706dffe847"}, | ||||
| @@ -1628,8 +1593,8 @@ pytest-metadata = [ | ||||
|     {file = "pytest_metadata-1.11.0-py2.py3-none-any.whl", hash = "sha256:576055b8336dd4a9006dd2a47615f76f2f8c30ab12b1b1c039d99e834583523f"}, | ||||
| ] | ||||
| pytest-runner = [ | ||||
|     {file = "pytest-runner-5.2.tar.gz", hash = "sha256:96c7e73ead7b93e388c5d614770d2bae6526efd997757d3543fe17b557a0942b"}, | ||||
|     {file = "pytest_runner-5.2-py2.py3-none-any.whl", hash = "sha256:5534b08b133ef9a5e2c22c7886a8f8508c95bb0b0bdc6cc13214f269c3c70d51"}, | ||||
|     {file = "pytest-runner-5.3.0.tar.gz", hash = "sha256:ca3f58ff4957e8be6c54c55d575b235725cbbcf4dc0d5091c29c6444cfc8a5fe"}, | ||||
|     {file = "pytest_runner-5.3.0-py3-none-any.whl", hash = "sha256:448959d9ada752de2b369cf05c1c0f9e6d2027e7d32441187c16c24c1d4d6e77"}, | ||||
| ] | ||||
| pytest-selenium = [ | ||||
|     {file = "pytest-selenium-2.0.1.tar.gz", hash = "sha256:a0008e6dce7c68501369c1c543420f5906ffada493d4ff0c5d9d5ccdf4022203"}, | ||||
| @@ -1654,8 +1619,8 @@ python-forecastio = [ | ||||
|     {file = "python-forecastio-1.4.0.tar.gz", hash = "sha256:144419d65e3b46961f38853f959a91f6e6cfa9e6d5b6f47aa9dc5e431471d454"}, | ||||
| ] | ||||
| pytz = [ | ||||
|     {file = "pytz-2020.5-py2.py3-none-any.whl", hash = "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4"}, | ||||
|     {file = "pytz-2020.5.tar.gz", hash = "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5"}, | ||||
|     {file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"}, | ||||
|     {file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"}, | ||||
| ] | ||||
| recommonmark = [ | ||||
|     {file = "recommonmark-0.7.1-py2.py3-none-any.whl", hash = "sha256:1b1db69af0231efce3fa21b94ff627ea33dee7079a01dd0a7f8482c3da148b3f"}, | ||||
| @@ -1733,8 +1698,8 @@ snowballstemmer = [ | ||||
|     {file = "snowballstemmer-2.1.0.tar.gz", hash = "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"}, | ||||
| ] | ||||
| sphinx = [ | ||||
|     {file = "Sphinx-3.4.3-py3-none-any.whl", hash = "sha256:c314c857e7cd47c856d2c5adff514ac2e6495f8b8e0f886a8a37e9305dfea0d8"}, | ||||
|     {file = "Sphinx-3.4.3.tar.gz", hash = "sha256:41cad293f954f7d37f803d97eb184158cfd90f51195131e94875bc07cd08b93c"}, | ||||
|     {file = "Sphinx-3.5.1-py3-none-any.whl", hash = "sha256:e90161222e4d80ce5fc811ace7c6787a226b4f5951545f7f42acf97277bfc35c"}, | ||||
|     {file = "Sphinx-3.5.1.tar.gz", hash = "sha256:11d521e787d9372c289472513d807277caafb1684b33eb4f08f7574c405893a9"}, | ||||
| ] | ||||
| sphinx-bootstrap-theme = [ | ||||
|     {file = "sphinx-bootstrap-theme-0.7.1.tar.gz", hash = "sha256:571e43ccb76d4c6c06576aa24a826b6ebc7adac45a5b54985200128806279d08"}, | ||||
| @@ -1768,44 +1733,44 @@ sphinxcontrib-serializinghtml = [ | ||||
|     {file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"}, | ||||
| ] | ||||
| sqlalchemy = [ | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:61628715931f4962e0cdb2a7c87ff39eea320d2aa96bd471a3c293d146f90394"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:81d8d099a49f83111cce55ec03cc87eef45eec0d90f9842b4fc674f860b857b0"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:d055ff750fcab69ca4e57b656d9c6ad33682e9b8d564f2fbe667ab95c63591b0"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27m-win32.whl", hash = "sha256:9bf572e4f5aa23f88dd902f10bb103cb5979022a38eec684bfa6d61851173fec"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27m-win_amd64.whl", hash = "sha256:7d4b8de6bb0bc736161cb0bbd95366b11b3eb24dd6b814a143d8375e75af9990"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:4a84c7c7658dd22a33dab2e2aa2d17c18cb004a42388246f2e87cb4085ef2811"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:f1e88b30da8163215eab643962ae9d9252e47b4ea53404f2c4f10f24e70ddc62"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:f115150cc4361dd46153302a640c7fa1804ac207f9cc356228248e351a8b4676"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6aaa13ee40c4552d5f3a59f543f0db6e31712cc4009ec7385407be4627259d41"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3ab5b44a07b8c562c6dcb7433c6a6c6e03266d19d64f87b3333eda34e3b9936b"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:426ece890153ccc52cc5151a1a0ed540a5a7825414139bb4c95a868d8da54a52"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-win32.whl", hash = "sha256:bd4b1af45fd322dcd1fb2a9195b4f93f570d1a5902a842e3e6051385fac88f9c"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp35-cp35m-win_amd64.whl", hash = "sha256:62285607a5264d1f91590abd874d6a498e229d5840669bd7d9f654cfaa599bd0"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:314f5042c0b047438e19401d5f29757a511cfc2f0c40d28047ca0e4c95eabb5b"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:62fb881ba51dbacba9af9b779211cf9acff3442d4f2993142015b22b3cd1f92a"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:bde677047305fe76c7ee3e4492b545e0018918e44141cc154fe39e124e433991"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:0c6406a78a714a540d980a680b86654feadb81c8d0eecb59f3d6c554a4c69f19"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-win32.whl", hash = "sha256:95bde07d19c146d608bccb9b16e144ec8f139bcfe7fd72331858698a71c9b4f5"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp36-cp36m-win_amd64.whl", hash = "sha256:888d5b4b5aeed0d3449de93ea80173653e939e916cc95fe8527079e50235c1d2"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:d53f59744b01f1440a1b0973ed2c3a7de204135c593299ee997828aad5191693"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:70121f0ae48b25ef3e56e477b88cd0b0af0e1f3a53b5554071aa6a93ef378a03"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:54da615e5b92c339e339fe8536cce99fe823b6ed505d4ea344852aefa1c205fb"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:68428818cf80c60dc04aa0f38da20ad39b28aba4d4d199f949e7d6e04444ea86"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-win32.whl", hash = "sha256:17610d573e698bf395afbbff946544fbce7c5f4ee77b5bcb1f821b36345fae7a"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp37-cp37m-win_amd64.whl", hash = "sha256:216ba5b4299c95ed179b58f298bda885a476b16288ab7243e89f29f6aeced7e0"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:0c72b90988be749e04eff0342dcc98c18a14461eb4b2ad59d611b57b31120f90"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:491fe48adc07d13e020a8b07ef82eefc227003a046809c121bea81d3dbf1832d"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:f8191fef303025879e6c3548ecd8a95aafc0728c764ab72ec51a0bdf0c91a341"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:108580808803c7732f34798eb4a329d45b04c562ed83ee90f09f6a184a42b766"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-win32.whl", hash = "sha256:bab5a1e15b9466a25c96cda19139f3beb3e669794373b9ce28c4cf158c6e841d"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp38-cp38-win_amd64.whl", hash = "sha256:318b5b727e00662e5fc4b4cd2bf58a5116d7c1b4dd56ffaa7d68f43458a8d1ed"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:1418f5e71d6081aa1095a1d6b567a562d2761996710bdce9b6e6ba20a03d0864"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:5a7f224cdb7233182cec2a45d4c633951268d6a9bcedac37abbf79dd07012aea"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:715b34578cc740b743361f7c3e5f584b04b0f1344f45afc4e87fbac4802eb0a0"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2ff132a379838b1abf83c065be54cef32b47c987aedd06b82fc76476c85225eb"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-win32.whl", hash = "sha256:c389d7cc2b821853fb018c85457da3e7941db64f4387720a329bc7ff06a27963"}, | ||||
|     {file = "SQLAlchemy-1.3.22-cp39-cp39-win_amd64.whl", hash = "sha256:04f995fcbf54e46cddeb4f75ce9dfc17075d6ae04ac23b2bacb44b3bc6f6bf11"}, | ||||
|     {file = "SQLAlchemy-1.3.22.tar.gz", hash = "sha256:758fc8c4d6c0336e617f9f6919f9daea3ab6bb9b07005eda9a1a682e24a6cacc"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:fd3b96f8c705af8e938eaa99cbd8fd1450f632d38cad55e7367c33b263bf98ec"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:29cccc9606750fe10c5d0e8bd847f17a97f3850b8682aef1f56f5d5e1a5a64b1"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:927ce09e49bff3104459e1451ce82983b0a3062437a07d883a4c66f0b344c9b5"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27m-win32.whl", hash = "sha256:b4b0e44d586cd64b65b507fa116a3814a1a53d55dce4836d7c1a6eb2823ff8d1"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27m-win_amd64.whl", hash = "sha256:6b8b8c80c7f384f06825612dd078e4a31f0185e8f1f6b8c19e188ff246334205"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9e9c25522933e569e8b53ccc644dc993cab87e922fb7e142894653880fdd419d"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:a0e306e9bb76fd93b29ae3a5155298e4c1b504c7cbc620c09c20858d32d16234"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:6c9e6cc9237de5660bcddea63f332428bb83c8e2015c26777281f7ffbd2efb84"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:94f667d86be82dd4cb17d08de0c3622e77ca865320e0b95eae6153faa7b4ecaf"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:751934967f5336a3e26fc5993ccad1e4fee982029f9317eb6153bc0bc3d2d2da"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:63677d0c08524af4c5893c18dbe42141de7178001360b3de0b86217502ed3601"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-win32.whl", hash = "sha256:ddfb511e76d016c3a160910642d57f4587dc542ce5ee823b0d415134790eeeb9"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp35-cp35m-win_amd64.whl", hash = "sha256:040bdfc1d76a9074717a3f43455685f781c581f94472b010cd6c4754754e1862"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:d1a85dfc5dee741bf49cb9b6b6b8d2725a268e4992507cf151cba26b17d97c37"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:639940bbe1108ac667dcffc79925db2966826c270112e9159439ab6bb14f8d80"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:e8a1750b44ad6422ace82bf3466638f1aa0862dbb9689690d5f2f48cce3476c8"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e5bb3463df697279e5459a7316ad5a60b04b0107f9392e88674d0ece70e9cf70"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-win32.whl", hash = "sha256:e273367f4076bd7b9a8dc2e771978ef2bfd6b82526e80775a7db52bff8ca01dd"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp36-cp36m-win_amd64.whl", hash = "sha256:ac2244e64485c3778f012951fdc869969a736cd61375fde6096d08850d8be729"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:23927c3981d1ec6b4ea71eb99d28424b874d9c696a21e5fbd9fa322718be3708"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:d90010304abb4102123d10cbad2cdf2c25a9f2e66a50974199b24b468509bad5"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a8bfc1e1afe523e94974132d7230b82ca7fa2511aedde1f537ec54db0399541a"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:269990b3ab53cb035d662dcde51df0943c1417bdab707dc4a7e4114a710504b4"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-win32.whl", hash = "sha256:fdd2ed7395df8ac2dbb10cefc44737b66c6a5cd7755c92524733d7a443e5b7e2"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp37-cp37m-win_amd64.whl", hash = "sha256:6a939a868fdaa4b504e8b9d4a61f21aac11e3fecc8a8214455e144939e3d2aea"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:24f9569e82a009a09ce2d263559acb3466eba2617203170e4a0af91e75b4f075"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2578dbdbe4dbb0e5126fb37ffcd9793a25dcad769a95f171a2161030bea850ff"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1fe5d8d39118c2b018c215c37b73fd6893c3e1d4895be745ca8ff6eb83333ed3"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:c7dc052432cd5d060d7437e217dd33c97025287f99a69a50e2dc1478dd610d64"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-win32.whl", hash = "sha256:ecce8c021894a77d89808222b1ff9687ad84db54d18e4bd0500ca766737faaf6"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp38-cp38-win_amd64.whl", hash = "sha256:37b83bf81b4b85dda273aaaed5f35ea20ad80606f672d94d2218afc565fb0173"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:8be835aac18ec85351385e17b8665bd4d63083a7160a017bef3d640e8e65cadb"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6ec1044908414013ebfe363450c22f14698803ce97fbb47e53284d55c5165848"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:eab063a70cca4a587c28824e18be41d8ecc4457f8f15b2933584c6c6cccd30f0"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:baeb451ee23e264de3f577fee5283c73d9bbaa8cb921d0305c0bbf700094b65b"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-win32.whl", hash = "sha256:94208867f34e60f54a33a37f1c117251be91a47e3bfdb9ab8a7847f20886ad06"}, | ||||
|     {file = "SQLAlchemy-1.3.23-cp39-cp39-win_amd64.whl", hash = "sha256:f4d972139d5000105fcda9539a76452039434013570d6059993120dc2a65e447"}, | ||||
|     {file = "SQLAlchemy-1.3.23.tar.gz", hash = "sha256:6fca33672578666f657c131552c4ef8979c1606e494f78cd5199742dfb26918b"}, | ||||
| ] | ||||
| staticmap = [ | ||||
|     {file = "staticmap-0.5.4.tar.gz", hash = "sha256:9d05a1739cffa0cf6ab8f64873e6dacb36c593c23f2a70053115ef344954b315"}, | ||||
| @@ -1819,8 +1784,8 @@ toml = [ | ||||
|     {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, | ||||
| ] | ||||
| tqdm = [ | ||||
|     {file = "tqdm-4.56.0-py2.py3-none-any.whl", hash = "sha256:4621f6823bab46a9cc33d48105753ccbea671b68bab2c50a9f0be23d4065cb5a"}, | ||||
|     {file = "tqdm-4.56.0.tar.gz", hash = "sha256:fe3d08dd00a526850568d542ff9de9bbc2a09a791da3c334f3213d8d0bbbca65"}, | ||||
|     {file = "tqdm-4.56.2-py2.py3-none-any.whl", hash = "sha256:a89be573bfddb81bb0b395a416d5e55e3ecc73ce95a368a4f6360bedea33195e"}, | ||||
|     {file = "tqdm-4.56.2.tar.gz", hash = "sha256:11d544652edbdfc9cc41aa4c8a5c166513e279f3f2d9f1a9e1c89935b51de6ff"}, | ||||
| ] | ||||
| typed-ast = [ | ||||
|     {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70"}, | ||||
|   | ||||
| @@ -34,7 +34,7 @@ humanize = "^3.2.0" | ||||
| psycopg2-binary = "^2.8" | ||||
| pyjwt = "^2.0" | ||||
| python-forecastio = "^1.4" | ||||
| pytz = "^2020.5" | ||||
| pytz = "^2021.1" | ||||
| shortuuid = "^1.0.1" | ||||
| staticmap = "^0.5.4" | ||||
| tqdm = "^4.56" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user