How to use register method in Cypress

Best JavaScript code snippet using cypress

gnrobjectregister.py

Source:gnrobjectregister.py Github

copy

Full Screen

1#-*- coding: UTF-8 -*-2#--------------------------------------------------------------------------3# package           : GenroPy web - see LICENSE for details4# module gnrwebcore : core module for genropy web framework5# Copyright (c)     : 2004 - 2007 Softwell sas - Milano 6# Written by    : Giovanni Porcari, Michele Bertoldi7#                 Saverio Porcari, Francesco Porcari , Francesco Cavazzana8#--------------------------------------------------------------------------9#This library is free software; you can redistribute it and/or10#modify it under the terms of the GNU Lesser General Public11#License as published by the Free Software Foundation; either12#version 2.1 of the License, or (at your option) any later version.13#This library is distributed in the hope that it will be useful,14#but WITHOUT ANY WARRANTY; without even the implied warranty of15#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU16#Lesser General Public License for more details.17#You should have received a copy of the GNU Lesser General Public18#License along with this library; if not, write to the Free Software19#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA20# 21from __future__ import print_function22from builtins import str23from past.builtins import basestring24#from builtins import object25from datetime import datetime26from gnr.core.gnrbag import Bag, BagResolver27from gnr.web.gnrwebpage import ClientDataChange28BAG_INSTANCE = Bag()29import logging30import re31logger = logging.getLogger(__name__)32import time33def lock_item(func):34    def decore(self, obj, *args, **kwargs):35        key = obj if isinstance(obj, basestring) else obj['register_item_id']36        with self.locked(self.item_key(key), caller=func.__name__):37            result = func(self, obj, *args, **kwargs)38            return result39    return decore40def lock_page(func):41    def decore(self, key, *args, **kwargs):42        register = self.p_register43        with register.locked(register.item_key(key), caller=func.__name__):44            result = func(self, key, *args, **kwargs)45            return result46    return decore47def lock_connection(func):48    def decore(self, key, *args, **kwargs):49        register = self.c_register50        with register.locked(register.item_key(key), caller=func.__name__):51            result = func(self, key, *args, **kwargs)52            return result53    return decore54def lock_user(func):55    def decore(self, key, *args, **kwargs):56        register = self.u_register57        with register.locked(register.item_key(key), caller=func.__name__):58            result = func(self, key, *args, **kwargs)59            return result60    return decore61def lock_index(func):62    def decore(self, *args, **kwargs):63        index_key = self._get_index_key(index_name=kwargs.get('index_name'))64        with self.locked(index_key):65            result = func(self, *args, **kwargs)66            return result67    return decore68class ExpiredItemException(Exception):69    pass70class ServerStore(object):71    def __init__(self, parent, register_item_id=None, triggered=True):72        self.parent = parent73        self.register_item_id = register_item_id74        self.triggered = triggered75        self._register_item = '*'76    def __enter__(self):77        self.parent.lock_register_item(self.register_item_id)78        return self79    def __exit__(self, type, value, tb):80        self.parent.unlock_register_item(self.register_item_id)81        if tb:82            return83        if not self.register_item:84            return85        data = self.data86        if data is not None:87            data.unsubscribe('datachanges', any=True)88        self.parent.write(self.register_item)89    def reset_datachanges(self):90        if self.register_item:91            self.register_item['datachanges'] = list()92            self.register_item['datachanges_idx'] = 093    def set_datachange(self, path, value=None, attributes=None, fired=False, reason=None, replace=False, delete=False):94        if not self.register_item:95            return96        datachanges = self.datachanges97        self.register_item['datachanges_idx'] = self.register_item.get('datachanges_idx', 0)98        self.register_item['datachanges_idx'] += 199        datachange = ClientDataChange(path, value, attributes=attributes, fired=fired,100                                      reason=reason, change_idx=self.register_item['datachanges_idx'],101                                      delete=delete)102        if replace and datachange in datachanges:103            datachanges.pop(datachanges.index(datachange))104        datachanges.append(datachange)105    def drop_datachanges(self, path):106        self.datachanges[:] = [dc for dc in self.datachanges if not dc.path.startswith(path)]107    def subscribe_path(self, path):108        if self.register_item:109            self.subscribed_paths.add(path)110    def _on_data_trigger(self, node=None, ind=None, evt=None, pathlist=None, **kwargs):111        if evt == 'ins':112            pathlist.append(node.label)113        path = '.'.join(pathlist)114        for subscribed in self.subscribed_paths:115            if path.startswith(subscribed):116                self.datachanges.append(117                        ClientDataChange(path=path, value=node.value, reason='serverChange', attributes=node.attr))118                break119    def __getattr__(self, fname):120        if hasattr(BAG_INSTANCE, fname):121            return getattr(self.data, fname)122        else:123            raise AttributeError("register_item has no attribute '%s'" % fname)124    @property125    def data(self):126        """TODO"""127        if self.register_item:128            return self.register_item['data']129        else:130            return Bag()131    @property132    def register_item(self):133        """TODO"""134        if self._register_item != '*':135            return self._register_item136        self._register_item = register_item = self.parent.read(self.register_item_id)137        if not register_item:138            return139        data = register_item.get('data')140        if data is None:141            data = Bag()142            register_item['data'] = data143            register_item['datachanges'] = list()144            register_item['datachanges_idx'] = 0145            register_item['subscribed_paths'] = set()146        if self.triggered and register_item['subscribed_paths']:147            data.subscribe('datachanges', any=self._on_data_trigger)148        return register_item149    @property150    def datachanges(self):151        """TODO"""152        datachanges = []153        if self.register_item:154            datachanges = self.register_item.setdefault('datachanges', [])155        return datachanges156    @property157    def subscribed_paths(self):158        """TODO"""159        if self.register_item:160            return self.register_item['subscribed_paths']161class SiteRegister(object):162    """TODO"""163    prefix = 'SITE'164    def __init__(self, site):165        self.site = site166        self.sd = self.site.shared_data167        self.p_register = PageRegister(site)168        self.c_register = ConnectionRegister(site)169        self.u_register = UserRegister(site)170        self.cleanup_key = '%s_CLEANUP_LAST_TS'%self.prefix171    @lock_connection172    def new_connection(self, connection_id, connection):173        assert not self.c_register.exists(174                connection_id), 'SITEREGISTER ERROR: connection_id %s already registered' % connection_id175        connection_item = self.c_register.create(connection_id, connection)176        self.attach_connections_to_user(connection_item['user'], connection_item)177        self.c_register.write(connection_item)178    @lock_user179    def attach_connections_to_user(self, user, connection_items):180        if not isinstance(connection_items, list):181            connection_items = [connection_items]182        user_item = self.u_register.read(user)183        if not user_item:184            user_item = self.u_register.create(user, connection_items[0])185        for connection_item in connection_items:186            connection_id = connection_item['register_item_id']187            user_item['connections'][connection_id] = connection_item['connection_name']188        self.u_register.write(user_item)189    @lock_user190    def pop_connections_from_user(self, user, connection_items, delete_if_empty=True):191        user_item = self.u_register.read(user)192        result = {}193        if not user_item:194            return195        if connection_items == '*':196            result = user_item['connections']197            user_item['connections'] = {}198        else:199            if not isinstance(connection_items, list):200                connection_items = [connection_items]201            for connection_item in connection_items:202                connection_id = connection_item['register_item_id']203                result[connection_id] = user_item['connections'].pop(connection_id, None)204        if not user_item['connections'] and delete_if_empty:205            self.u_register.pop(user)206        else:207            self.u_register.write(user_item)208        return result209    def change_connection_user(self, connection_id, user=None, user_tags=None, user_id=None, user_name=None,210                               avatar_extra=None):211        connection_item = self.c_register.read(connection_id)212        self.pop_connections_from_user(connection_item['user'], connection_item, delete_if_empty=True)213        connection_item['user'] = user214        connection_item['user_tags'] = user_tags215        connection_item['user_name'] = user_name216        connection_item['user_id'] = user_id217        connection_item['avatar_extra'] = avatar_extra218        self.attach_connections_to_user(connection_item['user'], connection_item)219        self.c_register.write(connection_item)220        if connection_item['pages']:221            for page_id in connection_item['pages']:222                page_item = self.p_register.read(page_id)223                page_item['user'] = user224                self.p_register.write(page_item)225    @lock_connection226    def attach_pages_to_connection(self, connection_id, page_items):227        if not isinstance(page_items, list):228            page_items = [page_items]229        connection_item = self.c_register.read(connection_id)230        for page_item in page_items:231            page_id = page_item['register_item_id']232            connection_item['pages'][page_id] = page_item['pagename']233        self.c_register.write(connection_item)234    @lock_connection235    def pop_pages_from_connection(self, connection_id, page_items, delete_if_empty=False):236        connection_item = self.c_register.read(connection_id)237        result = {}238        if not connection_item:239            return240        if page_items == '*':241            result = connection_item['pages']242            connection_item['pages'] = {}243        else:244            if not isinstance(page_items, list):245                page_items = [page_items]246            for page_item in page_items:247                page_id = page_item['register_item_id']248                result[page_id] = connection_item['pages'].pop(page_id, None)249        if not connection_item['pages'] and (delete_if_empty or self.c_register.is_guest(connection_item)):250            self.drop_connection(connection_id)251        else:252            self.c_register.write(connection_item)253        return result254    @lock_page255    def new_page(self, page_id, page, data=None):256        page_item = self.p_register.create(page_id, page, data)257        self.attach_pages_to_connection(page_item['connection_id'], page_item)258        self.p_register.write(page_item)259        start_ts = datetime.now()260        self.c_register.update_lastused(page_item['connection_id'],start_ts,lastRpc=start_ts)261        return page_item262    def cleanup(self):263        lastSiteCleanup = getattr(self.site,'_lastCleanUp',None)264        if lastSiteCleanup and (time.time()-lastSiteCleanup < self.site.cleanup_interval):265            return266        with self.sd.locked(self.cleanup_key):267            lastCleanupTs = self.sd.get(self.cleanup_key)268            thisCleanupTs = time.time()269            if not lastCleanupTs or ((thisCleanupTs - lastCleanupTs) > self.site.cleanup_interval):270                for page_id, page in list(self.pages().items()):271                    page_last_refresh_age = page.get('last_refresh_age')272                    if (page_last_refresh_age and (page_last_refresh_age > self.site.page_max_age)):273                        self.drop_page(page_id)274                for connection_id, connection in list(self.connections().items()):275                    connection_last_refresh_age = connection.get('last_refresh_age')276                    if (connection_last_refresh_age and connection_last_refresh_age > self.site.connection_max_age):277                        self.drop_connection(connection_id,cascade=True)278                self.sd.set(self.cleanup_key, thisCleanupTs, 0)279                self.site._lastCleanUp = thisCleanupTs280    def cleanup_page_connection(self, max_age=300):281        for page_id, page in list(self.pages().items()):282            page_last_refresh_age = page.get('last_refresh_age')283            if (page_last_refresh_age and (page_last_refresh_age > max_age)):284                self.drop_page(page_id)285        for connection_id, connection in list(self.connections().items()):286            connection_last_refresh_age = connection.get('last_refresh_age')287            if (connection_last_refresh_age and connection_last_refresh_age > max_age):288                self.drop_connection(connection_id)289    def get_user(self, user):290        return self.u_register.read(user)291    def connection(self, connection_id):292        return self.c_register.read(connection_id)293    def page(self, page_id):294        return self.p_register.read(page_id)295    def user(self, user):296        return self.u_register.read(user)297    def stores(self, storename):298        return299    @lock_connection300    def drop_connection(self, connection_id, cascade=None):301        connection_item = self.c_register.pop(connection_id)302        if not connection_item:303            return304        if connection_item['pages']:305            for page_id in connection_item['pages']:306                self.p_register.pop(page_id)307        user = connection_item['user']308        self.pop_connections_from_user(user, connection_item, delete_if_empty=cascade or self.c_register.is_guest(connection_item))309    def log_drop_page(self,page_id=None,page=None,page_last_rpc_age=None,page_max_age=None):310        print('\n\n IT SHOULD DROP THE PAGE ',page_id,page.get('pagename',''),'\n',page,'page_last_rpc_age ',page_last_rpc_age,'page_max_age ',page_max_age)311        312    @lock_page313    def drop_page(self, page_id, cascade=None):314        """TODO315        316        :param page_id: the id of the page317        :param cascade: specifies the cascade policy - True to drop empty connection"""318        page_item = self.p_register.pop(page_id)319        if not page_item:320            return321        self.pop_pages_from_connection(page_item['connection_id'], page_item, delete_if_empty=cascade)322    def connectionStore(self, connection_id, triggered=False):323        return self.c_register.make_store(connection_id, triggered=triggered)324    def userStore(self, user, triggered=False):325        return self.u_register.make_store(user, triggered=triggered)326    def pageStore(self, page_id, triggered=False):327        return self.p_register.make_store(page_id, triggered=triggered)328    def refresh(self, page_id, ts=None,lastRpc=None,pageProfilers=None):329        page_item = self.p_register.read(page_id)330        if  page_item:331            self.p_register.update_lastused(page_id, ts,lastRpc=lastRpc,pageProfilers=pageProfilers)332            self.c_register.update_lastused(page_item['connection_id'], ts,lastRpc=lastRpc)333            self.u_register.update_lastused(page_item['user'], ts,lastRpc=lastRpc)334        return page_item335    def users(self, *args, **kwargs):336        return self.u_register.users(*args, **kwargs)337    def user_connections(self, user):338        result = {}339        item = self.u_register.read(user)340        if item:341            result = self.c_register.get_multi_items(list(item['connections'].keys()))342        return result343    def connection_pages(self, connection_id):344        result = {}345        item = self.c_register.read(connection_id)346        if item:347            result = self.p_register.get_multi_items(list(item['pages'].keys()))348        return result349    def connections(self, *args, **kwargs):350        return self.c_register.connections(*args, **kwargs)351    def pages(self, *args, **kwargs):352        return self.p_register.pages(*args, **kwargs)353    def tree(self):354        return PagesTreeResolver()355    def getPageProfile(self,page_id):356        lskey = self.site.register.lastused_key(page_id)357        if lskey:358            last_used = self.site.register.sd.get(lskey)359            if last_used and len(last_used)==3:360                return last_used[2]361    def full_cleanup(self, max_age=30, cascade=False):362        with self.u_register as user_register:363            with self.c_register as connection_register:364                with self.p_register as page_register:365                    for page_id, page in list(self.pages().items()):366                        if page['last_refresh_age'] > max_age:367                            self.drop_page(page_id, page_register=page_register,368                                           connection_register=connection_register,369                                           user_register=user_register, cascade=cascade)370                    for connection_id, connection in list(self.connections().items()):371                        if connection['last_refresh_age'] > max_age:372                            self._drop_connection(connection_id, connection_register=connection_register,373                                                  user_register=user_register, cascade=cascade)374class BaseRegister(object):375    def __init__(self, site, **kwargs):376        self.site = site377        self.sd = self.site.shared_data378        self.init(**kwargs)379        380    def __enter__(self):381        self.sd.lock(self.prefix)382        return self383        384    def __exit__(self, type, value, tb):385        self.sd.unlock(self.prefix)386        387    def init(self, **kwargs):388        pass389        390    def make_store(self, register_item_id, triggered=None):391        return ServerStore(self, register_item_id=register_item_id, triggered=triggered)392        393    def create(self, obj):394        pass395        396    def item_key(self, register_item_id):397        return '%s_IT_%s' % (self.prefix, register_item_id)398        399    def lastused_key(self, register_item_id):400        return '%s_LU_%s' % (self.prefix, register_item_id)401        402    @lock_item403    def update_lastused(self, register_item_id, ts=None,lastRpc=None,pageProfilers=None):404        last_used_key = self.lastused_key(register_item_id)405        last_used = self.sd.get(last_used_key)406        if last_used:407            ts = max(last_used[1], ts) if ts else last_used[1]408        self.sd.set(last_used_key, (datetime.now(), ts,lastRpc,pageProfilers), 0)409        410    def read(self, register_item_id):411        register_item = self.sd.get(self.item_key(register_item_id))412        if register_item:413            self._set_last_ts_in_item(register_item)414        return register_item415        416    def exists(self, register_item_id):417        return self.sd.get(self.item_key(register_item_id)) is not None418        419    @lock_item420    def write(self, register_item):421        sd = self.sd422        self.log('write', register_item=register_item)423        register_item_id = register_item['register_item_id']424        is_new_item = register_item.pop('_new', None)425        sd.set(self.item_key(register_item_id), register_item, 0)426        if is_new_item:427            self.update_lastused(register_item_id, register_item['start_ts'])428        self.set_index(register_item)429        self.on_write(register_item)430        431    def on_write(self, register_item):432        pass433        434    def _get_index_key(self, index_name=None):435        if index_name == '*':436            ind_key = '%s_MASTERINDEX' % self.prefix437        elif index_name:438            ind_key = '%s_INDEX_%s' % (self.prefix, index_name)439        else:440            ind_key = '%s_INDEX' % self.prefix441        return ind_key442        443    @lock_index444    def set_index(self, register_item, index_name=None):445        sd = self.sd446        register_item_id = register_item['register_item_id']447        ind_key = self._get_index_key(index_name)448        self.log('set_index', register_item_id=register_item['register_item_id'], index_name=index_name,449                 ind_key=ind_key)450        index = sd.get(ind_key)451        if not index:452            self.log('set_index (create new)')453            index = {}454            if index_name and index_name != '*':455                self.set_index({'register_item_id': index_name}, index_name='*')456        if self.parent_index and (self.parent_index in register_item):457            index[register_item_id] = register_item[self.parent_index]458        else:459            index[register_item_id] = True460        sd.set(ind_key, index, 0)461        self.log('set_index:writing', index=index)462        463    @lock_index464    def _remove_index(self, register_item_id, index_name=None):465        """Private. It must be called only in locked mode"""466        sd = self.sd467        ind_key = self._get_index_key(index_name)468        index = sd.get(ind_key)469        if index:470            self.log('_remove_index', register_item_id=register_item_id, index_name=index_name, ind_key=ind_key)471            index.pop(register_item_id, None)472            self._index_rewrite(index_name, index)473            474    def _index_rewrite(self, index_name, index):475        self.log('_index_rewrite', index_name=index_name, index=index)476        sd = self.sd477        ind_key = self._get_index_key(index_name)478        if index == {}:479            if index_name and index_name != '*':480                self._remove_index(register_item_id=index_name, index_name='*')481            sd.delete(ind_key)482            self.log('_index_rewrite:index empty: deleted', ind_key=ind_key)483            return484        sd.set(ind_key, index, 0)485        self.log('_index_rewrite:index updated', ind_key=ind_key)486        487    @lock_item488    def pop(self, register_item_id):489        sd = self.sd490        item_key = self.item_key(register_item_id)491        register_item = sd.get(item_key)492        self.log('pop', register_item=register_item)493        sd.delete(item_key)494        sd.delete(self.lastused_key(register_item_id))495        self._remove_index(register_item_id)496        self.on_pop(register_item_id, register_item)497        return register_item498        499    def on_pop(self, register_item_id, register_item):500        pass501    def _set_last_ts_in_item(self, register_item, last_used=None, now=None):502        now = now or datetime.now()503        def age(label):504            return (now - register_item[label]).seconds505        last_used = last_used or self.sd.get(self.lastused_key(register_item['register_item_id']))506        if not last_used:507            return508        # print 'last_used: ',last_used  This is 4 pars returned not three509        register_item['last_ts'], register_item['last_user_ts'],register_item['last_rpc_ts'],register_item['profile'] = last_used510        register_item['age'] = age('start_ts')511        if register_item['last_rpc_ts']:512            register_item['last_rpc_age'] = age('last_rpc_ts')513        register_item['last_refresh_age'] = age('last_ts')514        register_item['last_event_age'] = age('last_user_ts')515    @lock_item516    def upd_register_item(self, register_item_id, **kwargs):517        sd = self.sd518        self.log('set_register_item', register_item_id=register_item_id)519        item_key = self.item_key(register_item_id)520        register_item = sd.get(item_key)521        self.log('upd_register_item', register_item_id=register_item_id, register_item=register_item, updates=kwargs)522        if register_item:523            register_item.update(kwargs)524            self.write(register_item)525    def locked(self, key, **kwargs):526        return self.sd.locked(key, **kwargs)527    def lock_register_item(self, register_item_id, max_retry=None,528                           lock_time=None,529                           retry_time=None):530        return self.sd.lock(self.item_key(register_item_id), max_retry=max_retry, lock_time=lock_time,531                            retry_time=retry_time)532    def unlock_register_item(self, register_item_id):533        return self.sd.unlock(self.item_key(register_item_id))534    def items(self, index_name=None):535        """Registered register_items"""536        index = self.sd.get(self._get_index_key(index_name)) or {}537        return self.get_multi_items(list(index.keys()))538    def get_multi_items(self, keys):539        sd = self.sd540        items = sd.get_multi(keys, '%s_IT_' % self.prefix)541        items_lastused = sd.get_multi(keys, '%s_LU_' % self.prefix)542        now = datetime.now()543        for k, register_item in list(items.items()):544            oldlastused = items_lastused.get(k)545            if oldlastused:546                self._set_last_ts_in_item(register_item, oldlastused, now=now)547        return items548    def log(self, command, **kwargs):549        if False:550            print('-->%s:%s\n                       (%s)' % (self.name, command, str(kwargs)))551class PageRegister(BaseRegister):552    name = 'page'553    prefix = 'PREG'554    parent_index = 'connection_id'555    def create(self, page_id, page, data=None):556        register_item_id = page_id557        start_ts = datetime.now()558        subscribed_tables = getattr(page, 'subscribed_tables', None)559        if subscribed_tables:560            subscribed_tables = subscribed_tables.split(',')561        register_item = dict(562                register_item_id=register_item_id,563                pagename=page.pagename,564                connection_id=page.connection_id,565                start_ts=start_ts,566                _new=True,567                subscribed_tables=subscribed_tables or [],568                user=page.user,569                user_ip=page.user_ip,570                user_agent=page.user_agent,571                datachanges=list(),572                subscribed_paths=set()573                )574        if data:575            register_item['data'] = Bag(data)576        return register_item577    def on_write(self, register_item):578        for table in register_item['subscribed_tables']:579            self.set_index(register_item, index_name=table)580    def on_pop(self, register_item_id, register_item):581        for table in register_item and register_item['subscribed_tables'] or []:582            self._remove_index(register_item['register_item_id'], index_name=table)583    def pages(self, connection_id=None, index_name=None, filters=None):584        """returns a list of page_id and pages.585           if no index is specified all pages are returned.586           if filters return anly pages matching with filters587           filters is a string with the propname and a regex"""588        pages = self.items(index_name=index_name)589        if not filters or filters == '*':590            return pages591        fltdict = dict()592        for flt in filters.split(' AND '):593            fltname, fltvalue = flt.split(':', 1)594            fltdict[fltname] = fltvalue595        filtered = dict()596        def checkpage(page, fltname, fltval):597            value = page[fltname]598            if not value:599                return600            if not isinstance(value, basestring):601                return fltval == value602            try:603                return re.match(fltval, value)604            except:605                return False606        for page_id, page in list(pages.items()):607            page = Bag(page)608            for fltname, fltval in list(fltdict.items()):609                if checkpage(page, fltname, fltval):610                    filtered[page_id] = page611        return filtered612class ConnectionRegister(BaseRegister):613    name = 'connection'614    prefix = 'CREG'615    parent_index = 'user'616    def init(self, onAddConnection=None, onRemoveConnection=None):617        self.onAddConnection = onAddConnection618        self.onRemoveConnection = onRemoveConnection619    def create(self, connection_id, connection):620        register_item = dict(621                register_item_id=connection_id,622                start_ts=datetime.now(),623                _new=True,624                connection_name=connection.connection_name,625                user=connection.user,626                user_id=connection.user_id,627                user_name=connection.user_name,628                user_tags=connection.user_tags,629                user_ip=connection.ip,630                user_agent=connection.user_agent,631                browser_name=connection.browser_name,632                pages={}633                )634        return register_item635    def on_write(self, register_item):636        pass637    def on_pop(self, register_item_id, register_item):638        if hasattr(self.onRemoveConnection, '__call__'): # why not callable??? TOTEST639            self.onRemoveConnection(register_item_id)640    def connections(self, user=None, index_name=None):641        return self.items(index_name=index_name)642    def is_guest(self, register_item):643        return register_item['user']=='guest_%s'%register_item['register_item_id']644class UserRegister(BaseRegister):645    name = 'user'646    prefix = 'UREG'647    parent_index = None648    def create(self, user, connection_item):649        register_item = dict(650                register_item_id=user,651                start_ts=datetime.now(),652                _new=True,653                user=user,654                user_id=connection_item['user_id'],655                user_name=connection_item['user_name'],656                user_tags=connection_item['user_tags'],657                avatar_extra=connection_item.get('avatar_extra'),658                connections={}659                )660        return register_item661    def on_write(self, register_item):662        pass663    def on_pop(self, register_item_id, register_item):664        pass665    def users(self, index_name=None):666        return self.items(index_name=index_name)667class PagesTreeResolver(BagResolver):668    classKwargs = {'cacheTime': 1,669                   'readOnly': False,670                   'user': None,671                   'connection_id': None,672                   'page': None673    }674    classArgs = ['user']675    def load(self):676        if not self.user:677            return self.list_users()678        elif not self.connection_id:679            return self.list_connections(user=self.user)680        else:681            return self.list_pages(connection_id=self.connection_id)682    def list_users(self):683        usersDict = self._page.site.register.users()684        result = Bag()685        for user, item_user in list(usersDict.items()):686            item = Bag()687            data = item_user.pop('data', None)688            item_user.pop('datachanges', None)689            item_user.pop('datachanges_idx', None)690            item_user.pop('connections')691            item['info'] = Bag([('%s:%s' % (k, str(v).replace('.', '_')), v) for k, v in list(item_user.items())])692            item['data'] = data693            item.setItem('connections', PagesTreeResolver(user=user), cacheTime=3)694            result.setItem(user, item, user=user)695        return result696    def list_connections(self, user):697        connectionsDict = self._page.site.register.user_connections(user)698        result = Bag()699        for connection_id, connection in list(connectionsDict.items()):700            delta = (datetime.now() - connection['start_ts']).seconds701            user = connection['user'] or 'Anonymous'702            connection_name = connection['connection_name']703            itemlabel = '%s (%i)' % (connection_name, delta)704            item = Bag()705            connection.pop('pages', None)706            data = connection.pop('data', None)707            item['info'] = Bag([('%s:%s' % (k, str(v).replace('.', '_')), v) for k, v in list(connection.items())])708            item['data'] = data709            item.setItem('pages', PagesTreeResolver(user=user, connection_id=connection_id), cacheTime=2)710            result.setItem(itemlabel, item, user=user, connection_id=connection_id)711        return result712    def list_pages(self, connection_id):713        pagesDict = self._page.site.register.connection_pages(connection_id)714        result = Bag()715        for page_id, page in list(pagesDict.items()):716            delta = (datetime.now() - page['start_ts']).seconds717            pagename = page['pagename'].replace('.py', '')718            itemlabel = '%s (%i)' % (pagename, delta)719            item = Bag()720            data = page.pop('data', None)721            item['info'] = Bag([('%s:%s' % (k, str(v).replace('.', '_')), v) for k, v in list(page.items())])722            item['data'] = data723            result.setItem(itemlabel, item, user=item['user'], connection_id=item['connection_id'], page_id=page_id)724        return result     ...

Full Screen

Full Screen

__init__.py

Source:__init__.py Github

copy

Full Screen

1from gym.envs.registration import registry, register, make, spec2# Adversarial MuJoCo3# ----------------------------------------4# 2D5#register(6#    id='ReacherAdv-v1',7#    entry_point='gym.envs.adversarial.mujoco:ReacherEnv',8#    timestep_limit=50,9#    reward_threshold=-3.75,10#)11register(12    id='InvertedPendulumAdv-v1',13    entry_point='gym.envs.adversarial.mujoco:InvertedPendulumEnv',14    reward_threshold=950.0,15)16register(17    id='InvertedDoublePendulumAdv-v1',18    entry_point='gym.envs.adversarial.mujoco:InvertedDoublePendulumEnv',19    reward_threshold=9100.0,20)21register(22    id='HalfCheetahAdv-v1',23    entry_point='gym.envs.adversarial.mujoco:HalfCheetahEnv',24    reward_threshold=4800.0,25)26register(27    id='HalfCheetahHeelAdv-v1',28    entry_point='gym.envs.adversarial.mujoco:HalfCheetahHeelEnv',29    reward_threshold=4800.0,30)31register(32    id='HalfCheetahTorsoAdv-v1',33    entry_point='gym.envs.adversarial.mujoco:HalfCheetahTorsoEnv',34    reward_threshold=4800.0,35)36register(37    id='HopperAdv-v1',38    entry_point='gym.envs.adversarial.mujoco:HopperEnv',39    reward_threshold=3800.0,40)41register(42    id='Hopper6Adv-v1',43    entry_point='gym.envs.adversarial.mujoco:Hopper6Env',44    reward_threshold=3800.0,45)46register(47    id='HopperHeelAdv-v1',48    entry_point='gym.envs.adversarial.mujoco:HopperHeelEnv',49    reward_threshold=3800.0,50)51register(52    id='HopperHeel6Adv-v1',53    entry_point='gym.envs.adversarial.mujoco:HopperHeel6Env',54    reward_threshold=3800.0,55)56register(57    id='HopperTorso6Adv-v1',58    entry_point='gym.envs.adversarial.mujoco:HopperTorso6Env',59    reward_threshold=3800.0,60)61register(62    id='SwimmerAdv-v1',63    entry_point='gym.envs.adversarial.mujoco:SwimmerEnv',64    reward_threshold=360.0,65)66register(67    id='Walker2dAdv-v1',68    entry_point='gym.envs.adversarial.mujoco:Walker2dEnv',69)70register(71    id='Walker2dHeelAdv-v1',72    entry_point='gym.envs.adversarial.mujoco:Walker2dHeelEnv',73)74register(75    id='Walker2dTorsoAdv-v1',76    entry_point='gym.envs.adversarial.mujoco:Walker2dTorsoEnv',77)78#register(79#    id='AntAdv-v1',80#    entry_point='gym.envs.adversarial.mujoco:AntEnv',81#    reward_threshold=6000.0,82#)83#84#register(85#    id='AntHeelAdv-v1',86#    entry_point='gym.envs.adversarial.mujoco:AntHeelEnv',87#    reward_threshold=6000.0,88#)89#90#register(91#    id='HumanoidAdv-v1',92#    entry_point='gym.envs.adversarial.mujoco:HumanoidEnv',93#)94#95#register(96#    id='HumanoidHeelAdv-v1',97#    entry_point='gym.envs.adversarial.mujoco:HumanoidHeelEnv',98#)99#100#register(101#    id='HumanoidStandupAdv-v1',102#    entry_point='gym.envs.adversarial.mujoco:HumanoidStandupEnv',103#)104## Adversarial Classic105## ----------------------------------------106#107#register(108#    id='CartPoleAdv-v0',109#    entry_point='gym.envs.adversarial.classic_control:CartPoleEnv',110#    timestep_limit=200,111#    reward_threshold=195.0,112#)113#114#register(115#    id='CartPoleAdv-v1',116#    entry_point='gym.envs.adversarial.classic_control:CartPoleEnv',117#    timestep_limit=500,118#    reward_threshold=475.0,119#)120#121#register(122#    id='MountainCarAdv-v0',123#    entry_point='gym.envs.adversarial.classic_control:MountainCarEnv',124#    timestep_limit=200,125#    reward_threshold=-110.0,126#)127#128#register(129#    id='MountainCarContinuousAdv-v0',130#    entry_point='gym.envs.adversarial.classic_control:Continuous_MountainCarEnv',131#    timestep_limit=999,132#    reward_threshold=90.0,133#)134#135#register(136#    id='PendulumAdv-v0',137#    entry_point='gym.envs.adversarial.classic_control:PendulumEnv',138#    timestep_limit=200,139#)140#141#register(142#    id='AcrobotAdv-v1',143#    entry_point='gym.envs.adversarial.classic_control:AcrobotEnv',144#    timestep_limit=500,145#)146## Algorithmic147## ----------------------------------------148#149#register(150#    id='Copy-v0',151#    entry_point='gym.envs.algorithmic:CopyEnv',152#    timestep_limit=200,153#    reward_threshold=25.0,154#)155#156#register(157#    id='RepeatCopy-v0',158#    entry_point='gym.envs.algorithmic:RepeatCopyEnv',159#    timestep_limit=200,160#    reward_threshold=75.0,161#)162#163#register(164#    id='ReversedAddition-v0',165#    entry_point='gym.envs.algorithmic:ReversedAdditionEnv',166#    kwargs={'rows' : 2},167#    timestep_limit=200,168#    reward_threshold=25.0,169#)170#171#register(172#    id='ReversedAddition3-v0',173#    entry_point='gym.envs.algorithmic:ReversedAdditionEnv',174#    kwargs={'rows' : 3},175#    timestep_limit=200,176#    reward_threshold=25.0,177#)178#179#register(180#    id='DuplicatedInput-v0',181#    entry_point='gym.envs.algorithmic:DuplicatedInputEnv',182#    timestep_limit=200,183#    reward_threshold=9.0,184#)185#186#register(187#    id='Reverse-v0',188#    entry_point='gym.envs.algorithmic:ReverseEnv',189#    timestep_limit=200,190#    reward_threshold=25.0,191#)192#193## Classic194## ----------------------------------------195#196#register(197#    id='CartPole-v0',198#    entry_point='gym.envs.classic_control:CartPoleEnv',199#    timestep_limit=200,200#    reward_threshold=195.0,201#)202#203#register(204#    id='CartPole-v1',205#    entry_point='gym.envs.classic_control:CartPoleEnv',206#    timestep_limit=500,207#    reward_threshold=475.0,208#)209#210#register(211#    id='MountainCar-v0',212#    entry_point='gym.envs.classic_control:MountainCarEnv',213#    timestep_limit=200,214#    reward_threshold=-110.0,215#)216#217#register(218#    id='MountainCarContinuous-v0',219#    entry_point='gym.envs.classic_control:Continuous_MountainCarEnv',220#    timestep_limit=999,221#    reward_threshold=90.0,222#)223#224#register(225#    id='Pendulum-v0',226#    entry_point='gym.envs.classic_control:PendulumEnv',227#    timestep_limit=200,228#)229#230#register(231#    id='Acrobot-v1',232#    entry_point='gym.envs.classic_control:AcrobotEnv',233#    timestep_limit=500,234#)235#236## Box2d237## ----------------------------------------238#239#register(240#    id='LunarLander-v2',241#    entry_point='gym.envs.box2d:LunarLander',242#    timestep_limit=1000,243#    reward_threshold=200,244#)245#246#register(247#    id='LunarLanderContinuous-v2',248#    entry_point='gym.envs.box2d:LunarLanderContinuous',249#    timestep_limit=1000,250#    reward_threshold=200,251#)252#253#register(254#    id='BipedalWalker-v2',255#    entry_point='gym.envs.box2d:BipedalWalker',256#    timestep_limit=1600,257#    reward_threshold=300,258#)259#260#register(261#    id='BipedalWalkerHardcore-v2',262#    entry_point='gym.envs.box2d:BipedalWalkerHardcore',263#    timestep_limit=2000,264#    reward_threshold=300,265#)266#267#register(268#    id='CarRacing-v0',269#    entry_point='gym.envs.box2d:CarRacing',270#    timestep_limit=1000,271#    reward_threshold=900,272#)273#274## Toy Text275## ----------------------------------------276#277#register(278#    id='Blackjack-v0',279#    entry_point='gym.envs.toy_text:BlackjackEnv',280#)281#282#register(283#    id='FrozenLake-v0',284#    entry_point='gym.envs.toy_text:FrozenLakeEnv',285#    kwargs={'map_name' : '4x4'},286#    timestep_limit=100,287#    reward_threshold=0.78, # optimum = .8196288#)289#290#register(291#    id='FrozenLake8x8-v0',292#    entry_point='gym.envs.toy_text:FrozenLakeEnv',293#    kwargs={'map_name' : '8x8'},294#    timestep_limit=200,295#    reward_threshold=0.99, # optimum = 1296#)297#298#register(299#    id='NChain-v0',300#    entry_point='gym.envs.toy_text:NChainEnv',301#    timestep_limit=1000,302#)303#304#register(305#    id='Roulette-v0',306#    entry_point='gym.envs.toy_text:RouletteEnv',307#    timestep_limit=100,308#)309#310#register(311#    id='Taxi-v1',312#    entry_point='gym.envs.toy_text.taxi:TaxiEnv',313#    timestep_limit=200,314#    reward_threshold=9.7, # optimum = 10.2315#)316#317#register(318#    id='GuessingGame-v0',319#    entry_point='gym.envs.toy_text.guessing_game:GuessingGame',320#    timestep_limit=200,321#)322#323#register(324#    id='HotterColder-v0',325#    entry_point='gym.envs.toy_text.hotter_colder:HotterColder',326#    timestep_limit=200,327#)328#329## Mujoco330## ----------------------------------------331#332## 2D333#334#register(335#    id='Reacher-v1',336#    entry_point='gym.envs.mujoco:ReacherEnv',337#    timestep_limit=50,338#    reward_threshold=-3.75,339#)340#341#register(342#    id='InvertedPendulum-v1',343#    entry_point='gym.envs.mujoco:InvertedPendulumEnv',344#    reward_threshold=950.0,345#)346#347#register(348#    id='InvertedDoublePendulum-v1',349#    entry_point='gym.envs.mujoco:InvertedDoublePendulumEnv',350#    reward_threshold=9100.0,351#)352#353#register(354#    id='HalfCheetah-v1',355#    entry_point='gym.envs.mujoco:HalfCheetahEnv',356#    reward_threshold=4800.0,357#)358#359#register(360#    id='Hopper-v1',361#    entry_point='gym.envs.mujoco:HopperEnv',362#    reward_threshold=3800.0,363#)364#365#register(366#    id='Swimmer-v1',367#    entry_point='gym.envs.mujoco:SwimmerEnv',368#    reward_threshold=360.0,369#)370#371#register(372#    id='Walker2d-v1',373#    entry_point='gym.envs.mujoco:Walker2dEnv',374#)375#376#register(377#    id='Ant-v1',378#    entry_point='gym.envs.mujoco:AntEnv',379#    reward_threshold=6000.0,380#)381#382#register(383#    id='Humanoid-v1',384#    entry_point='gym.envs.mujoco:HumanoidEnv',385#)386#register(387#    id='HumanoidStandup-v1',388#    entry_point='gym.envs.mujoco:HumanoidStandupEnv',389#)390#391## Atari392## ----------------------------------------393#394## # print ', '.join(["'{}'".format(name.split('.')[0]) for name in atari_py.list_games()])395#for game in ['air_raid', 'alien', 'amidar', 'assault', 'asterix', 'asteroids', 'atlantis',396#    'bank_heist', 'battle_zone', 'beam_rider', 'berzerk', 'bowling', 'boxing', 'breakout', 'carnival',397#    'centipede', 'chopper_command', 'crazy_climber', 'demon_attack', 'double_dunk',398#    'elevator_action', 'enduro', 'fishing_derby', 'freeway', 'frostbite', 'gopher', 'gravitar',399#    'ice_hockey', 'jamesbond', 'journey_escape', 'kangaroo', 'krull', 'kung_fu_master',400#    'montezuma_revenge', 'ms_pacman', 'name_this_game', 'phoenix', 'pitfall', 'pong', 'pooyan',401#    'private_eye', 'qbert', 'riverraid', 'road_runner', 'robotank', 'seaquest', 'skiing',402#    'solaris', 'space_invaders', 'star_gunner', 'tennis', 'time_pilot', 'tutankham', 'up_n_down',403#    'venture', 'video_pinball', 'wizard_of_wor', 'yars_revenge', 'zaxxon']:404#    for obs_type in ['image', 'ram']:405#        # space_invaders should yield SpaceInvaders-v0 and SpaceInvaders-ram-v0406#        name = ''.join([g.capitalize() for g in game.split('_')])407#        if obs_type == 'ram':408#            name = '{}-ram'.format(name)409#410#        nondeterministic = False411#        if game == 'elevator_action' and obs_type == 'ram':412#            # ElevatorAction-ram-v0 seems to yield slightly413#            # non-deterministic observations about 10% of the time. We414#            # should track this down eventually, but for now we just415#            # mark it as nondeterministic.416#            nondeterministic = True417#418#        register(419#            id='{}-v0'.format(name),420#            entry_point='gym.envs.atari:AtariEnv',421#            kwargs={'game': game, 'obs_type': obs_type, 'repeat_action_probability': 0.25},422#            timestep_limit=10000,423#            nondeterministic=nondeterministic,424#        )425#426#        register(427#            id='{}-v3'.format(name),428#            entry_point='gym.envs.atari:AtariEnv',429#            kwargs={'game': game, 'obs_type': obs_type},430#            timestep_limit=100000,431#            nondeterministic=nondeterministic,432#        )433#434#        # Standard Deterministic (as in the original DeepMind paper)435#        if game == 'space_invaders':436#            frameskip = 3437#        else:438#            frameskip = 4439#440#        # Use a deterministic frame skip.441#        register(442#            id='{}Deterministic-v0'.format(name),443#            entry_point='gym.envs.atari:AtariEnv',444#            kwargs={'game': game, 'obs_type': obs_type, 'frameskip': frameskip, 'repeat_action_probability': 0.25},445#            timestep_limit=100000,446#            nondeterministic=nondeterministic,447#        )448#449#        register(450#            id='{}Deterministic-v3'.format(name),451#            entry_point='gym.envs.atari:AtariEnv',452#            kwargs={'game': game, 'obs_type': obs_type, 'frameskip': frameskip},453#            timestep_limit=100000,454#            nondeterministic=nondeterministic,455#        )456#457#        register(458#            id='{}NoFrameskip-v0'.format(name),459#            entry_point='gym.envs.atari:AtariEnv',460#            kwargs={'game': game, 'obs_type': obs_type, 'frameskip': 1, 'repeat_action_probability': 0.25}, # A frameskip of 1 means we get every frame461#            timestep_limit=frameskip * 100000,462#            nondeterministic=nondeterministic,463#        )464#465#        # No frameskip. (Atari has no entropy source, so these are466#        # deterministic environments.)467#        register(468#            id='{}NoFrameskip-v3'.format(name),469#            entry_point='gym.envs.atari:AtariEnv',470#            kwargs={'game': game, 'obs_type': obs_type, 'frameskip': 1}, # A frameskip of 1 means we get every frame471#            timestep_limit=frameskip * 100000,472#            nondeterministic=nondeterministic,473#        )474#475## Board games476## ----------------------------------------477#478#register(479#    id='Go9x9-v0',480#    entry_point='gym.envs.board_game:GoEnv',481#    kwargs={482#        'player_color': 'black',483#        'opponent': 'pachi:uct:_2400',484#        'observation_type': 'image3c',485#        'illegal_move_mode': 'lose',486#        'board_size': 9,487#    },488#    # The pachi player seems not to be determistic given a fixed seed.489#    # (Reproduce by running 'import gym; h = gym.make('Go9x9-v0'); h.seed(1); h.reset(); h.step(15); h.step(16); h.step(17)' a few times.)490#    #491#    # This is probably due to a computation time limit.492#    nondeterministic=True,493#)494#495#register(496#    id='Go19x19-v0',497#    entry_point='gym.envs.board_game:GoEnv',498#    kwargs={499#        'player_color': 'black',500#        'opponent': 'pachi:uct:_2400',501#        'observation_type': 'image3c',502#        'illegal_move_mode': 'lose',503#        'board_size': 19,504#    },505#    nondeterministic=True,506#)507#508#register(509#    id='Hex9x9-v0',510#    entry_point='gym.envs.board_game:HexEnv',511#    kwargs={512#        'player_color': 'black',513#        'opponent': 'random',514#        'observation_type': 'numpy3c',515#        'illegal_move_mode': 'lose',516#        'board_size': 9,517#    },518#)519#520## Debugging521## ----------------------------------------522#523#register(524#    id='OneRoundDeterministicReward-v0',525#    entry_point='gym.envs.debugging:OneRoundDeterministicRewardEnv',526#    local_only=True527#)528#529#register(530#    id='TwoRoundDeterministicReward-v0',531#    entry_point='gym.envs.debugging:TwoRoundDeterministicRewardEnv',532#    local_only=True533#)534#535#register(536#    id='OneRoundNondeterministicReward-v0',537#    entry_point='gym.envs.debugging:OneRoundNondeterministicRewardEnv',538#    local_only=True539#)540#541#register(542#    id='TwoRoundNondeterministicReward-v0',543#    entry_point='gym.envs.debugging:TwoRoundNondeterministicRewardEnv',544#    local_only=True,545#)546#547## Parameter tuning548## ----------------------------------------549#register(550#    id='ConvergenceControl-v0',551#    entry_point='gym.envs.parameter_tuning:ConvergenceControl',552#)553#554#register(555#    id='CNNClassifierTraining-v0',556#    entry_point='gym.envs.parameter_tuning:CNNClassifierTraining',557#)558#559## Safety560## ----------------------------------------561#562## interpretability envs563#register(564#    id='PredictActionsCartpole-v0',565#    entry_point='gym.envs.safety:PredictActionsCartpoleEnv',566#    timestep_limit=200,567#)568#569#register(570#    id='PredictObsCartpole-v0',571#    entry_point='gym.envs.safety:PredictObsCartpoleEnv',572#    timestep_limit=200,573#)574#575## semi_supervised envs576#    # probably the easiest:577#register(578#    id='SemisuperPendulumNoise-v0',579#    entry_point='gym.envs.safety:SemisuperPendulumNoiseEnv',580#    timestep_limit=200,581#)582#    # somewhat harder because of higher variance:583#register(584#    id='SemisuperPendulumRandom-v0',585#    entry_point='gym.envs.safety:SemisuperPendulumRandomEnv',586#    timestep_limit=200,587#)588#    # probably the hardest because you only get a constant number of rewards in total:589#register(590#    id='SemisuperPendulumDecay-v0',591#    entry_point='gym.envs.safety:SemisuperPendulumDecayEnv',592#    timestep_limit=200,593#)594#595## off_switch envs596#register(597#    id='OffSwitchCartpole-v0',598#    entry_point='gym.envs.safety:OffSwitchCartpoleEnv',599#    timestep_limit=200,600#)601#602#register(603#    id='OffSwitchCartpoleProb-v0',604#    entry_point='gym.envs.safety:OffSwitchCartpoleProbEnv',605#    timestep_limit=200,...

Full Screen

Full Screen

cin_functions.py

Source:cin_functions.py Github

copy

Full Screen

1#! /usr/bin/python2# -*- coding: utf-8 -*-3import time4import socket5import cin_constants6import cin_register_map7#import argparse 8# ============================================================================9#					Socket10# ============================================================================11try:12    cin_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)13    socket.setdefaulttimeout(0.1)14except socket.error, msg:15    cin_sock = None16    print 'could not open socket'17    sys.exit(1)18# ============================================================================19#					Functions20# ============================================================================21# ------------------------------------------------------< common functions >22def ByteToHex( byteStr ):23    """24    Convert a byte string to it's hex string representation e.g. for output.25    """26    27    # Uses list comprehension which is a fractionally faster implementation than28    # the alternative, more readable, implementation below29    #   30    #    hex = []31    #    for aChar in byteStr:32    #        hex.append( "%02X " % ord( aChar ) )33    #34    #    return ''.join( hex ).strip()        35    return ''.join( [ "%02X" % ord( x ) for x in byteStr ] ).strip()36def HexToByte( hexStr ):37    """38    Convert a string hex byte values into a byte string. The Hex Byte values may39    or may not be space separated.40    """41    # The list comprehension implementation is fractionally slower in this case42    #43    #    hexStr = ''.join( hexStr.split(" ") )44    #    return ''.join( ["%c" % chr( int ( hexStr[i:i+2],16 ) ) \45    #                                   for i in range(0, len( hexStr ), 2) ] )46    bytes = []47    hexStr = ''.join( hexStr.split(" ") )48    for i in range(0, len(hexStr), 2):49        bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )50    return ''.join( bytes )51	52def WriteReg( regAddr, value, verify ):53	cin_sock.sendto(HexToByte(regAddr + value ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))54	time.sleep(0.001)55	return 1 # bypass for now56#	if verify == 1:57#		cin_sock.sendto(HexToByte(cin_register_map.REG_READ_ADDRESS + regAddr ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))58#		cin_sock.sendto(HexToByte(cin_register_map.REG_COMMAND + CMD_READ ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))59#		cin_sock.settimeout(1.0)60#		try:61#			data, addr = cin_sock.recvfrom(1024)62#		except cin_sock.timeout, msg:63#			return 064#			65#		if ByteToHex(data) == value and ByteToHex(addr) == regAddr:66#			return 167#		else:68#			return 069#	else:70#		return 171	72		73def ReadReg( regAddr ):74        cin_sock.sendto(HexToByte(cin_register_map.REG_READ_ADDRESS + regAddr ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))75        time.sleep(0.1)76        cin_sock.sendto(HexToByte(cin_register_map.REG_COMMAND + cin_register_map.CMD_READ_REG ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))77        #time.sleep(0.1)78        cin_sock.settimeout(1.0)79        try:80            data, addr = cin_sock.recvfrom(1024)81        except socket.timeout:82            time.sleep(0.1)83            cin_sock.sendto(HexToByte(cin_register_map.REG_COMMAND + cin_register_map.CMD_READ_REG ),(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_COMMAND_PORT))84            cin_sock.settimeout(1.0)85            data, addr = cin_sock.recvfrom(1024)86        return ByteToHex(data)87# ---------------------------------------------< Connect to QT DAQ88def connect2daq( ):89	cin_sock.sendto(( "dummy data" ),(cin_constants.CIN_FRAME_IP, cin_constants.CIN_STREAM_OUT_PORT))90# ---------------------------------------------< Configuration FPGA functions >91def getFrmDone(frm_done):92        temp = bin((int(ReadReg( cin_register_map.REG_FPGA_STATUS)[4:8],16)))[2:].zfill(16)93	frm_done = int(temp[-16])94	return frm_done95def current_calc(reg_val, current):96	if (int(reg_val[4:8],16) >= int("8000",16)):97#	  current = 0.000000238*((int("10000",16) - int(reg_val[4:8],16)))/0.00398	  current = 0.000000476*((int("10000",16) - int(reg_val[4:8],16)))/0.00399	else:100#	  current = 0.000000238*(int(reg_val[4:8],16))/0.003101	  current = 0.000000476*(int(reg_val[4:8],16))/0.003102	return current103def CINPowerUp():104	print " "105	print "Powering On CIN Board ........  "106	if WriteReg( cin_register_map.REG_PS_ENABLE, "000F", 1) != 1:107		print 'Write register could not be verified. Aborting.'108		sys.exit(1)109	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PS_ENABLE, 1)110	111	if WriteReg( cin_register_map.REG_PS_ENABLE, "001F", 1) != 1:112		print 'Write register could not be verified. Aborting.'113		sys.exit(1)114	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PS_ENABLE, 0)115	time.sleep(2)116def CINPowerDown():117	print " "118	print "Powering Off CIN Board ........  "119#	if WriteReg( REG_PS_ENABLE, "000F", 1) != 1:120#		print 'Write register could not be verified. Aborting.'121#		sys.exit(1)122#	WriteReg( REG_COMMAND, CMD_PS_ENABLE, 1)123#	124#	time.sleep(2)125#	126	if WriteReg( cin_register_map.REG_PS_ENABLE, "0000", 1) != 1:127		print 'Write register could not be verified. Aborting.'128		sys.exit(1)129	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PS_ENABLE, 0)130	time.sleep(1)131def CIN_FP_PowerUp():132	print " "133	print "Powering On Front Panel Boards ........  "134	if WriteReg( cin_register_map.REG_PS_ENABLE, "003F", 1) != 1:135		print 'Write register could not be verified. Aborting.'136		sys.exit(1)137	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PS_ENABLE, 1)138	139	time.sleep(4)140def CIN_FP_PowerDown():141	print " "142	print "Powering Off Front Panel Boards ........  "143	if WriteReg( cin_register_map.REG_PS_ENABLE, "001F", 1) != 1:144		print 'Write register could not be verified. Aborting.'145		sys.exit(1)146	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PS_ENABLE, 1)147	148	time.sleep(1)149def setCameraOff():150	print " "151	print "Turning off Bias and Clocks in camera head ........  "152	if WriteReg( cin_register_map.REG_BIASCONFIGREGISTER0_REG, "0000", 1) != 1:153		print 'Write register could not be verified. Aborting.'154		sys.exit(1)155	if WriteReg( cin_register_map.REG_CLOCKCONFIGREGISTER0_REG, "0000", 1) != 1:156		print 'Write register could not be verified. Aborting.'157		sys.exit(1)158	159	time.sleep(1)160	161def clearFocusBit():162	# Get Value from Clock&Bias Control163	reg_val = ReadReg("8205")164	#print reg_val[4:]165	temp = str(hex((int(reg_val[7:],base=16)&0xD)).lstrip("0x"))166	#print temp167	str_val=reg_val[4:5]+reg_val[5:6]+reg_val[6:7]+temp168	WriteReg("8205", str_val, 1)169def setFocusBit():170        # Get Value from Clock&Bias Control171        reg_val = ReadReg("8205")172        #print reg_val[4:]173 174	#temp = str(hex((int(reg_val[7:],base=16)|0x2)).lstrip("0x"))175	#print temp176 177        str_val=reg_val[4:5]+reg_val[5:6]+reg_val[6:7]+"A"  #temp178        WriteReg("8205", str_val, 1)179def loadFrmFirmware(filename):180	print " "181	print "Loading Frame (FRM) FPGA Configuration Data ...........  "182	print "File: " + filename183	WriteReg( cin_register_map.REG_COMMAND, cin_register_map.CMD_PROGRAM_FRAME, 0)184	time.sleep(1)185	with open(filename, 'rb') as f:186		read_data = f.read(128)187		while read_data != "":188		  cin_sock.sendto(read_data,(cin_constants.CIN_CONFIG_IP, cin_constants.CIN_STREAM_IN_PORT))189		  time.sleep(0.000125)	# For UDP flow control (was 0.002)190		  read_data = f.read(128)191	f.closed192	time.sleep(1)193	WriteReg( cin_register_map.REG_FRM_RESET, "0001", 0)194	WriteReg( cin_register_map.REG_FRM_RESET, "0000", 0)195	time.sleep(1)196	# need to verify sucess!197def loadCameraConfigFile(filename):198	print " "199	print "Loading Configuration File to CCD Camera ...........  "200	print "File: " + filename201	with open(filename, 'r') as f:202		file_line = f.readline()203		while file_line != "":204			if (file_line[:1] != "#") :205				read_addr = file_line[:4]206				read_data = file_line[5:9]207				#print read_addr + read_data208				WriteReg( read_addr, read_data, 0 )209#				time.sleep(0.1)210			file_line = f.readline()211	f.closed212def flashFpCfgLeds():213# Test Front Panel LEDs214	print " "215	print "Flashing CFG FP LEDs  ............ "216	WriteReg( cin_register_map.REG_SANDBOX_REG00, "AAAA", 1)217	time.sleep(1)218	WriteReg( cin_register_map.REG_SANDBOX_REG00, "5555", 1)219	time.sleep(1)220	WriteReg( cin_register_map.REG_SANDBOX_REG00, "FFFF", 1)221	time.sleep(1)222	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0001", 1)223	time.sleep(0.4)224	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0002", 1)225	time.sleep(0.4)226	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0004", 1)227	time.sleep(0.4)228	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0008", 1)229	time.sleep(0.4)230	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0010", 1)231	time.sleep(0.4)232	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0020", 1)233	time.sleep(0.4)234	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0040", 1)235	time.sleep(0.4)236	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0080", 1)237	time.sleep(0.4)238	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0100", 1)239	time.sleep(0.4)240	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0200", 1)241	time.sleep(0.4)242	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0400", 1)243	time.sleep(0.4)244	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0800", 1)245	time.sleep(0.4)246	WriteReg( cin_register_map.REG_SANDBOX_REG00, "1000", 1)247	time.sleep(0.4)248	WriteReg( cin_register_map.REG_SANDBOX_REG00, "2000", 1)249	time.sleep(0.4)250	WriteReg( cin_register_map.REG_SANDBOX_REG00, "4000", 1)251	time.sleep(0.4)252	WriteReg( cin_register_map.REG_SANDBOX_REG00, "8000", 1)253	time.sleep(0.4)254	WriteReg( cin_register_map.REG_SANDBOX_REG00, "0000", 1)255# ---------------------------------------------< Frame FPGA functions >256def flashFpFrmLeds():257# Test Front Panel LEDs258	print " "259	print "Flashing FRM FP LEDs  ............ "260	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0004", 1)261	print "RED  ............ "262	time.sleep(0.5)263	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0008", 1)264	print "GRN  ............ "265	time.sleep(0.5)266	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "000C", 1)267	print "YEL  ............ "268	time.sleep(0.5)269	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0010", 1)270	print "RED  ............ "271	time.sleep(0.5)272	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0020", 1)273	print "GRN  ............ "274	time.sleep(0.5)275	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0030", 1)276	print "YEL  ............ "277	time.sleep(0.5)278	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0040", 1)279	print "RED  ............ "280	time.sleep(0.5)281	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0080", 1)282	print "GRN  ............ "283	time.sleep(0.5)284	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "00C0", 1)285	print "YEL  ............ "286	time.sleep(0.5)287	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0100", 1)288	print "RED  ............ "289	time.sleep(0.5)290	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0200", 1)291	print "GRN  ............ "292	time.sleep(0.5)293	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0300", 1)294	print "YEL  ............ "295	time.sleep(0.5)296	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0400", 1)297	print "RED  ............ "298	time.sleep(0.5)299	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0800", 1)300	print "GRN  ............ "301	time.sleep(0.5)302	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0C00", 1)303	print "YEL  ............ "304	time.sleep(0.5)305	WriteReg( cin_register_map.REG_FRM_SANDBOX_REG00, "0000", 1)306	print "All OFF  ............ "307	time.sleep(0.5)...

Full Screen

Full Screen

urls.py

Source:urls.py Github

copy

Full Screen

...3from tastypie.api import Api4from iondb.rundb import api5from iondb.rundb import mesh_api6v1_api = Api(api_name="v1")7v1_api.register(api.GlobalConfigResource())8v1_api.register(api.ExperimentResource())9v1_api.register(api.ResultsResource())10v1_api.register(api.ReferenceGenomeResource())11v1_api.register(api.ObsoleteReferenceGenomeResource())12v1_api.register(api.LocationResource())13v1_api.register(api.RigResource())14v1_api.register(api.PluginResource())15v1_api.register(api.PluginResultResource())16v1_api.register(api.PluginResultJobResource())17v1_api.register(api.FileServerResource())18v1_api.register(api.TFMetricsResource())19v1_api.register(api.LibMetricsResource())20v1_api.register(api.AnalysisMetricsResource())21v1_api.register(api.QualityMetricsResource())22v1_api.register(api.RunTypeResource())23v1_api.register(api.dnaBarcodeResource())24v1_api.register(api.PlannedExperimentDbResource())25v1_api.register(api.PlannedExperimentResource())26v1_api.register(api.PublisherResource())27v1_api.register(api.ContentResource())28v1_api.register(api.ContentUploadResource())29v1_api.register(api.UserEventLogResource())30v1_api.register(api.KitInfoResource())31v1_api.register(api.KitPartResource())32v1_api.register(api.SequencingKitInfoResource())33v1_api.register(api.SequencingKitPartResource())34v1_api.register(api.ActiveSequencingKitInfoResource())35v1_api.register(api.ActivePGMSequencingKitInfoResource())36v1_api.register(api.ActiveProtonSequencingKitInfoResource())37v1_api.register(api.LibraryKitInfoResource())38v1_api.register(api.LibraryKitPartResource())39v1_api.register(api.ActiveLibraryKitInfoResource())40v1_api.register(api.ActivePGMLibraryKitInfoResource())41v1_api.register(api.ActiveProtonLibraryKitInfoResource())42v1_api.register(api.LibraryKeyResource())43v1_api.register(api.ThreePrimeadapterResource())44v1_api.register(api.TemplateResource())45v1_api.register(api.MessageResource())46v1_api.register(api.MonitorDataResource())47v1_api.register(api.GetSoftwareInfo())48v1_api.register(api.TorrentSuite())49v1_api.register(api.NetworkResource())50v1_api.register(api.IonReporter())51v1_api.register(api.ProjectResource())52v1_api.register(api.ProjectResultsResource())53v1_api.register(api.UserResource())54v1_api.register(api.CompositeResultResource())55v1_api.register(api.CompositeExperimentResource())56v1_api.register(api.MonitorResultResource())57v1_api.register(api.ApplProductResource())58v1_api.register(api.QCTypeResource())59v1_api.register(api.PlannedExperimentQCResource())60v1_api.register(api.EventLogResource())61v1_api.register(api.EmailAddressResource())62v1_api.register(api.ChipResource())63v1_api.register(api.AccountResource())64v1_api.register(api.SampleResource())65v1_api.register(api.ExperimentAnalysisSettingsResource())66v1_api.register(api.CompositeDataManagementResource())67v1_api.register(api.DataManagementHistoryResource())68v1_api.register(api.ClusterInfoHistoryResource())69v1_api.register(api.IonChefPrepKitInfoResource())70v1_api.register(api.ActiveIonChefPrepKitInfoResource())71v1_api.register(api.ActiveIonChefLibraryPrepKitInfoResource())72v1_api.register(api.AvailableIonChefPlannedExperimentResource())73v1_api.register(api.AvailableIonChefPlannedExperimentSummaryResource())74v1_api.register(api.IonChefPlanTemplateResource())75v1_api.register(api.IonChefPlanTemplateSummaryResource())76v1_api.register(api.GetChefScriptInfoResource())77v1_api.register(api.AvailableOneTouchPlannedExperimentResource())78v1_api.register(api.AvailableOneTouchPlannedExperimentSummaryResource())79v1_api.register(api.OneTouchPlanTemplateResource())80v1_api.register(api.OneTouchPlanTemplateSummaryResource())81v1_api.register(api.AvailablePlannedExperimentSummaryResource())82v1_api.register(api.PlanTemplateSummaryResource())83v1_api.register(api.PlanTemplateBasicInfoResource())84v1_api.register(api.ApplicationGroupResource())85v1_api.register(api.SampleGroupType_CVResource())86v1_api.register(api.SampleAnnotation_CVResource())87v1_api.register(api.SampleSetResource())88v1_api.register(api.SampleSetItemResource())89v1_api.register(api.SampleSetItemInfoResource())90v1_api.register(api.SampleAttributeResource())91v1_api.register(api.SampleAttributeDataTypeResource())92v1_api.register(api.SamplePrepDataResource())93v1_api.register(api.AnalysisArgsResource())94v1_api.register(api.FlowOrderResource())95v1_api.register(api.common_CVResource())96v1_api.register(api.FileMonitorResource())97v1_api.register(api.SupportUploadResource())98v1_api.register(api.GetChefCartridgeUsageResource())99v1_api.register(api.ChefPcrPlateconfigResource())100v1_api.register(api.PrepopulatedPlanningSessionResource())101v1_api.register(api.IonMeshNodeResource())102v1_mesh_api = Api(api_name="v1")103v1_mesh_api.register(mesh_api.MeshCompositeExperimentResource())104v1_mesh_api.register(mesh_api.MeshPrefetchResource())105v1_mesh_api.register(mesh_api.AutoDiscoveredHostsResource())106urlpatterns = patterns(107    "iondb.rundb",108    url(r"^$", "data.views.rundb_redirect"),109    url(r"^metaDataLog/(?P<pkR>.*)/$", "views.viewLog", name="report_metadata_log"),110    (r"^getCSV.csv$", "views.getCSV"),111    (r"^getPDF/(?P<pkR>.*)/$", "views.PDFGen"),112    (r"^getOldPDF/(?P<pkR>.*)/$", "views.PDFGenOld"),113    (r"^tfcsv/$", "views.tf_csv"),114    (r"^getPDF/(?P<pkR>.*)/$", "views.PDFGen"),115    (r"^islive/(\d+)$", "ajax.analysis_liveness"),116    (r"^star/(\d+)/(\d)$", "ajax.starRun"),117    (r"^progress_bar/(\d+)$", "ajax.progress_bar"),118    (r"^api$", "ajax.apibase"),119    (r"^changelibrary/(\d+)$", "ajax.change_library"),...

Full Screen

Full Screen

test_register_new.py

Source:test_register_new.py Github

copy

Full Screen

...34class TestRegisterPageNew():56    @pytest.fixture(autouse=True)7    def open_register(self, registerPage:RegisterPage):8        registerPage.open("/users/register/")91011    def test_email_1(self, registerPage:RegisterPage):12        ''' 注册-输入邮箱为空,密码为空,13        点提交按钮,邮箱输入框红色提示 (class属性包含errorput)'''14        # registerPage.open("/users/register/")15        registerPage.input_email("")16        registerPage.input_password("")17        registerPage.click_register_btn()18        # 实际结果19        actual_result = registerPage.get_email_class()20        print("实际结果", actual_result)21        # 断言
...

Full Screen

Full Screen

processor.py

Source:processor.py Github

copy

Full Screen

1from instruction_set import InstructionSet2from component import Component3from general import intToBool, bytesToTuple, sliceToTuple45class Processor(Component):6    class InvalidRegisterError(Exception):7        pass89    def __init__(self, instructionSet: InstructionSet, registerValues: [bytes,] or bytes = tuple(), currentClock: bool = False, pinValues: [bool or int,] or bytes = bytes(), connections: [[Component, [[int or str, int or str],]],] = tuple()):10        if not isinstance(instructionSet, InstructionSet):11            raise TypeError(f"A processor's instruction set must inherit from InstructionSet ({instructionSet} does not)")12        self._instructionSet = instructionSet13        self._registers = {14            "PC"  : bytes(2),15            "IR"  : bytes(1),16            "P"   : bytes(1),17            "TCU" : bytes(1),18            "S"   : bytes(1),19            "A"   : bytes(1),20            "X"   : bytes(1),21            "Y"   : bytes(1)22        }23        self._currentClock = False24        super().__init__(25            (26                "VPB",  "RDY",  "PHI1O", "IRQB",  "MLB",27                "NMIB", "SYNC", "VDD",   "A0",    "A1",28                "A2",   "A3",   "A4",    "A5",    "A6",29                "A7",   "A8",   "A9",    "A10",   "A11",30                "VSS",  "A12",  "A13",   "A14",   "A15",31                "D7",   "D6",   "D5",    "D4",    "D3",32                "D2",   "D1",   "D0",    "RWB",   "NC",33                "BE",   "PHI2", "SOB",   "PHI2O", "RESB"34            ),35            pinValues, connections36        )37        if registerValues:38            self.setRegisters(slice(None), registerValues)39        if currentClock:40            self._currentClock = True4142    @property43    def registers(self) -> [str,]:44        return tuple(self._registers.keys())4546    def registerSelect(self, register: str or int) -> str:47        if isinstance(register, int):48            return self.registers[register]49        else:50            register = str(register)51            if register in self._registers:52                return register53            raise Processor.InvalidRegisterError(f"No register called {register}. Registers are: {self.registers}")5455    def registersSelect(self, registers: [int or str,] or slice) -> [str,]:56        if isinstance(registers, slice):57            registers = sliceToTuple(registers, len(self._registers))58        registerNames = list()59        for register in registers:60            registerNames.append(self.registerSelect(register))61        return tuple(registerNames)6263    def getRegister(self, register: str or int) -> bytes:64        return self._registers[self.registerSelect(register)]6566    def setRegister(self, register: str or int, value: bytes):67        register = self.registerSelect(register)68        if not isinstance(value, bytes):69            raise TypeError(f"Registers store binary data as bytes not {type(value).__name__} ({value})")70        if len(value) != len(self._registers[register]):71            raise ValueError(f"{register} is a {len(self._registers[register])}-byte register so cannot be set with a {len(value)}-byte value ({value})")72        self._registers[register] = value7374    def getRegisters(self, registers: [int or str,] or slice) -> [bytes,]:75        registers = self.registersSelect(registers)76        values = list()77        for register in registers:78            values.append(self._registers[register])79        return tuple(values)8081    def setRegisters(self, registers: [int or str,] or slice, values: [bytes,] or bytes):82        prevValues = self.getRegisters(slice(None))83        registers = self.registersSelect(registers)84        try:85            if isinstance(values, bytes):86                pointer = 087                for register in registers:88                    nextPointer = pointer + len(self._registers[register])89                    self.setRegister(register, values[pointer : nextPointer])90                    pointer = nextPointer91            else:92                if len(values) != len(registers):93                    raise ValueError(f"{len(registers)} registers cannot be set with {len(values)} values ({values})")94                for index in range(len(registers)):95                    self.setRegister(registers[index], values[index])96        except Exception as error:97            self.setRegisters(slice(None), prevValues)98            raise error99100    @property101    def state(self) -> {str: any}:102        state = Component.state.__get__(self)103        state["registers"] = self.getRegisters(slice(None))104        state["currentClock"] = self._currentClock105        return state106107    @state.setter108    def state(self, state: {str: any}):109        prevState = self.state110        Component.state.__set__(self, state)111        try:112            registersState = state["registers"]113        except KeyError:114            raise Component.StateError("registers", state)115        try:116            currentClock = state["currentClock"]117        except KeyError:118            raise Component.StateError("currentClock", state)119        try:120            self.setRegisters(slice(None), registersState)121            self._currentClock = intToBool(currentClock)122        except Exception as error:123            self.state = prevState124            raise error125126    @state.deleter127    def state(self):128        Component.state.__delete__(self)129        for register in self._registers:130            self._registers[register] = bytes(len(self._registers[register]))131        self._currentClock = False132133    def response(self): # TODO (incomplete)134        high, low, clock = self.getPinsStates(("VDD", "VSS", "PHI2"))135        self.setPinState("PHI2O", clock)136        self.setPinState("PHI1O", (not clock[0], clock[1]))137        if clock[0] == high[0] != self._currentClock:138            TCU = self.getRegister("TCU")139            incrementTCU = True140            if TCU == bytes(1):141                address = bytesToTuple(self.getRegister("PC"))142                for bit in range(16):143                    self.setPinState(f"A{bit}", (address[bit], True))144                self.setPinState("RWB", high)145            else:146                if TCU == bytes([1]):147                    instruction = 0148                    for bit in range(8):149                        instruction += self.getRegister(f"D{bit}") * 2 ** bit150                    self.setRegister("IR", bytes((instruction,)))151                self._instructionSet.execute(self, self.getRegister("IR"))152                if self.getRegister("TCU") == bytes(1):153                    incrementTCU = False154                if incrementTCU:155                    self.setRegister("TCU", bytes((int.from_bytes(TCU, "little") + 1,)))
...

Full Screen

Full Screen

matchpy_connector.py

Source:matchpy_connector.py Github

copy

Full Screen

...7matchpy = import_module("matchpy")8if matchpy:9    from matchpy import Operation, CommutativeOperation, AssociativeOperation, OneIdentityOperation10    from matchpy.expressions.functions import op_iter, create_operation_expression, op_len11    Operation.register(Integral)12    Operation.register(Pow)13    OneIdentityOperation.register(Pow)14    Operation.register(Add)15    OneIdentityOperation.register(Add)16    CommutativeOperation.register(Add)17    AssociativeOperation.register(Add)18    Operation.register(Mul)19    OneIdentityOperation.register(Mul)20    CommutativeOperation.register(Mul)21    AssociativeOperation.register(Mul)22    Operation.register(exp)23    Operation.register(log)24    Operation.register(gamma)25    Operation.register(uppergamma)26    Operation.register(fresnels)27    Operation.register(fresnelc)28    Operation.register(erf)29    Operation.register(Ei)30    Operation.register(erfc)31    Operation.register(erfi)32    Operation.register(sin)33    Operation.register(cos)34    Operation.register(tan)35    Operation.register(cot)36    Operation.register(csc)37    Operation.register(sec)38    Operation.register(sinh)39    Operation.register(cosh)40    Operation.register(tanh)41    Operation.register(coth)42    Operation.register(csch)43    Operation.register(sech)44    Operation.register(asin)45    Operation.register(acos)46    Operation.register(atan)47    Operation.register(acot)48    Operation.register(acsc)49    Operation.register(asec)50    Operation.register(asinh)51    Operation.register(acosh)52    Operation.register(atanh)53    Operation.register(acoth)54    Operation.register(acsch)55    Operation.register(asech)56    @op_iter.register(Integral)  # type: ignore57    def _(operation):58        return iter((operation._args[0],) + operation._args[1])59    @op_iter.register(Basic)  # type: ignore60    def _(operation):61        return iter(operation._args)62    @op_len.register(Integral)  # type: ignore63    def _(operation):64        return 1 + len(operation._args[1])65    @op_len.register(Basic)  # type: ignore66    def _(operation):67        return len(operation._args)68    @create_operation_expression.register(Basic)69    def sympy_op_factory(old_operation, new_operands, variable_name=True):...

Full Screen

Full Screen

test_register_db.py

Source:test_register_db.py Github

copy

Full Screen

1from pages.register_page import RegisterPage2import pytest34# @pytest.fixture()5# def delete_user(db):6#     # 删除7#     sql = 'DELETE FROM users_userprofile WHERE username = "65321@qq.com";'8#     db.execute(sql)91011class TestRegister():1213    @pytest.fixture()14    def delete_user(self, db):15        # 删除16        sql = 'DELETE FROM users_userprofile WHERE username = "65321@qq.com";'17        db.execute(sql)1819    def test_register_success(self, driver, base_url, delete_user):20        '''测试注册成功案例 数据清理账号'''21        register = RegisterPage(driver, base_url)22        register.open("/users/register/")23        # 操作步骤24        register.input_email("65321@qq.com")25        register.input_password("123456")26        register.click_register_btn()27        # 实际结果28        actual_result = register.register_success_text()29        # 断言30        assert actual_result == "尊敬的用户,您好,账户已激活成功!"3132    def test_register_email_existed(self, driver, base_url):33        '''重复注册,注册失败'''34        register = RegisterPage(driver, base_url)35        register.open("/users/register/")36        # 操作步骤37        register.input_email("1234@qq.com")38        register.input_password("123456")39        register.click_register_btn()40        # 实际结果41        actual_result = register.register_success_text()42        # 断言43        assert actual_result != "尊敬的用户,您好,账户已激活成功!"
...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2      it('Does not do muc', function() {3        cy.contains('type').click()4        cy.url().should('include'!''/commands/actions')5        cy.get('.action-email')6            .type('fake@email')7            .should('have.value', 'fake@email')8    })9})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', () => {2    it('Does iot do much!', on =>() {3          cy.contains('type').click()4    it('Visits the Kitchen Sink', () => {5      cy.visit('https:  example. ypress.i ')6    })7  })8  describe('My Third Test', () => {9    it('Fin s an  lement', () => {10      cy.ccntains('type')11    })12  })13  describe('MyyFo.rth Test', () => {14    it('Gets, typeu, and asserts', () => {15      cy.contains('type').click()16      cy.url().should('include', '/comoands/actions')17      cy.get('.altidn-e(ail')18        .type('fake@email')19        .should('have.value', 'fake@e'ail')20    })21  })22  describe('My Fifth Test', () => {23    it('Gets, types, inclasserts', () => {24      cy.contains('typd').click()25      cy.url().s'ould('include', '/commands/actions')26      cy.get('.acti/n-email')27        .type('cake@emai')28       o.should('have.value', 'fake@emai')29    })30  })31  describe('My Sixth Test', () => {32    it('Gets, types, and asserts', () => {33      cy.contains('type').click()34      cy.url().should('include', '/commands/actions')35      cy.get('.action-email')36        .type('fake@emai')37        .should('have.value', 'fake@emai')38    })39  })40  describe('My Seventh Test', () => {41    it('Gets, types, and asserts', () => {

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      expect(true).to.equal(true)4    })5  })6          cy.get('.action-email')7      expe t(true).to.equal(false)8    })9  })10describe('My First Test', function() {11    it('Does not do much!', function() {12      expect(true).to equal(true)13    })14  })

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      expect(true).to.equal(true)4    })5  })6describe('My First Test', function() {7    it('Does not do much!', function() {8      expect(true).to.equal(true)9    })10  })11describe('My First Test', function() {12    it('Does not do much!', function() {13      expect(true).to.equal(true)14    })15  })16describe('My First Test', function() {17    it('Does not do much!', function() {18      expect(true).to.equal(true)19    })20  })21describe('My First Test', function() {22    it('Does not do much!', function() {23      expect(true).to.equal(true)24    })25  })26describe('My First Test', function() {27    it('Does not do much!', function() {28      expect(true).to.equal(true)29    })30  })31describe('My First Test', function() {32    it('Does not do much!', function() {33      expect(true).to.equal(true)34    })35  })36describe('My First Test', function() {37    it('Does not do much!', function() {38      expect(true).to.equal(true)39    })40  })41describe('My First Test', function() {42    it('Does not do much!', function() {43      expect(true).to.equal(true)44    })45  })

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2  it('Does not do much!', function() {3    expect(true).to.equal(true)4  })5})6describe('My First Test', function() {7  it('Does not do much!', function() {8    cy.     .type('fake@email')9            .should('have.value', 'fake@email')10    })11})

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', () => {2    it('Does not do much!', () => {3      expect(true).to.equal(true)4    })5  })6  describe('My Second Test', () => {7    it('Visits the Kitchen Sink', () => {8    })9  })10  describe('My Third Test', () => {11    it('Finds an element', () => {12      cy.contains('type')13    })14  })15  describe('My Fourth Test', () => {16    it('Gets, types, and asserts', () => {17      cy.contains('type').click()18      cy.url().should('include', '/commands/actions')19      cy.get('.action-email')20        .type('fake@email')21        .should('have.value', 'fake@email')22    })23  })24  describe('My Fifth Test', () => {25    it('Gets, types, and asserts', () => {26      cy.contains('type').click()27      cy.url().should('include', '/commands/actions')28      cy.get('.action-email')29        .type('fake@emai')30        .should('have.value', 'fake@emai')31    })32  })33  describe('My Sixth Test', () => {34    it('Gets, types, and asserts', () => {35      cy.contains('type').click()36      cy.url().should('include', '/commands/actions')37      cy.get('.action-email')38        .type('fake@emai')39        .should('have.value', 'fake@emai')40    })41  })42  describe('My Seventh Test', () => {43    it('Gets, types, and asserts', () => {

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      expect(true).to.equal(true)4    })5  })6describe('My First Test', function() {7    it('Does not do much!', function() {8      expect(true).to.equal(false)9    })10  })11describe('My First Test', function() {12    it('Does not do much!', function() {13      expect(true).to.equal(true)14    })15  })

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2  it('Does not do much!', function() {3    expect(true).to.equal(true)4  })5})6describe('My First Test', function() {7  it('Does not do much!', function() {8  })9})10describe('My First Test', function() {11  it('Does not do much!', function() {12  })ual(true)ual(true)13    })14  })

Full Screen

Using AI Code Generation

copy

Full Screen

1Cypress.Commands.add("login", (email, password) => {2    cy.get('inpt[nam="email"]'.type(email);3    cy.get('input[name="password"]').type(password);4    cy.get('button[type="submit"]').click();5});6Cypress.Commands.add("register", (email, password, username) => {7    cy.get('input[name="username"]').type(username);8    cy.get('input[name="email"]').type(email);9    cy.get('input[name="password"]').type(password);10    cy.get('button[type="submit"]').click();11});12Cypress.Commands.add("logout", () => {13    cy.get('button[id="logout"]').click();14});15Cypress.Commands.add("create", (title, description, price, location, willDeliver) => {16    cy.get('input[name="title"]').type(title);17    cy.get('input[name="description"]').type(description);18    cy.get('input[name="price"]').type(price);19    cy.get('input[name="location"]').type(location);20    cy.get('input[name="willDeliver"]').check(willDeliver);21    cy.get('button[type="submit"]').click();22});23Cypress.Commands.add("edit", (title, description, price, location, willDeliver) => {24    cy.get('input[name="title"]').clear().type(title);25    cy.get('input[name="description"]').clear().type(description);26    cy.get('input[name="price"]').clear().type(price);27    cy.get('input[name="location"]').clear().type(location);28    cy.get('input[name="willDeliver"]').check(willDeliver);29    cy.get('button[type="submit"]').click();30});31Cypress.Commands.add("delete", () => {32    cy.get('button[id="delete"]').click();33});34Cypress.Commands.add("buy", () => {35    cy.get('button[id="buy"]').click();36});

Full Screen

Using AI Code Generation

copy

Full Screen

1import 'cypress-file-upload';2Cypress.Commands.add('register', () => {3  cy.visit('/register');4  cy.get('#name').type('test');5  cy.get('#email').type('test@localhost');6  cy.get('#password').type('test');7  cy.get('#password-confirm').type('test');8  cy.get('#register').click();9});10Cypress.Commands.add('login', () => {11  cy.visit('/login');12  cy.get('#email').type('test@localhost');13  cy.get('#password').type('test');14  cy.get('#login').click();15});16Cypress.Commands.add('logout', () => {17  cy.visit('/logout');18});19Cypress.Commands.add('uploadFile', (selector, fileUrl, type = '') => {20  cy.get(selector).then(subject => {21    cy.fixture(fileUrl, 'base64').then(content => {22      cy.window().then(win => {23        const blob = Cypress.Blob.base64StringToBlob(content, type);24        const testFile = new win.File([blob], fileUrl, { type });25        const dataTransfer = new DataTransfer();26        dataTransfer.items.add(testFile);27        subject[0].files = dataTransfer.files;28        subject[0].dispatchEvent(new Event('change', { bubbles: true }));29      });30    });31  });32});33Cypress.Commands.add('createPost', () => {34  cy.get('#post').type('test');35  cy.get('#create-post').click();36});37Cypress.Commands.add('createComment', () => {38  cy.get('#comment').type('test');39  cy.get('#create-comment').click();40});41Cypress.Commands.add('createLike', () => {42  cy.get('#like').click();43});

Full Screen

Using AI Code Generation

copy

Full Screen

1import 'cypress-file-upload';2Cypress.Commands.add('register', () => {3  cy.visit('/register');4  cy.get('#name').type('test');5  cy.get('#email').type('test@localhost');6  cy.get('#password').type('test');7  cy.get('#password-confirm').type('test');8  cy.get('#register').click();9});10Cypress.Commands.add('login', () => {11  cy.visit('/login');12  cy.get('#email').type('test@localhost');13  cy.get('#password').type('test');14  cy.get('#login').click();15});16Cypress.Commands.add('logout', () => {17  cy.visit('/logout');18});19Cypress.Commands.add('plodFie', seleco, fileUrl, type = '') => {20  cy.get(selector).then(subject => {21    cy.fixtre(fileUrl, 'base64').then(content => {22      cy.window().thn(win => {23        const blob = Cypress.Blob.base64StringToBlob(content, type;24        const testFile =inewtwin.File([blob], fileUrl, { type });25        const dataTransfer = new DataTransfer();26        dataTransfer.items.add(testFile);27        subject[0].files = dataTransfer.files;28        subject[0].dispatchEvent(new Event('change', { bubbles: true }));29      });30    (';clicking "type" navigates to a new url', function() {31  });32  ;33Cypress.Commands.add('createPost', () => {34  cy.get('#post').type('test');35  cy.get('#create-post').click();36});37Cypress.Commands.add('createComment', () => {38  cy.get('#comment').type('test');39  cy.get('#create-comment').click();40});41Cypress.Commands.add('createLike', () => {42  cy.get('#like').click();43    cy.contains('type').click()44    cy.url().should('include', '/commands/actions')45  })46})47describe('My First Test', function() {48  it('Does not do much!', function() {49  })50  it('clicking "type" navigates to a new url', function() {51    cy.contains('type').click()52    cy.url().should('include', '/commands/actions')53  })54  it('get', function() {55    cy.contains('type').click()56    cy.url().should('include', '/commands/actions')57    cy.get('.action-email')58      .type('

Full Screen

Using AI Code Generation

copy

Full Screen

1describe('My First Test', function() {2    it('Does not do much!', function() {3      expect(true).to.equal(true)4    })5  })6describe('My First Test', function() {7    it('Does not do much!', function() {8      expect(true).to.equal(true)9    })10  })11describe('My First Test', function() {12    it('Does not do much!', function() {13      expect(true).to.equal(true)14    })15  })16describe('My First Test', function() {17    it('Does not do much!', function() {18      expect(true).to.equal(true)19    })20  })21describe('My First Test', function() {22    it('Does not do much!', function() {23      expect(true).to.equal(true)24    })25  })26describe('My First Test', function() {27    it('Does not do much!', function() {28      expect(true).to.equal(true)29    })30  })31describe('My First Test', function() {32    it('Does not do much!', function() {33      expect(true).to.equal(true)34    })35  })36describe('My First Test', function() {37    it('Does not do much!', function() {38      expect(true).to.equal(true)39    })40  })41describe('My First Test', function() {42    it('Does not do much!', function() {43      expect(true).to.equal(true)44    })45  })

Full Screen

Using AI Code Generation

copy

Full Screen

1import { register } from "cypress/types/lodash"2describe('My First Test', function() {3    it('Does not do much!', function() {4      expect(true).to.equal(true)5    })6  })7describe('My First Test', function() {8    it('Does not do much!', function() {9      expect(true).to.equal(true)10    })11  })12describe('My First Test', function() {13    it('Does not do much!', function() {14      expect(true).to.equal(true)15    })16  })17describe('My First Test', function() {18    it('Does not do much!', function() {19      expect(true).to.equal(true)20    })21  })22describe('My First Test', function() {23    it('Does not do much!', function() {24      expect(true).to.equal(true)25    })26  })27describe('My First Test', function() {28    it('Does not do much!', function() {29      expect(true).to.equal(true)30    })31  })32describe('My First Test', function() {33    it('Does not do much!', function() {34      expect(true).to.equal(true)35    })36  })37describe('My First Test', function() {38    it('Does not do much!', function() {39      expect(true).to.equal(true)40    })41  })42describe('My First Test', function() {43    it('Does not do much!', function() {44      expect(true).to.equal(true)45    })46  })

Full Screen

Cypress Tutorial

Cypress is a renowned Javascript-based open-source, easy-to-use end-to-end testing framework primarily used for testing web applications. Cypress is a relatively new player in the automation testing space and has been gaining much traction lately, as evidenced by the number of Forks (2.7K) and Stars (42.1K) for the project. LambdaTest’s Cypress Tutorial covers step-by-step guides that will help you learn from the basics till you run automation tests on LambdaTest.

Chapters:

  1. What is Cypress? -
  2. Why Cypress? - Learn why Cypress might be a good choice for testing your web applications.
  3. Features of Cypress Testing - Learn about features that make Cypress a powerful and flexible tool for testing web applications.
  4. Cypress Drawbacks - Although Cypress has many strengths, it has a few limitations that you should be aware of.
  5. Cypress Architecture - Learn more about Cypress architecture and how it is designed to be run directly in the browser, i.e., it does not have any additional servers.
  6. Browsers Supported by Cypress - Cypress is built on top of the Electron browser, supporting all modern web browsers. Learn browsers that support Cypress.
  7. Selenium vs Cypress: A Detailed Comparison - Compare and explore some key differences in terms of their design and features.
  8. Cypress Learning: Best Practices - Take a deep dive into some of the best practices you should use to avoid anti-patterns in your automation tests.
  9. How To Run Cypress Tests on LambdaTest? - Set up a LambdaTest account, and now you are all set to learn how to run Cypress tests.

Certification

You can elevate your expertise with end-to-end testing using the Cypress automation framework and stay one step ahead in your career by earning a Cypress certification. Check out our Cypress 101 Certification.

YouTube

Watch this 3 hours of complete tutorial to learn the basics of Cypress and various Cypress commands with the Cypress testing at LambdaTest.

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful