Example #1
0
 def device_info(self):
     di = {}
     lbls = Counter()
     cmd = 'blkid -s LABEL -s UUID -t TYPE=btrfs'.split()
     subp = subprocess.Popen(cmd, stdout=subprocess.PIPE)
     for line in subp.stdout:
         dev, label, uuid = BLKID_RE.match(line).groups()
         uuid = UUID(hex=uuid.decode('ascii'))
         dev = fsdecode(dev)
         if label is not None:
             try:
                 label = label.decode('ascii')
             except UnicodeDecodeError:
                 # Don't try to guess.
                 pass
         if uuid in di:
             # btrfs raid
             assert di[uuid].label == label
             di[uuid].devices.append(dev)
         else:
             lbls[label] += 1
             di[uuid] = DeviceInfo(label, [dev])
     rc = subp.wait()
     # 2 means there is no btrfs filesystem
     if rc not in (0, 2):
         raise subprocess.CalledProcessError(rc, cmd)
     self._label_occurs = dict(lbls)
     return di
Example #2
0
    def get_next(self, timeout: int = 0) -> UUID:
        '''
        Remove the first item in the MEMBER_LIST and return it
        '''

        value = self.kvcache.get_next(MEMBERS_LIST, timeout=timeout)

        if isinstance(value, bytes):
            value = UUID(value.decode('utf-8'))

        return value
Example #3
0
    def get_project(self):
        """Get the current project or return None if not project is set."""

        # check if a project has been selected
        project_id = self.get_secure_cookie("project_id")

        if not project_id:
            return None

        project_id = UUID(project_id.decode('UTF-8'))

        return self.service.projects_manager.projects[project_id]
Example #4
0
def uuid_validator(v, field, config, **kwargs) -> UUID:
    with change_exception(errors.UUIDError, ValueError):
        if isinstance(v, str):
            v = UUID(v)
        elif isinstance(v, (bytes, bytearray)):
            v = UUID(v.decode())

    if not isinstance(v, UUID):
        raise errors.UUIDError()

    required_version = getattr(field.type_, '_required_version', None)
    if required_version and v.version != required_version:
        raise errors.UUIDVersionError(required_version=required_version)

    return v
Example #5
0
def uuid_validator(v, field, config, **kwargs) -> UUID:
    if isinstance(v, str):
        v = UUID(v)
    elif isinstance(v, (bytes, bytearray)):
        v = UUID(v.decode())
    elif not isinstance(v, UUID):
        raise ValueError(
            f'str, byte or native UUID type expected not {type(v)}')

    required_version = getattr(field.type_, '_required_version', None)
    if required_version and v.version != required_version:
        raise ValueError(
            f'uuid version {required_version} expected, not {v.version}')

    return v
Example #6
0
    def get_project(self):
        """Get the current project or return None if not project is set."""

        # check if a project has been selected
        project_id = self.get_secure_cookie("project_id")

        if not project_id:
            return None

        project_id = UUID(project_id.decode('UTF-8'))
        projects_manager = srv_or_die("projectsmanager")

        if project_id not in projects_manager.projects:
            self.clear_cookie("project_id")
            return None

        return projects_manager.projects[project_id]
Example #7
0
    async def end_game(self, partyid):
        slotid = await self.redis.get(Redis.party_slotid_key.format(partyid))
        slotid = UUID(slotid.decode())

        groups = await self.redis.smembers(Redis.slot_groups_key.format(slotid))
        for groupid in map(methodcaller("decode"), groups):
            await self.redis.set(
                Redis.group_state_key.format(groupid), State.GROUP_CHECK.value)
            await self.redis.delete(Redis.group_partyid_key.format(groupid))

        users = await self.redis.smembers(Redis.slot_players_key.format(slotid))
        for userid in map(methodcaller("decode"), users):
            await self.redis.delete(Redis.user_partyid_key.format(userid))

        await self.redis.delete(Redis.party_gameid_key.format(partyid))
        await self.redis.delete(Redis.party_slotid_key.format(partyid))
        await self.redis.delete(Redis.party_host_key.format(partyid))
        await self.redis.delete(Redis.party_ports_key.format(partyid))
        await self.redis.delete(Redis.slot_players_key.format(slotid))
        await self.redis.delete(Redis.slot_groups_key.format(slotid))
Example #8
0
 def device_info(self):
     di = {}
     lbls = Counter()
     for line in subprocess.check_output(
         'blkid -s LABEL -s UUID -t TYPE=btrfs'.split()
     ).splitlines():
         dev, label, uuid = BLKID_RE.match(line).groups()
         uuid = UUID(hex=uuid.decode('ascii'))
         dev = fsdecode(dev)
         if label is not None:
             try:
                 label = label.decode('ascii')
             except UnicodeDecodeError:
                 # Don't try to guess.
                 pass
         if uuid in di:
             # btrfs raid
             assert di[uuid].label == label
             di[uuid].devices.append(dev)
         else:
             lbls[label] += 1
             di[uuid] = DeviceInfo(label, [dev])
     self._label_occurs = dict(lbls)
     return di
Example #9
0
        for record in tqdm(f, unit='records'):
            URI = record.header.get('warc-target-uri')
            content = record.payload.read()
            if URI is not None and content is not None:
                words = latin_sep_words.split(str(content))

                words = [(k, v) for (k, v) in Counter(words).items()]

                if args.uuid:
                    uuid = record.header.get('WARC-Record-ID')[1:-1]
                    uuid = UUID(uuid)
                    if args.compressuuid:
                        uuid = slugid.encode(uuid)
                    [
                        print("{word}\t{uuid} {count}".format(
                            word=word, uuid=uuid.decode('ascii'), count=count))
                        for (word, count) in words
                    ]
                else:
                    docID = docIdGenerator.next()
                    if args.urlTable:
                        print("{docID}\t{url}".format(docID=docID, url=URI),
                              file=fileURLTable)
                        # fileURLTable.write("{docID}\t{url}\t{lan}".format(docID=docID, url=URI, lan=lang))
                    if args.binary:
                        docID = docID.to_bytes(docIDDigits,
                                               'little',
                                               signed=True)
                    else:
                        docID = str(docID)
                    if args.binary: