Best Python code snippet using autotest_python
20200608_153224_create_all_tables.py
Source:20200608_153224_create_all_tables.py  
1"""create all tables2Revision ID: be0d4210024a3Revises:4C5reate Date: 2020-06-08 15:32:24.3539806"""7from alembic import op8import sqlalchemy as sa9from datetime import datetime10from app.models import db, User, Set, Card11# revision identifiers, used by Alembic.12revision = 'be0d4210024a'13down_revision = None14branch_labels = None15depends_on = None16def upgrade():17    # ### commands auto generated by Alembic - please adjust! ###18    categories_table = op.create_table('categories',19                                       sa.Column('id', sa.Integer(),20                                                 nullable=False),21                                       sa.Column('name', sa.String(22                                           length=50), nullable=False),23                                       sa.PrimaryKeyConstraint('id'),24                                       sa.UniqueConstraint('name')25                                       )26    users_table = op.create_table('users',27                                  sa.Column('id', sa.Integer(),28                                            nullable=False),29                                  sa.Column('email', sa.String(30                                      length=50), nullable=False),31                                  sa.Column('nickname', sa.String(32                                      length=50), nullable=False),33                                  sa.PrimaryKeyConstraint('id'),34                                  sa.UniqueConstraint('email')35                                  )36    sets_table = op.create_table('sets',37                                 sa.Column('id', sa.Integer(), nullable=False),38                                 sa.Column('title', sa.String(39                                     length=51), nullable=False),40                                 sa.Column('description', sa.Text(),41                                           nullable=True),42                                 sa.Column('category_id',43                                           sa.Integer(), nullable=False),44                                 sa.Column('user_id', sa.Integer(),45                                           nullable=False),46                                 sa.Column('created_at',47                                           sa.DateTime(), nullable=True),48                                 sa.ForeignKeyConstraint(49                                     ['category_id'], ['categories.id'], ),50                                 sa.ForeignKeyConstraint(51                                     ['user_id'], ['users.id'], ),52                                 sa.PrimaryKeyConstraint('id')53                                 )54    cards_table = op.create_table('cards',55                                  sa.Column('id', sa.Integer(),56                                            nullable=False),57                                  sa.Column('term', sa.String(58                                      length=100), nullable=False),59                                  sa.Column('definition', sa.Text(),60                                            nullable=False),61                                  sa.Column('set_id', sa.Integer(),62                                            nullable=False),63                                  sa.ForeignKeyConstraint(64                                      ['set_id'], ['sets.id'], ),65                                  sa.PrimaryKeyConstraint('id')66                                  )67    favorites_table = op.create_table('favorites',68                                      sa.Column('id', sa.Integer(),69                                                nullable=False),70                                      sa.Column(71                                          'set_id', sa.Integer(), nullable=False),72                                      sa.Column(73                                          'user_id', sa.Integer(), nullable=False),74                                      sa.ForeignKeyConstraint(75                                          ['set_id'], ['sets.id'], ),76                                      sa.ForeignKeyConstraint(77                                          ['user_id'], ['users.id'], ),78                                      sa.PrimaryKeyConstraint('id')79                                      )80    votes_table = op.create_table('votes',81                                  sa.Column('id', sa.Integer(),82                                            nullable=False),83                                  sa.Column('set_id', sa.Integer(),84                                            nullable=False),85                                  sa.Column('user_id', sa.Integer(),86                                            nullable=False),87                                  sa.Column('is_upvote', sa.Boolean(),88                                            nullable=True),89                                  sa.ForeignKeyConstraint(90                                      ['set_id'], ['sets.id'], ),91                                  sa.ForeignKeyConstraint(92                                      ['user_id'], ['users.id'], ),93                                  sa.PrimaryKeyConstraint('id')94                                  )95    # Add seeder for users table96    op.bulk_insert(users_table, [97        {98            "nickname": 'Codelet App',99            "email": "codelet.app@gmail.com"100        },101        {102            "nickname": 'Demo User',103            "email": "demo@demo.com"104        },105        {106            "nickname": 'Brandon Tsui',107            "email": "brandon@brandon.com"108        },109        {110            "nickname": 'Lisa Kang',111            "email": "lisa@lisa.com"112        },113        {114            "nickname": 'Chris  Talley',115            "email": "chris@chris.com"116        },117        {118            "nickname": 'Lizzie Friedman',119            "email": "lizzie@lizzie.com.com"120        }121    ])122    # Add seeders for categories table123    op.bulk_insert(categories_table, [124        {'name': 'Data Structures'},  # 1125        {'name': 'Algorithms'},  # 2126        {'name': 'Javascript'},  # 3127        {'name': 'Python'},  # 4128        {'name': 'Databases'},  # 5129        {'name': 'Frontend'},  # 6130        {'name': 'Backend'},  # 7131        {'name': 'Other'},132    ])133    # Add seeders for sets table134    op.bulk_insert(sets_table, [135        {136            'title': 'Trees',  # 1 Chris137            'description': 'Study tree data structures!',138            'category_id': 1,139            'user_id': 1,140            'created_at': datetime.now()141        },142        {143            'title': 'Graphs',  # 2 Lizzie144            'description': 'Learn some graph data structures.',145            'category_id': 1,146            'user_id': 1,147            'created_at': datetime.now()148        },149        {150            'title': 'Linked Lists',  # 3 Lisa151            'description': 'Study linked lists data structures',152            'category_id': 1,153            'user_id': 1,154            'created_at': datetime.now()155        },156        {157            'title': 'Algorithm Concepts',  # 4 Chris158            'description': 'Study some algorithm concepts.',159            'category_id': 2,160            'user_id': 1,161            'created_at': datetime.now()162        },163        {164            'title': 'Sorting Algorithms',  # 5 Brandon â165            'description': 'Learn about different sorting mechanisms.',166            'category_id': 2,167            'user_id': 1,168            'created_at': datetime.now()169        },170        {171            'title': 'Javascript Datatypes',  # 6 Lizzie172            'description': 'Study various Javascript datatypes!',173            'category_id': 3,174            'user_id': 1,175            'created_at': datetime.now()176        },177        {178            'title': 'Javascript Syntax',  # 7 Brandon179            'description': 'Brush up on some Javascript syntax.',180            'category_id': 3,181            'user_id': 1,182            'created_at': datetime.now()183        },184        {185            'title': 'Python Datatypes',  # 8 Chris186            'description': 'Need a refresher on python datatypes? Start here!',187            'category_id': 4,188            'user_id': 1,189            'created_at': datetime.now()190        },191        {192            'title': 'Python Syntax',  # 9 Lisa193            'description': 'No semi-colons here! Learn some python syntax!',194            'category_id': 4,195            'user_id': 1,196            'created_at': datetime.now()197        },198        {199            'title': 'SQL',  # 10 Lisa200            'description': 'Review some SQL topics!',201            'category_id': 5,202            'user_id': 1,203            'created_at': datetime.now()204        },205        {206            'title': 'Sequelize',  # 11 Lizzie207            'description': 'Learn about Sequelize!',208            'category_id': 5,209            'user_id': 1,210            'created_at': datetime.now()211        },212        {213            'title': 'SQLAlchemy',  # 12 Lisa214            'description': 'Learn about SQLAlchemy!',215            'category_id': 5,216            'user_id': 1,217            'created_at': datetime.now()218        },219        {220            'title': 'React',  # 13 Lisa221            'description': 'A spicy new javascript framework',222            'category_id': '6',223            'user_id': 1,224            'created_at': datetime.now()225        },226        {227            'title': 'Vanilla JS',  # 14 Brandon228            'description': 'Good ole\' unadulterated javascript. ',229            'category_id': '6',230            'user_id': 1,231            'created_at': datetime.now()232        },233        {234            'title': 'HTML/CSS',  # 15 Lizzie235            'description': 'Learn about the backbones of the world wide web!',236            'category_id': '6',237            'user_id': 1,238            'created_at': datetime.now()239        },240        {241            'title': 'Flask',  # 16Brandon242            'description': 'Dive into Flask!',243            'category_id': '7',244            'user_id': 1,245            'created_at': datetime.now()246        },247        {248            'title': 'Node',  # 17 Chris249            'description': 'Learn about Node.js!',250            'category_id': '6',251            'user_id': 1,252            'created_at': datetime.now()253        },254        {255            'title': 'Redux',  # 18 lizzie256            'description': 'Learn all about the wonders of Redux and how it will rock your world',257            'category_id': '7',258            'user_id': 1,259            'created_at': datetime.now()260        },261        {262            'title': 'Web Storage',  # 19 lizzie263            'description': 'cookies for life',264            'category_id': '6',265            'user_id': 1,266            'created_at': datetime.now()267        },268        {269            'title': 'Promises',  # 20 lizzie270            'description': 'never make a promise you cant keep...',271            'category_id': '3',272            'user_id': 1,273            'created_at': datetime.now()274        },275        {276            'title': 'Unit Testing',  # 21 lizzie277            'description': 'mocha + chai = better than any python testing framework',278            'category_id': '3',279            'user_id': 1,280            'created_at': datetime.now()281        },282    ])283    op.bulk_insert(cards_table, [284        {285            'term': 'Graphs represent _____ relationships between objects',286            'definition': 'pairwise',287            'set_id': 2288        },289        {290            'term': 'a graph is a _____ more than a collection',291            'definition': 'model',292            'set_id': 2293        },294        {295            'term': 'the four basic graph types are',296            'definition': '''1. undirected and unweighted,297                2. undirected and weighted,298                3. directed and unweighted,299                directed and weighted300                ''',301            'set_id': 2302        },303        {304            'term': 'What is adjacency',305            'definition': 'the basic connectedness property of vertices',306            'set_id': 2307        },308        {309            'term': 'WHat kind of graphs have a symmetric matrix',310            'definition': 'Undirected graphs',311            'set_id': 2312        },313        {314            'term': 'When is an index null in a directed list',315            'definition': 'When the index does not point to anything',316            'set_id': 2317        },318        {319            'term': 'Self Loop',320            'definition': 'An edge that links a vertex to itself',321            'set_id': 2322        },323        {324            'term': 'Simple Graph',325            'definition': 'A graph with no self loops',326            'set_id': 2327        },328        {329            'term': 'Directed Graphs',330            'definition': 'Paths must follow the directions of the edges',331            'set_id': 2332        },333        {334            'term': 'Simple Path',335            'definition': 'A path that does not cross the same edge twice',336            'set_id': 2337        },338        {339            'term': 'What is a cycle in a graph',340            'definition': 'It is a simple path that starts and ends at the same vertex',341            'set_id': 2342        },343        {344            'term': 'Acyclic Graph',345            'definition': 'A graph with no cycles',346            'set_id': 2347        },348        {349            'term': 'What is a variable',350            'definition': 'Container for a piece of data',351            'set_id': 6352        },353        {354            'term': 'Are variables case sensitive',355            'definition': 'Yes',356            'set_id': 6357        },358        {359            'term': 'What will an undeclared variable return',360            'definition': 'Undefined',361            'set_id': 6,362        },363        {364            'term': 'Two types of variable scope',365            'definition': 'Local and global',366            'set_id': 6,367        },368        {369            'term': 'Properties of local scope',370            'definition': 'Within a function, only available within a function',371            'set_id': 6,372        },373        {374            'term': 'Properties of Global Scope',375            'definition': 'Outside a function, available to any code outside or within that function',376            'set_id': 6,377        },378        {379            'term': 'What is variable hoisting',380            'definition': 'Variables are hoisted to the top of the function/statement',381            'set_id': 6382        },383        {384            'term': 'Prototype Based',385            'definition': 'Each object has a prototype that inherits properties and abilities from',386            'set_id': 6387        },388        {389            'term': 'Dynamic Typing',390            'definition': 'Dynamic if the type of variable is interpreted at runtime',391            'set_id': 6392        },393        {394            'term': 'First Class Function',395            'definition': 'Treats functions as first class citizens and can do things with functions everything you can do with other elements',396            'set_id': 6397        },398        {399            'term': 'Multi Paradigm Language',400            'definition': 'Supports more than one programming paradigm - devs can work with a variety of styles within js',401            'set_id': 6402        },403        {404            'term': 'DOM',405            'definition': 'Document Object Model',406            'set_id': 6407        },408        {409            'term': 'Two ways to add js to your site',410            'definition': 'Internally and externally',411            'set_id': 6412        },413        {414            'term': 'Is JS case sensitive?',415            'definition': 'yes',416            'set_id': 6,417        },418        {419            'term': 'Define a boolean',420            'definition': 'true or false',421            'set_id': 6,422        },423        {424            'term': 'Define array',425            'definition': 'Used to store multiple values in a single value',426            'set_id': 6,427        },428        {429            'term': 'Down Method',430            'definition': 'Undo what was done by the up method',431            'set_id': 11,432        },433        {434            'term': 'Limit Query',435            'definition': 'Limit the number of returned results',436            'set_id': 11437        },438        {439            'term': 'Order to query results',440            'definition': 'Order',441            'set_id': 11442        },443        {444            'term': 'Validation',445            'definition': 'Security layer that validates information before you put it in your database',446            'set_id': 11,447        },448        {449            'term': 'Not empty validation',450            'definition': 'Makes sure it isnt empty',451            'set_id': 11,452        },453        {454            'term': 'Atomic Unit',455            'definition': 'Indivisible unit',456            'set_id': 11,457        },458        {459            'term': 'What is the sequelize command used to create a database?',460            'definition': 'db:create',461            'set_id': 11462        },463        {464            'term': 'What is an associate function?',465            'definition': 'Where you define the association between two models',466            'set_id': 11467        },468        {469            'term': 'What is cascade delete?',470            'definition': 'A handy shortcut for deleting the associate records of a row your deleting',471            'set_id': 11472        },473        {474            'term': 'What does HTML stand for',475            'definition': 'hyper text markup language',476            'set_id': 15477        },478        {479            'term': '<br>',480            'definition': 'Defines a line break',481            'set_id':  15482        },483        {484            'term': 'Diff between padding and margin',485            'definition': 'Padding is on the inside and margin is on the outside',486            'set_id': 15487        },488        {489            'term': 'Absolute file path',490            'definition': 'The full url to the internet file',491            'set_id': 15492        },493        {494            'term': 'Relative File Path',495            'definition': 'Points to a file in the images folder located at the root of the current web',496            'set_id': 15497        },498        {499            'term': 'What is 10vw',500            'definition': '10% of the view port with',501            'set_id': 15502        },503        {504            'term': 'Server-sent events',505            'definition': 'Allow a web page to get updates from a server',506            'set_id': 15507        },508        {509            'term': 'What are CSS (cascading style sheets)?',510            'definition': 'It is a language for defining style for web documents',511            'set_id': 15512        },513        {514            'term': 'What is the correct HTML element for the largest heading?',515            'definition': 'An h1',516            'set_id': 15517        },518        {519            'term': 'What tag do you use to make a bulleted list?',520            'definition': 'A ul tag',521            'set_id': 15522        },523        {524            'term': 'What is the correct HTML for making a text input field?',525            'definition': '<input type = "text">',526            'set_id': 15527        },528        {529            'term': 'SQL expression language',530            'definition': 'Allows SQL statements to be written using python expressions',531            'set_id': 12532        },533        {534            'term': 'Schema/Types',535            'definition': 'Uses python objects to represent tables, columns and datatypes',536            'set_id': 12537        },538        {539            'term': 'Psychopg2',540            'definition': 'Adaptor for PostGres DB',541            'set_id': 12542        },543        {544            'term': 'What is table.columns.keys',545            'definition': 'Is similar to an associative array of all the columns of a table',546            'set_id': 12547        },548        {549            'term': 'What does a string become when you run a table in the db?',550            'definition': 'A varchar',551            'set_id': 12552        },553        {554            'term': 'How do you apply a data constrain to a table?',555            'definition': 'Using the CHECK SQL command',556            'set_id': 12557        },558        {559            'term': 'What to things SQL Alchemy is composed of?',560            'definition': '1. The engine, 2. The inspect function',561            'set_id': 12562        },563        {564            'term': 'What does importing the engine do?',565            'definition': 'Creates an engine based on the connection string',566            'set_id': 12567        },568        {569            'term': 'What are some dialects of SQLalchemy?',570            'definition': 'sqlite, mysql, postgresql, oracle, mssql',571            'set_id': 12572        },573        {574            'term': 'Are primary keys auto-incrementing?',575            'definition': 'yes',576            'set_id': 12577        },578        {579            'term': 'What is the template for connecting to the database?',580            'definition': 'dialect+driver://username:password@host:port/database',581            'set_id': 12582        },583        {584            'term': 'Name two objects that are available in browser runtimes but not in NodeJS.',585            'definition': 'Common answers include `window`, `document`, and `location`.',586            'set_id': 17587        },588        {589            'term': 'What name can be used in browser runtimes to reference the "global object"?',590            'definition': '`window`',591            'set_id': 17592        },593        {594            'term': 'Why might one choose to use async fs opposed to synchronous fs?',595            'definition': '''596                            Operations on our file system can take some time597                            because data from our hard drive must be read or598                            written. Performing these operations asynchronously599                            prevents the single thread of our JavaScript program600                            from being blocked during these operations.601                            ''',602            'set_id': 17603        },604        {605            'term': 'What is the name of the node module that allows us to perform operations on our local file system?',606            'definition': '`fs`',607            'set_id': 17608        },609        {610            'term': 'What is require used for?',611            'definition': '''612                1) Allows the built in Node modules to be used in a JS file.(http, FS)613                2) Load 3rd party Libraries created by others (Express, Sequalize).614                3) Other files we've made can be "required" into our current file.''',615            'set_id': 17616        },617        {618            'term': 'How do you require the built in FS module?',619            'definition': '''620                In a node.js file, require FS with: "const fs = require("fs")""621                Simple Example:622                "const fs = require("fs");623                fs.appendFile('mynewfile1.txt', 'Hello content!', function (err) {624                    if (err) throw err;625                    console.log('Saved!');626                });"''',627            'set_id': 17628        },629        {630            'term': 'What is the name of the node module that allows us to take user input?',631            'definition': '`readline`',632            'set_id': 17633        },634        {635            'term': 'What site should be used as a documentation reference for JavaScript in browser runtimes?',636            'definition': '''MDN, Mozilla Developer Network637                            (https://developer.mozilla.org/en-US/docs/Web/JavaScript)''',638            'set_id': 17639        },640        {641            'term': 'What site should be used as a documentation reference for JavaScript in Node runtimes?',642            'definition': 'NodeJS.org (https://nodejs.org/api/)',643            'set_id': 17644        },645        {646            'term': 'Define `callback`',647            'definition': '''A function passed to another function648                            which we assume will be invoked at some point.''',649            'set_id': 17650        },651        {652            'term': 'Define `algorithms`',653            'definition': '''A process or set of rules to be followed in calculations or other problem-solving operations.''',654            'set_id': 4655        },656        {657            'term': 'How does space and time complexity relate to algorithms?',658            'definition': '''Both are essential when choosing or designing an algorithm.659                        Space complexity deals with the memory space required for the algorithm. Time complexity deals660                        with the amount of time it takes for the full algorithm to complete. Space and time complexity661                        should be considered for all data sizes and especially larger data sets. ''',662            'set_id': 4663        },664        {665            'term': 'What is the process of memoization?',666            'definition': '''667                        A technique to optimize the time complexity668                        of an algorithm by storing the results of expensive function669                        calls and returning the cached result when the same inputs670                        occur again.671        ''',672            'set_id': 4673        },674        {675            'term': 'What is the process of tabulation?',676            'definition': '''677                       A technique to optimize time  complexity of678                       an algorithm by filling out a table with elements.679        ''',680            'set_id': 4681        },682        {683            'term': 'What are the 7 most common complexity classes?',684            'definition': '''O(1) - constant685                        O(log(n)) - logarithmic686                        O(n) - linear687                        O(n * log(n)) - loglinear, linearithmic, quasilinear688                        O(n^c) - O(n^2)... - polynomial689                        O(c^n) - O(2^n)... - exponential690                        O(n!) - factorial''',691            'set_id': 4692        },693        {694            'term': 'How does bubble sort work?',695            'definition': '''696                        It manipulates the data structure by697                        swapping the position of two elements.698                        Time Complexity: O(n^2) - polynomial699                        Space Complexity: O(1) - constant700                        Bubblle sort is very inefficient, and701                        does not have many practical uses.702                        ''',703            'set_id': 4704        },705        {706            'term': 'How does selection sort work?',707            'definition': '''708                        It requires us to locate the709                        smallest value in the array.710                        Time Complexity: O(n^2) - polynomial711                        Space Complexity: O(1)712                        Due to its time complexity, selection713                        sort is not a very practical algorithm.714        ''',715            'set_id': 4716        },717        {718            'term': 'How does insertion sort work?',719            'definition': '''720                        It is a simple sorting algorithm721                        that is similar to how we sort playing cards in our hands.722                        Time Complexity: O(n^2) - polynomial723                        Space Complexity: O(1)724                        Insertion sort works well with streaming data,725                        because it can sort data as it comes in.726        ''',727            'set_id': 4728        },729        {730            'term': 'How does merge sort work?',731            'definition': '''732                        It is a classic example of a "Divide and Conquer"733                        algorithm. In other words, we keep breaking the array into734                        smaller and smaller sub arrays.735                        Time complexity: O(n log(n)) - logarithm736                        Space Complexity: O(n) - linear737                        Merge sort is one of the fastest algorithms we can use738                        on an unknown dataset. However, the space being linear739                        can cause issues with larger datasets.740        ''',741            'set_id': 4742        },743        {744            'term': 'Insertion Sort',745            'definition': 'Sorts a list by placing each element in the position it should be in and gradually adding more elements one by one., A sort in which each item in a set is inserted into its proper position in the sorted set according to a specified criterion.',746            'set_id': 5747        },748        {749            'term': 'Selection Sort',750            'definition': '''751                        Sorts a list by searching for the 1st element, then the 2nd, and so on until all the elements are in place., A sort in which the items in a set are examined to find an item that fits specified criteria. This item is appended to the sorted set and removed from further consideration, and the process is repeated until all items are in the sorted set.''',752            'set_id': 5753        },754        {755            'term': 'Bubble Sort',756            'definition': '''757                            A sort in which the first two items to be sorted are examined and exchanged if necessary to place them in the specified order; the second item is then compared with the third (exchanging them if required), the third is compared with the fourth, and the process is repeated until all pairs have been examined and all items are in the proper sequence.''',758            'set_id': 5759        },760        {761            'term': 'Quicksort',762            'definition': 'A sort in which a list is first partitioned into lower and upper sublists for which all keys are, respectively, less than some pivot key or greater than the pivot key. See also the definitions for "bubble sort", "selection sort" and "insertion sort".',763            'set_id': 5764        },765        {766            'term': 'Mergesort',767            'definition': '''768                            Splits the list into sub-lists and then reconstructs the original list.''',769            'set_id': 5770        },771        {772            'term': 'Heap Sort',773            'definition': '''774                            This algorithm is based on the heap data structure, and is a more efficient version of selection sort. It determines the largest element. Then, it places that element at the end (or beginning) of the list, and then repeats the process with the rest of the list Recall that in a heap, the top element of the heap is always "next" in order (either the next highest or next lowest, in the case of numbers). If you were to take all of your input values and store them in a heap, and remove one element at a time, the elements will be removed in sorted order. Depending on the data list being sorted, this could have performance consequences. Heap sort is considered an "instable" sort because it doesn't preserve the original order of equal elements.''',775            'set_id': 5776        },777        {778            'term': 'Stable Sort',779            'definition': '''780                            Any sort method that does not change the order of equal-rank elements.781                            ''',782            'set_id': 5783        },784        {785            'term': 'Comparison sort',786            'definition': 'A sort that ranks items by comparing them to each other. As opposed to a sort that uses some other method, like the radix sort that analyzes the bits of each number.',787            'set_id': 5788        },789        {790            'term': 'Insertion sort time complexity',791            'definition': 'O(n^2) worst case, O(n) best case',792            'set_id': 5793        },794        {795            'term': 'Heap sort time complexity',796            'definition': 'O(n log n) in all cases',797            'set_id': 5798        },799        {800            'term': 'Quicksort time complexity',801            'definition': 'O(n^2) in the very unlikely worst case, O(n log n) in other cases',802            'set_id': 5803        },804        {805            'term': 'Selection sort time complexity',806            'definition': 'O(n ^ 2) in all cases',807            'set_id': 5808        },809        {810            'term': 'Bubble sort time complexity',811            'definition': 'O(n^2) worst case, O(n) best case',812            'set_id': 5813        },814        {815            'term': 'Merge sort time complexity',816            'definition': 'O(n log n) in all cases',817            'set_id': 5818        },819        {820            'term': 'True',821            'definition': 'A constant representing the true value of the boolean type.',822            'set_id': 8823        },824        {825            'term': 'False',826            'definition': 'A constant representing the false value of the boolean type.',827            'set_id': 8828        },829        {830            'term': 'None',831            'definition': 'A constant frequently used to represent the absence of a value, as when default arguments are not passed to a function.',832            'set_id': 8833        },834        {835            'term': 'strings',836            'definition': 'A string literal, or string, holds any combination of letters and numbers you would like it to hold. Any number it holds, however, is not treated like a numerical value but is preserved as if it were a word.',837            'set_id': 8838        },839        {840            'term': 'integers',841            'definition': 'An integer in Python, also known as a \'numeric literal\', is simply a name used for a numeric value. For this reason, these values are commonly called integers even if they are assigned the value of a real number in the form of an integer and a decimal value.',842            'set_id': 8843        },844        {845            'term': 'floating point number',846            'definition': '''A real number (that is, a number that can contain a fractional part).847                To convert a number into floating point:848                >> a = 1849                >> b = float(a)850                1.0''',851            'set_id': 8852        },853        {854            'term': 'lists',855            'definition': '''A list is a series of values. In Python, these values are assigned by placing them within square braces and separating them by commas like this:856                            < name of list > = [ < value > , < value > , < value > ]857                            girls=['sugar', 'spice', 'everything nice']858                            To access a part of a list, one uses the same kind of phrase as one used for a string literal:859                            < name of list > [< index number > ]860                            ''',861            'set_id': 8862        },863        {864            'term': 'tuple',865            'definition': '''It can be thought of as read-only lists. One can index, slice and concatenate, but one cannot append or alter the values of the tuple after it has been initialized.866                                directions=('north', 'south', 'east', 'west')867                            ''',868            'set_id': 8869        },870        {871            'term': 'dictionary',872            'definition': '''873                     Python term for an associative array. An array is, like a list, a series of values in two dimensions. An associative array gives one a way of accessing the values by a key, a term associated with the value instead of an item's index number.874                        These are similar to hashes in Ruby.875                        my_dictionary={"author": "Andrew Melville",876                        "title": "Moby Dick",877                        "year": "1851",878                        "copies": 5000000879                        }880                        One accesses a dictionary member by its key:881                        >> > a=my_dictionary["author"]882                        >> > print a883                        Andrew Melville884                        ''',885            'set_id': 8886        },887        {888            'term': 'complex number',889            'definition': '''890        They have a real and imaginary part, which are each a floating point number.891        >> a=1892        >> b=complex(a)893        (1+0j)''',894            'set_id': 8895        },896        {897            'term': 'long number',898            'definition': '''899        They have unlimited precision.900        >> a=1901        >> b=long(a)902        1L903        Long numbers also take up a lot of processing power.''',904            'set_id': 8905        },906        {907            'term': 'What is the difference between an element and an attribute?',908            'definition': '''An element in HTML represents some kind of structure or semantics and909        generally consists of a start tag, content, and an end tag.910        An attribute defines a property for an element, consists of an attribute/value pair, and appears within the element's start tag. An element's start tag may contain any number of space separated attribute/value pairs.''',911            'set_id': 14912        },913        {914            'term': 'What are at least two different ways to select a div with the ID of"container"in vanilla JavaScript?',915            'definition': 'Documentâ.getâElementâById() Documentâ.queryâSelector()',916            'set_id': 14917        },918        {919            'term': 'What is the difference between an ID and a class?',920            'definition': '''In the CSS, a class selector is a name preceded by a full stop(".") and an ID selector is a name preceded by a hash character("#").921         ID can be used to identify one element, whereas a class can be used to identify more than one.''',922            'set_id': 14923        },924        {925            'term': 'Describe specificity in CSS and give examples.',926            'definition': '''is the means by which browsers decide which CSS property values are the most relevant to an element.927                If there are two or more conflicting CSS rules that point to the same element, the browser follows some rules to determine which one is most specific and therefore wins out.928                Inline styles - An inline style is attached directly to the element to be styled. Example: < h1 style="color: #ffffff;" > .929                # navbar.930                IDs - An ID is a unique identifier for the page elements, such as931                Classes, attributes and pseudo-classes - This category includes .classes, [attributes] and pseudo-classes such as:hover, :focus etc.932                Elements and pseudo-elements - This category includes element names and pseudo-elements, such as h1, div, :before and :after.''',933            'set_id': 14934        },935        {936            'term': 'What is event delegation and when would you use it?',937            'definition': '''strategy we can use to optimize the web apps when responding to user events.938                add the event listener to the parent, when the evet target is clicked, which will trigger the parent event listener, and find the event which is triggered.939                event.target identifies the HTML elements on which the event occurred. and we also know what element we want to listen for.940                event bubbling/propagation: it means when the user makes a click it ripples up all the way up to the top of the DOM and triggers clicks events on all the parent elements of the event you clicked.941                **Because of event bubbling you can place an event listener on a single parent HTML element that lives above a HTML child, and that event listener will get executed whenever an event occurs on any of its child nodes â even if these node children are added to the page after the initial load!942                Whenever a user makes a click it ripples up all the way up to the top of the DOM and triggers clicks events on all the parent elements of the element you clicked.943                Why:944                    Without event delegation you would have to rebind the click event listener to each new input loaded to the page. Coding this is complicated and burdensome.''',945            'set_id': 14946        },947        {948            'term': 'What does e.preventDefault()do?What is event bubbling?',949            'definition': '''The method cancels the event if it is cancelable, meaning that the default action that belongs to the event will not occur.950                - Clicking on a "Submit" button, prevent it from submitting a form951                - Clicking on a link, prevent the link from following the URL952                event bubbling/propagation: it means when the user makes a click it ripples up all the way up to the top of the DOM and triggers clicks events on all the parent elements of the event you clicked.953                **Because of event bubbling you can place an event listener on a single parent HTML element that lives above a HTML child, and that event listener will get executed whenever an event occurs on any of its child nodes â even if these node children are added to the page after the initial load!''',954            'set_id': 14955        },956        {957            'term': 'AJAX',958            'definition': 'A technique for creating seamless interactive websites via asynchronous data exchange between client and server. Ajax facilitates communication with the server via partial page updates instead of the traditional full-page refresh.',959            'set_id': 14960        },961        {962            'term': 'AMD',963            'definition': '''964            A standard defining how to load JavaScript libraries or modules asynchronously965            and stands for Asynchronous Module Definition. It is an alternative to CommonJS(CJS) specification.966            The API specifies a mechanism for defining modules such that the module and its dependencies can be asynchronously loaded. This is particularly well suited for the browser environment where synchronous loading of modules incurs performance, usability, debugging, and cross-domain access problems.''',967            'set_id': 14968        },969        {970            'term': 'What is the DOM?',971            'definition': '''972                DOM(for Document Object Model) is a platform - and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. This is an overview of DOM-related materials here at W3C and around the web.''',973            'set_id': 14974        },975        {976            'term': 'Flask is a',977            'definition': 'micro framework for Python web development',978            'set_id': 16979        },980        {981            'term': 'Flask is a micro framework because',982            'definition': 'it implements only core functionality (including routing) but leaves more advanced functionality (including authentication and database ORMs) to extensions',983            'set_id': 16984        },985        {986            'term': 'app = Flask(__name__)',987            'definition': '''988            creates an instance of the Flask object using our module's name as a parameter''',989            'set_id': 16990        },991        {992            'term': '@app.route("/")',993            'definition': '''994                            means that the function directly below it should be called whenever a user visits the main root page of our web application995                        ''',996            'set_id': 16997        },998        {999            'term': 'How do you collect data from a URL parameter using Flask?',1000            'definition': '''You can specify the variable in the app.route and then use that variable as a paramater in the routing function. Here is an example of the pretzel:1001                            ```py1002                            @ app.route('/foods/<food>')1003                            def grocery(food):1004                            x=food1005                            ```''',1006            'set_id': 161007        },1008        {1009            'term': 'How do you collect data from the query string using Flask?',1010            'definition': '''1011                            With a query string the data can be found in the request.args dictionary:1012                            ```py1013                            @ app.route('/foods')1014                            def grocery():1015                            x=request.args.get('type')1016                            ```''',1017            'set_id': 161018        },1019        {1020            'term': 'How do you collect data from the body of the request using Flask?',1021            'definition': '''You can get the data form a post request in the body using the request.form dictionary1022                        ```py1023                        @ app.route('/foods')1024                        def grocery():1025                        x=request.form.get('type')1026                        ```''',1027            'set_id': 161028        },1029        {1030            'term': 'What is the session object in Flask?',1031            'definition': 'It is built off of using cookies. It allows the server to set many different things in the in the session for the client to remember wihout having to create many different cookies and just have one session. It is also encoded so that someone can\'t change session data on the client before sending it to the server.',1032            'set_id': 161033        },1034        {1035            'term': 'What exactly does Flask\'s \`jsonify()\` do?',1036            'definition': 'It will take JSON serializeable data in python and convert it to a JSON string.',1037            'set_id': 161038        },1039        {1040            'term': 'What is the difference between authorization and authentication?',1041            'definition': 'Authentication refers to the process of verifying who you are whereas authorization is the process of verifying that you have access to something. For example, you can authenticate someones login and then make sure they have access to their profile by authorization.',1042            'set_id': 161043        },1044        {1045            'term': 'What is a tree?',1046            'definition': '''1047                        A graph that does not contain any cycles.1048                        A cycle is is defined as a path through edges that1049                        begins and ends at the same node. A tree will always1050                        have a root node1051        ''',1052            'set_id': 11053        },1054        {1055            'term': 'What is a binary tree?',1056            'definition': '''1057                        A tree where each node has at most1058                        two children.1059        ''',1060            'set_id': 11061        },1062        {1063            'term': 'What is a leaf node?',1064            'definition': 'A node that doesn\'t have children.',1065            'set_id': 11066        },1067        {1068            'term': 'What is a root node?',1069            'definition': '''1070                        The ultimate parent, the single node of a tree that1071                         can access every other node through edges; by definition1072                          the root will not have a parent.1073        ''',1074            'set_id': 11075        },1076        {1077            'term': 'What is an internal node?',1078            'definition': 'A node that has children.',1079            'set_id': 11080        },1081        {1082            'term': 'How does a breadth-first search traverse a tree?',1083            'definition': '''1084                        Trees are traversed level-by-level, where you visit1085                        every node on a level before going to a lower level. This1086                        search is referred to as breadth-first search (BFS),1087                        as the search tree is broadened as much as possible1088                        on each depth before going to the next depth.1089        ''',1090            'set_id': 11091        },1092        {1093            'term': 'How does a depth-first search traverse a tree?',1094            'definition': '''1095                        Trees are traversed as deep as possible on each child1096                        before going to the next sibling, thus the name `DFS`.1097        ''',1098            'set_id': 11099        },1100        {1101            'term': 'At most, how many children can each node have in a ternary tree? N-ary tree?',1102            'definition': 'They have at most 3 children. N-ary trees have at most n children.',1103            'set_id': 11104        },1105        {1106            'term': 'How do binary search trees differ from binary trees?',1107            'definition': '''1108                        It is a search tree with the additional added criteria:1109                        - Given any node of the BST, the values in the left subtree must all be1110                        strictly less than the given node's value.1111                        - Given the same node of the BST, the values in the right subtree must all1112                        be greater than or equal to the given node's value.1113        ''',1114            'set_id': 11115        },1116        {1117            'term': 'Explain what makes a binary tree full, complete, or perfect.',1118            'definition': '''1119                        Full Binary Tree - each node has exactly 0 or 2 children.1120                        Complete Binary Tree - all levels except the last one are full with nodes.1121                        Perfect Binary Tree - all levels (including the last one) are full of nodes.1122                        ''',1123            'set_id': 11124        },1125        {1126            'term': 'What are the different ways to write a string literal in JS?',1127            'definition': '`string`, "string", \'string\'',1128            'set_id': 71129        },1130        {1131            'term': 'What are the diffent ways to write a variable in JS?',1132            'definition': '''1133                        const variable =...;1134                        let variable =...;1135                        var variable =...;1136                        ''',1137            'set_id': 71138        },1139        {1140            'term': 'What are the different ways to write a function in JS?',1141            'definition': '''1142                        function foo(params) {return}1143                        const foo = function(params) {return}1144                        const foo = (params) => return1145        ''',1146            'set_id': 71147        },1148        {1149            'term': 'How would you invoke the function foo in JS?',1150            'definition': 'foo(args);',1151            'set_id': 71152        },1153        {1154            'term': 'How do you write an object literal in JS?',1155            'definition': '''const obj = {1156                            "property1":value1,1157                            "property2":value2,1158                            "key": value31159                            };1160                    ''',1161            'set_id': 71162        },1163        {1164            'term': 'How do you write an array literal in JS?',1165            'definition': 'const arr = [v1, v2, ..., vn]; ',1166            'set_id': 71167        },1168        {1169            'term': 'What are the different error types in JS?',1170            'definition': '''1171                        EvalError1172                        InternalError1173                        RangeError1174                        ReferenceError1175                        SyntaxError1176                        TypeError1177                        URIError1178        ''',1179            'set_id': 71180        },1181        {1182            'term': 'How would you select a DOM element with an id of "bar" in JS?',1183            'definition': 'const barEle = document.getElementById("bar");',1184            'set_id': 71185        },1186        {1187            'term': 'How can you insert values into an array from an array without directly inserting each value?',1188            'definition': '''1189                        const arr1 = [3, 4, 5];1190                        const arr2 = [1, 2, ...vals];1191                        console.log(arr2) // => [1, 2, 3, 4, 5]1192                        ''',1193            'set_id': 71194        },1195        {1196            'term': 'What values are considered falsey in JS?',1197            'definition': '0, 0n, null, undefined, false, NaN, ""',1198            'set_id': 71199        },1200        {1201            'term': 'Singly Linked List Node',1202            'definition': '''Represents a single item in a linked list. Contains a value and a1203                    reference to the next node.''',1204            'set_id': 31205        },1206        {1207            'term': 'Head',1208            'definition': '''Part of a linked list that points to the first node1209                if that list isn't empty.''',1210            'set_id': 31211        },1212        {1213            'term': 'Empty List',1214            'definition': '''Will have no nodes so can be checked by checking1215                    the node count. Note that Head and Tail should also be null as1216                    there are no nodes to point to.''',1217            'set_id': 31218        },1219        {1220            'term': 'Cheap Linked List Operations',1221            'definition': '''It is common to AddToHead, AddToTail, RemoveFromHead1222                    (all O(1)) and Enumerate (which can be used to Find) which is O(n).1223                    Note that RemoveFromTail is O(1) if used on a doubly linked list.''',1224            'set_id': 31225        },1226        {1227            'term': 'Expensive Linked List Operations',1228            'definition': '''It is often possible to perform more expensive operations O(n)1229                    on a linked list such as RemoveItem(value), RemoveFromTail and1230                    Contains(value). Note that RemoveFromTail is O(1) if used on a1231                    doubly linked list.''',1232            'set_id': 31233        },1234        {1235            'term': 'List.AddToHead algorithm',1236            'definition': '''With the new node, assigns 'Next' to point to the current1237                    head of the list if it exists, otherwise set it to null. Assign1238                    the list head to reference the new node. If the list is empty,1239                    assign the tail to new node. Increment the node count. O(1)''',1240            'set_id': 31241        },1242        {1243            'term': 'List.RemoveFromHead algorithm',1244            'definition': '''If the list isn't empty, assign the head pointer to its1245                    node->next pointer (so it points to the next node or null).1246                    Decrement the count, if it is 0 set the tail to null. O(1)''',1247            'set_id': 31248        },1249        {1250            'term': 'List.Enumerate algorithm',1251            'definition': '''Create a temporary 'Current' node reference, set it to the1252                    head of the list; while ( Current != null) { Current = Current->Next; }.1253                    This walks over every node that exists in the list.''',1254            'set_id': 31255        },1256        {1257            'term': 'List.RemoveItem(value)',1258            'definition': '''Enumerate the list, keeping a reference to the previous node;1259                    if the value of the current node matches the value we'd like1260                    to remove then update the previous node->next to current->next.''',1261            'set_id': 31262        },1263        {1264            'term': 'Orphan Node',1265            'definition': '''Used to describe a node that has been removed from a collection1266                    and so has no references.''',1267            'set_id': 31268        },1269        {1270            'term': 'When to use a linked list',1271            'definition': '''They are useful for stacks and queues due to their ability1272                    to resize cheaply (depending on whether memory has to be allocated...1273                    recycling nodes would be more efficient). Lists are also quite malleable,1274                    allowing the easy insertion of items without having to shift existing data,1275                    this could be handy for things like merge or quick sort. "Dynamic".''',1276            'set_id': 31277        },1278        {1279            'term': 'When not to use a linked list',1280            'definition': '''If an algorithm requires lots of lookups then an array (indexes)1281                    or dictionary (keys) are likely to be much more efficient. If you1282                    don't want the collection to grow or to allocate further memory1283                    (e.g. per-node), then it might be worth considering an array or1284                    something else with a fixed size, especially if data doesn't need1285                    to be sorted, added or removed.''',1286            'set_id': 31287        },1288        {1289            'term': 'What signifies the end of a linked list?',1290            'definition': 'null',1291            'set_id': 31292        },1293        {1294            'term': 'Whitespace',1295            'definition': '''Used to structure code. This also means right space, and if1296                    this is off, an indentation error will be displayed.''',1297            'set_id': 91298        },1299        {1300            'term': 'Single-line Comments',1301            'definition': 'Use # to comment.',1302            'set_id': 91303        },1304        {1305            'term': 'Multi-line Comments',1306            'definition': 'Use triple quotation marks """',1307            'set_id': 91308        },1309        {1310            'term': 'Exponentiation',1311            'definition': 'Use **. (2**3 = 8)',1312            'set_id': 91313        },1314        {1315            'term': 'Len()',1316            'definition': '''A type of string method used to measure the length or number1317                    of characters in a string.''',1318            'set_id': 91319        },1320        {1321            'term': 'Lower()',1322            'definition': 'Gets rid of all the capitalization in a string.',1323            'set_id': 91324        },1325        {1326            'term': 'Upper()',1327            'definition': 'Makes a string completely uppercase.',1328            'set_id': 91329        },1330        {1331            'term': 'str()',1332            'definition': 'Turns non-string into strings.',1333            'set_id': 91334        },1335        {1336            'term': 'Print',1337            'definition': 'Command that displays code onto the console.',1338            'set_id': 91339        },1340        {1341            'term': '=',1342            'definition': 'Used to define variables',1343            'set_id': 91344        },1345        {1346            'term': 'fruit[:3]',1347            'definition': '''Starts at beginning of string "fruit", gives the first three1348                    characters, up to but not including the index of 3.''',1349            'set_id': 91350        },1351        {1352            'term': 'max()',1353            'definition': 'This returns the greatest element in a list.',1354            'set_id': 91355        },1356        {1357            'term': 'min()',1358            'definition': 'This returns the smallest element in a list.',1359            'set_id': 91360        },1361        {1362            'term': 'append()',1363            'definition': 'This adds a new value to the end of a list.',1364            'set_id': 91365        },1366        {1367            'term': 'Sum',1368            'definition': 'Returns the sum of the numeric values in a given column',1369            'set_id': 101370        },1371        {1372            'term': 'Max',1373            'definition': 'Returns the largest value in a given column',1374            'set_id': 101375        },1376        {1377            'term': 'Min',1378            'definition': 'Returns the smallest value in a given column.',1379            'set_id': 101380        },1381        {1382            'term': 'Avg',1383            'definition': 'Returns the average value of a given column',1384            'set_id': 101385        },1386        {1387            'term': 'Count',1388            'definition': 'Returns the total number of values in a given column',1389            'set_id': 101390        },1391        {1392            'term': 'Count (*)',1393            'definition': 'Returns the number of rows in a table',1394            'set_id': 101395        },1396        {1397            'term': 'Column',1398            'definition': '''Database tables are made of different columns (fields)1399                    corresponding to the attributes of the object described by1400                    the table.''',1401            'set_id': 101402        },1403        {1404            'term': 'CREATE TABLE',1405            'definition': 'Used to create a new table',1406            'set_id': 101407        },1408        {1409            'term': 'Insert',1410            'definition': 'Command used to add a new record to a table within a database',1411            'set_id': 101412        },1413        {1414            'term': 'ORDER BY',1415            'definition': '''Clause used to sort the data in ascending or descending order,1416                    based on one or more columns''',1417            'set_id': 101418        },1419        {1420            'term': 'PRIMARY KEY',1421            'definition': '''Constraint that uniquely identifies each record in a database1422                    table; must contain unique values; should be included in most1423                    tables''',1424            'set_id': 101425        },1426        {1427            'term': 'Query',1428            'definition': '''The main way to make a request for information from a database;1429                    consist of questions presented to the database in a predefined format.''',1430            'set_id': 101431        },1432        {1433            'term': 'How does React connect with Browser DOM elements?',1434            'definition': '''It uses objects called "React elements" to represent the HTML1435                    elements of the DOM. Developers can also create custom elements called1436                    "Components" to represent the larger parts of the UI.''',1437            'set_id': 131438        },1439        {1440            'term': 'JSX',1441            'definition': '''This is an HTML-like syntax extension for JavaScript written1442                    to be used with React. This is specifically how React adds XML1443                    syntax to JavaScript which is compiled to JavaScript at runtime.''',1444            'set_id': 131445        },1446        {1447            'term': 'JSX element',1448            'definition': '''A basic unit of JSX found in a JavaScript file which is treated1449                    as, and has the functionality of, a JavaScript expression.1450                    It can also have attributes, just like HTML elements.''',1451            'set_id': 131452        },1453        {1454            'term': 'A component changes its state by calling the function',1455            'definition': 'this.setState( { someKey: newValue} )',1456            'set_id': 131457        },1458        {1459            'term': 'The compiler transforms every JSX element into this method',1460            'definition': 'React.createElement()',1461            'set_id': 131462        },1463        {1464            'term': 'Components',1465            'definition': 'React applications are made out of these.',1466            'set_id': 131467        },1468        {1469            'term': 'Two ways for a component to get dynamic information:',1470            'definition': 'props and state',1471            'set_id': 131472        },1473        {1474            'term': 'How do you pass a prop?',1475            'definition': 'By giving an attribute to a component instance',1476            'set_id': 131477        },1478        {1479            'term': 'State',1480            'definition': 'Data in our application that can change',1481            'set_id': 131482        },1483        {1484            'term': 'Props',1485            'definition': 'Information that gets passed from one component to another',1486            'set_id': 131487        },1488        {1489            'term': 'Is redux predictable?',1490            'definition': 'Yes. Interacting with the data in the store repeatedly will produce the same effect',1491            'set_id': 181492        },1493        {1494            'term': '3 main principles of redux',1495            'definition': '''1496            1. A single source of truth1497            2. State is read only1498            3. Changes are made with pure functions1499            ''',1500            'set_id': 181501        },1502        {1503            'term': 'Explain "a single source of truth"',1504            'definition': 'The state for the entire redux app is stored in a single pojo',1505            'set_id': 181506        },1507        {1508            'term': 'Explain "State is read only"',1509            'definition': 'State object cannot directly be modified; it can only be modified bt dispatching actions',1510            'set_id': 181511        },1512        {1513            'term': 'Explain "Changes are made using pure functions"',1514            'definition': 'pure functions are the reducers, which receive and update the old state and the action',1515            'set_id': 181516        },1517        {1518            'term': 'Briefly explain state',1519            'definition': 'The state of a program refers to akk the info stored by that program at a specific point in time, generally data',1520            'set_id': 181521        },1522        {1523            'term': 'Briefly explain what a store is',1524            'definition': 'A single POJO with a few other methods, including getState, dispatch(action) and subscribe(listener)',1525            'set_id': 181526        },1527        {1528            'term': 'Action',1529            'definition': 'A POJO that has a type property, and contains info that can be used to update the store, ie dispatched',1530            'set_id': 181531        },1532        {1533            'term': 'Pure Function',1534            'definition': 'Its behavior does not rely on anythng other than taking in arguments and returning a value',1535            'set_id': 181536        },1537        {1538            'term': 'Reducer',1539            'definition': 'Function that is called every time an action is dispatched. It receives an action plus the current state as the arguments, returns the updated state',1540            'set_id': 181541        },1542        {1543            'term': 'Are reducers required to be pure functions?',1544            'definition': 'Yes.They must be pure functions of the dispatched action and the current state.',1545            'set_id': 181546        },1547        {1548            'term': 'Middleware',1549            'definition': 'This is an optional component of redux that allows custom responses to dispatched actions',1550            'set_id': 181551        },1552        {1553            'term': 'Thunks',1554            'definition': 'An alternative to middleware, they essentially act as a function that calls another function',1555            'set_id': 181556        },1557        {1558            'term': 'WHat is Flux?',1559            'definition': 'A front end app architecture from FB that provides unidirectional flow; a pattern you use to structure the app',1560            'set_id': 181561        },1562        {1563            'term': 'What are the 3 main things a redux store is responsible for?',1564            'definition': '''1565                1. Using a reducer to update an app's state1566                2. Using subscription to broadcast an app's state1567                3. Actions - using them to tell it how and when it needs to change the global1568                     state of the application1569            ''',1570            'set_id': 181571        },1572        {1573            'term': 'What are the 3 main store methods?',1574            'definition': '''1575                1. getState() = returns the current state of a store1576                2. dispatch(action) = passes an action into the reducer that tells it what info it must update1577                3. subscribe(callback) = registers cbs to go off whenever the store updates. It returns a function that when1578                    invoked, it unsubscribes the cb from the store1579            ''',1580            'set_id': 181581        },1582        {1583            'term': 'What 3 steps does a reducer perform?',1584            'definition': '''1585                1. It receives the current state plus an action1586                2. It then updates the state based on the action.type1587                3. finally, it returns the next state1588            ''',1589            'set_id': 181590        },1591        {1592            'term': 'Briefly desccribe cookies',1593            'definition': '''1594                A really small file stored on the user's computer, a cookie holds a small amount of data.1595                Its included in HTTP requests - the server sends the data to the browser1596                where it gets stored, and its sent back to the server with the next request1597            ''',1598            'set_id': 191599        },1600        {1601            'term': 'What are a few things a cookie can store?',1602            'definition': '''1603                To store stateful information about a user:1604                    examples:1605                        a. browser history1606                        b. form input information they filled out1607                        c. storing a session cookie / user login/validation1608                        d. persistant cookies can have an expiration date1609            ''',1610            'set_id': 191611        },1612        {1613            'term': 'Web Storage API',1614            'definition': ' Local Storage & Session Storage',1615            'set_id': 191616        },1617        {1618            'term': 'Session Storage',1619            'definition': '''1620                1. Stores data for only one session or  until the browser or a tab is closed.1621                2. NEVER transfers data to the server1622                3. The storage limit is significantly larger than a cookie (5mb)1623            ''',1624            'set_id': 191625        },1626        {1627            'term': 'Local Storage',1628            'definition': '''1629                1. Stores the data with no expiry date1630                2. Deleted when the browser cache is cleared1631                3. Has a max storage limit in the browser1632            ''',1633            'set_id': 191634        },1635        {1636            'term': 'What is JSON',1637            'definition': 'A format - it is just a string of text',1638            'set_id': 191639        },1640        {1641            'term': 'Two important built in javascript JSON object methods',1642            'definition': '''1643                1. JSON.stringify(value) = turns the passed value into a string1644                2. JSON.parse(str) = turns a JSON formatted string into a javascript object1645            ''',1646            'set_id': 191647        },1648        {1649            'term': 'Which method will serialize a JS value into a JSON string?',1650            'definition': 'JSON.stringify()',1651            'set_id': 191652        },1653        {1654            'term': 'Define serialize',1655            'definition': 'To serialize means to convert data into a format that can be sent to another computer',1656            'set_id': 191657        },1658        {1659            'term': 'Define deserialize',1660            'definition': 'Converting a message from another computer into useable data ',1661            'set_id': 191662        },1663        {1664            'term': 'Promise',1665            'definition': 'A promise that at some future point, your code will get a value from an operation so you dont get an error',1666            'set_id': 201667        },1668        {1669            'term': 'Three Existing States of a Promise',1670            'definition': 'Pending, Fulfilled, Rejected',1671            'set_id': 201672        },1673        {1674            'term': 'Pending Promise',1675            'definition': 'The promise object hasnt been resolved. Once it does, it becomes either fullfilled or rejected',1676            'set_id': 201677        },1678        {1679            'term': 'Fullfilled Promise',1680            'definition': 'Whatever was pending had succeeded - the success handler is called and now the promise cant transition to another state or change its value',1681            'set_id': 201682        },1683        {1684            'term': 'Rejected Promise',1685            'definition': 'The operation the pending promise was sup to do failed, and now your error handler is called. The promise cant transition state, nor error reason ',1686            'set_id': 201687        },1688        {1689            'term': 'Success Handler ',1690            'definition': 'A function with one param, which is the value the fullfilled promise has',1691            'set_id': 201692        },1693        {1694            'term': 'Error Handler',1695            'definition': 'A function with one param, which is the reason that the promise failed',1696            'set_id': 201697        },1698        {1699            'term': 'What can you use to replace .then',1700            'definition': 'Using async-await',1701            'set_id': 201702        },1703        {1704            'term': 'What happens when you declare a function as async',1705            'definition': 'Causes the function to return an implicit promise containing the result',1706            'set_id': 201707        },1708        {1709            'term': 'What does "await" do?',1710            'definition': 'Used to wait for a promise to be fullfilled and can ONLY be used inside an async function',1711            'set_id': 201712        },1713        {1714            'term': 'Does async/await code look synchronous?',1715            'definition': 'Yes! You also dont have to chain .then everywhere and look super messy. Async await is the BOMB',1716            'set_id': 201717        },1718        {1719            'term': 'What kind of error handling does async.await use?',1720            'definition': 'Try / Catch blocks',1721            'set_id': 201722        },1723        {1724            'term': 'What are two basic reasons for testing?',1725            'definition': '''To make sure your code works, for increased flexibility and to reduce fear of code/boost confidence1726                to make it easier to collaberate, and act as documentation for the codebase.1727                ''',1728            'set_id': 211729        },1730        {1731            'term': 'Mocha ',1732            'definition': 'A javascript testing framework that runs tests AND shows them in a nice, user friendly way',1733            'set_id': 211734        },1735        {1736            'term': '3 levels of the testing pyramid ',1737            'definition': '1. Unit Tests 2. Integration Tests 3. End to End Tests (E2E)',1738            'set_id': 211739        },1740        {1741            'term': 'Bottom 1 - Unit Tests ',1742            'definition': 'Smallest unit of testing, used to test little bit of isolated code & should ONLY focus on ONE thing',1743            'set_id': 211744        },1745        {1746            'term': 'Middle 2 - Integeration Tests ',1747            'definition': 'Tests the interaction between the pieces you tested in isolation, making sure they work together',1748            'set_id': 211749        },1750        {1751            'term': 'Top Tier - End to End Tests ',1752            'definition': 'Highest level of testing, this is when you are testing the entire app',1753            'set_id': 211754        },1755        {1756            'term': 'TDD ',1757            'definition': 'Dictates that tests, not application code should be written first',1758            'set_id': 211759        },1760        {1761            'term': 'Why use TDD?',1762            'definition': 'Code written to pass pre-written specs are guaranteed to be testable and it makes it easier for other people to add new code while making sure they are not breaking anything',1763            'set_id': 211764        },1765        {1766            'term': '4 Brief reasons TDD is the way to go (i disagree but no one asked for my opinion sadly) ',1767            'definition': '''1. Writing tests before writing code means you can make sure the code you are writing works as you are writing it1768                2. Only required code is written - you will not have any extra unnecessary functionality or code1769                3. TDD helps focus on modularity aka breaking down the application in small, testable chunks1770                4. You have a better understanding of the functionality of the code you are going to write, before you do1771            ''',1772            'set_id': 211773        },1774        {1775            'term': '3 steps of TDD workflow ',1776            'definition': 'red - green - refactor = all in a continuous loop ',1777            'set_id': 211778        },1779        {1780            'term': 'TDD - red ',1781            'definition': 'Write tests that are going to fail',1782            'set_id': 211783        },1784        {1785            'term': 'TDD-green ',1786            'definition': 'Minimum amount of code needed to get the tests to pass',1787            'set_id': 211788        },1789        {1790            'term': 'TDD - refactor ',1791            'definition': 'Refactoring the code you wrote that passed the tests, and then you loop back to red.',1792            'set_id': 211793        },1794    ])1795    op.bulk_insert(votes_table, [1796        {1797            'set_id': 18,  # redux1798            'user_id': 1,1799            'is_upvote': False1800        },1801        {1802            'set_id': 18,  # redux1803            'user_id': 2,1804            'is_upvote': False1805        },1806        {1807            'set_id': 18,  # redux1808            'user_id': 3,1809            'is_upvote': False1810        },1811        {1812            'set_id': 18,  # redux1813            'user_id': 4,1814            'is_upvote': False1815        },1816        {1817            'set_id': 5,  # redux1818            'user_id': 4,1819            'is_upvote': True1820        },1821        {1822            'set_id': 5,  # redux1823            'user_id': 3,1824            'is_upvote': True1825        },1826        {1827            'set_id': 5,  # redux1828            'user_id': 2,1829            'is_upvote': True1830        },1831        {1832            'set_id': 5,  # redux1833            'user_id': 1,1834            'is_upvote': True1835        },1836        {1837            'set_id': 1,  # redux1838            'user_id': 2,1839            'is_upvote': True1840        },1841    ])1842# ### end Alembic commands ###1843def downgrade():1844    # ### commands auto generated by Alembic - please adjust! ###1845    op.drop_table('votes')1846    op.drop_table('favorites')1847    op.drop_table('cards')1848    op.drop_table('sets')1849    op.drop_table('users')1850    op.drop_table('categories')...queries.py
Source:queries.py  
1from flashcard import Set, Card2from models import db, Set_SQL, Card_SQL, Side_SQL, Cell_SQL, User3from sqlalchemy import desc4### READ5def query_cells(card_id):  # returns a dictionary of cells {side_id: [info, card_id]} for a given card_id6    records = db.session.query(Cell_SQL).filter_by(card_id=card_id).all()7    cells = {}8    for record in records:9        cells[record.side_id] = [record.info, record.card_id]10    return cells11def query_cards(id):  # returns an array of Card objects for a given set_id12    records = db.session.query(Card_SQL).filter_by(set_id=id).all()13    cards = []14    for record in records:15        card = Card(record.card_ID, record.card_order, query_cells(record.card_ID), record.set_id)16        cards.append(card)17    return cards18def query_sides(set_id):  # returns a dictionary of {id_name: [order, name, set_id]} for a given set_id19    records = db.session.query(Side_SQL).filter_by(set_id=set_id).all()20    sides = {}21    for record in records:22        sides[record.side_id] = [record.side_order, record.name, record.set_id]23    return sides24def query_sets(records):  # returns an array of all sets where each set is an array of form [set_id, name, description, user_id, public]25    sets = []26    for record in records:27        set = [record.set_id, record.name, record.description, record.user_id, record.public]28        sets.append(set)29    return sets30def query_sets_public(user): # returns all publicly visible sets31    records = db.session.query(Set_SQL).filter_by(public=True).order_by(desc(Set_SQL.set_id)).all()32    all_records = query_sets(records)33    return all_records34def query_sets_private(user): # returns all privately visible sets for a given user35    records = db.session.query(Set_SQL).filter_by(user_id=user.id).order_by(desc(Set_SQL.set_id)).all()36    return query_sets(records)37def build_sets(records):  # builds an array of Set objects for all sets in db using query methods38    sets = []39    for record in records:40        set = Set(record[0], record[1], record[2], query_sides(record[0]), query_cards(record[0]), record[3], record[4])41        sets.append(set)42    return sets43def build_sets_public(user): # builds an array of Set objects for all public sets44    return build_sets(query_sets_public(user))45def build_sets_private(user): # builds an array of Set objects for all private sets of a given user46    return build_sets(query_sets_private(user))47def get_set(set_id):  # builds a Set object for a given set_id48    try:49        record = db.session.query(Set_SQL).filter_by(set_id=set_id).one()50        user = db.session.query(User).filter_by(id=record.user_id).one()51        set = Set(record.set_id, record.name, record.description, query_sides(record.set_id), query_cards(record.set_id), record.user_id, record.public)52        return set53    except:54        return None55### WRITE56def process_form(form, user): # creates a set owned by the given user using the given form data57    # create set58    public = True if form.getlist('public') else False59    ins = Set_SQL(name=form['name'], description=form['description'], user=user, public=public)60    db.session.add(ins)61    db.session.commit()62    set_id = ins.set_id63    # create sides64    sides = []65    side_fields = dict(filter(lambda elem: 'cell[0]' in elem[0], form.items()))66    for field in side_fields:67        if field == 'cell[0][0]':68            ins_side = Side_SQL(set_id=set_id, name=form[field])69            db.session.add(ins_side)70            db.session.commit()71            side_id = ins_side.side_id72        else:73            side = {'set_id': set_id, 'name': form[field]}74            sides.append(side)75    if sides:76        side_result = db.engine.execute(Side_SQL.__table__.insert(), sides)77    # create cards78    cards = []79    card_fields = dict(filter(lambda elem: 'cell' in elem[0] and '][0]' in elem[0] and 'cell[0]' not in elem[0], form.items()))80    for field in card_fields:81        if field == 'cell[1][0]':82            ins_card = Card_SQL(set_id=set_id)83            db.session.add(ins_card)84            db.session.commit()85            card_id = ins_card.card_ID86        else:87            card = {'set_id': set_id}88            cards.append(card)89    if cards:90        card_result = db.engine.execute(Card_SQL.__table__.insert(), cards)91    # create cells92    cells = []93    cell_fields = dict(filter(lambda elem: 'cell' in elem[0] and 'cell[0]' not in elem[0], form.items())) # non-"side name" cells94    for field in cell_fields:95        card_index = int(field[5:6])-196        side_index = int(field[-2:-1])97        cell = {'card_id': card_index+card_id, 'side_id': side_id+side_index, 'info': form[field]}98        cells.append(cell)99    cells_result = db.engine.execute(Cell_SQL.__table__.insert(), cells)100def edit_form(form, set_id): # modifies a given set based on form data101    # update set info102    record = db.session.query(Set_SQL).filter_by(set_id=set_id).one()103    public = True if form.getlist('public') else False104    record.name = form['name']105    record.description = form['description']106    record.public = public107    db.session.commit()108    set_id = record.set_id109    # update sides110    sides = db.session.query(Side_SQL).filter_by(set_id=set_id).all()111    side_fields = dict(filter(lambda elem: 'cell[0]' in elem[0], form.items()))112    num_sides = min(len(sides), len(side_fields))113    for i in range(num_sides):  # update existing sides114        side = sides[i]115        side.name = form['cell[0][' + str(i) + ']']116    db.session.commit()117    if len(side_fields) < len(sides):  # delete removed sides118        for i in range(len(side_fields), len(sides)):119            db.session.query(Cell_SQL).filter_by(side_id=sides[i].side_id).delete()120            db.session.query(Side_SQL).filter_by(side_id=sides[i].side_id).delete()121        db.session.commit()122    new_sides = []123    if len(side_fields) > len(sides):  # new sides124        for i in range(len(sides), len(side_fields)):125            side = {'set_id': set_id, 'name': form['cell[0][' + str(i) + ']']}126            new_sides.append(side)127        db.engine.execute(Side_SQL.__table__.insert(), new_sides)128    # update cards129    cards = db.session.query(Card_SQL).filter_by(set_id=set_id).all()130    card_fields = dict(filter(lambda elem: 'cell' in elem[0] and '][0]' in elem[0] and 'cell[0]' not in elem[0], form.items()))131    if len(card_fields) < len(cards):  # delete removed cards132        for i in range(len(card_fields), len(cards)):133            db.session.query(Cell_SQL).filter_by(card_id=cards[i].card_ID).delete()134            db.session.query(Card_SQL).filter_by(card_ID=cards[i].card_ID).delete()135        db.session.commit()136    # existing cards don't need to be updated137    new_cards = []138    if len(card_fields) > len(cards):  # new cards139        for i in range(len(cards), len(card_fields)):140            card = {'set_id': set_id}141            new_cards.append(card)142        print(new_cards)143        db.engine.execute(Card_SQL.__table__.insert(), new_cards)144    num_cards = min(len(cards), len(card_fields))145    # update cells146    cards = db.session.query(Card_SQL).filter_by(set_id=set_id).all()147    sides = db.session.query(Side_SQL).filter_by(set_id=set_id).all()148    card_index = cards[0].card_ID149    side_index = sides[0].side_id150    cells = []151    for i in range(len(cards)):152        for j in range(len(sides)):153            if i < num_cards and j < num_sides:  # update existing cell154                cell = db.session.query(Cell_SQL).filter_by(card_id=cards[i].card_ID, side_id=sides[j].side_id).one()155                cell.info = form['cell[' + str(i+1) + '][' + str(j) + ']']156                db.session.commit()157            else:158                cell = {'card_id': cards[i].card_ID, 'side_id': sides[j].side_id, 'info': form['cell[' + str(i+1) + '][' + str(j) + ']']}159                cells.append(cell)160    if cells:161        db.engine.execute(Cell_SQL.__table__.insert(), cells)162### DELETE163def delete_set(set_id):  # deletes a given set from the db164    sides = query_sides(set_id)165    for side in sides:166        db.session.query(Cell_SQL).filter_by(side_id=side).delete()167    db.session.query(Side_SQL).filter_by(set_id=set_id).delete()168    db.session.query(Card_SQL).filter_by(set_id=set_id).delete()169    db.session.query(Set_SQL).filter_by(set_id=set_id).delete()...sat_solver.py
Source:sat_solver.py  
1#!/usr/bin/env python32import os3import sys4module_path = os.path.abspath(os.path.join('..'))5if module_path not in sys.path:6    sys.path.append(module_path)7import argparse as ap8from sat.lib.data_processor import InputProcessor, OutputProcessor9from sat.lib.genetic import Genetic10def parse_args():11    parser = ap.ArgumentParser()12    parser.add_argument("set_id", help="id of the data set")13    versions = ["t1", "t2", "c1", "c2", "c3"]14    parser.add_argument(15        "-v", "--version",16        required=True,17        choices=versions,18        help="version of the algorithm run"19    )20    return parser.parse_args()21def tune_params1(set_id, insts, version):22    opts = {"p": 200, "g": 200, "pan": False, "war": False}23    cs = [0.97, 0.99, 0.999]24    ms = [0.01, 0.05, 0.1]25    for c in cs:26        for m in ms:27            opts["c"] = c28            opts["m"] = m29            run(opts, insts, set_id, version)30def tune_params2(set_id, insts, version):31    opts = {"c": 0.999, "m": 0.10, "pan": False, "war": False}32    ps = [200, 350, 500]33    gs = [200, 350, 500]34    for p in ps:35        for g in gs:36            opts["p"] = p37            opts["g"] = g38            run(opts, insts, set_id, version)39def compute1(set_id, insts, version):40    opts = {"p": 500, "g": 200, "c": 0.999, "m": 0.1, "pan": False, "war": False}41    run(opts, insts, set_id, version)42def compute2(set_id, insts, version):43    opts = {"p": 500, "g": 200, "c": 0.999, "m": 0.1, "pan": True, "war": False}44    run(opts, insts, set_id, version)45def compute3(set_id, insts, version):46    opts = {"p": 500, "g": 200, "c": 0.999, "m": 0.1, "pan": False, "war": True}47    run(opts, insts, set_id, version)48def run(opts, insts, set_id, version):49    sols = []50    for inst in insts:51        gen = Genetic(inst, opts)52        gen.run()53        sols.append(gen.sol)54    OutputProcessor(sols, set_id, opts, version).write_sols()55def main():56    args = parse_args()57    set_id = args.set_id58    version = args.version59    insts = InputProcessor(set_id).prepare_instances()60    if version == "t1":61        tune_params1(set_id, insts, version)62    elif version == "t2":63        tune_params2(set_id, insts, version)64    elif version == "c1":65        compute1(set_id, insts, version)66    elif version == "c2":67        compute2(set_id, insts, version)68    elif version == "c3":69        compute3(set_id, insts, version)70if __name__ == "__main__":...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
