コード例 #1
0
ファイル: fs.py プロジェクト: HazardDede/pnp
 def __init__(self,
              path,
              recursive=True,
              patterns=None,
              ignore_patterns=None,
              ignore_directories=False,
              case_sensitive=False,
              events=None,
              load_file=False,
              mode='auto',
              base64=False,
              defer_modified=0.5,
              **kwargs):
     super().__init__(**kwargs)
     self.path = path
     validator.is_directory(path=self.path)
     self.recursive = bool(recursive)
     self.patterns = make_list(patterns)
     self.ignore_patterns = make_list(ignore_patterns)
     self.ignore_directories = bool(ignore_directories)
     self.case_sensitive = bool(case_sensitive)
     self.load_file = bool(load_file)
     self.base64 = bool(base64)
     self.events = make_list(events)
     if self.events:
         validator.subset_of(self.EVENT_TYPES, events=self.events)
     self.mode = mode
     validator.one_of(FILE_MODES, mode=self.mode)
     self.defer_modified = float(defer_modified)
     if self.defer_modified < 0.0:
         self.defer_modified = 0.5
コード例 #2
0
ファイル: mqtt.py プロジェクト: HazardDede/pnp
 def __init__(self, discovery_prefix, component, config, object_id=None, node_id=None, **kwargs):
     super().__init__(**kwargs)
     self.discovery_prefix = str(discovery_prefix)
     validator.one_of(self.SUPPORTED_COMPONENTS, component=str(component))
     self.component = str(component)
     self.object_id = self._parse_object_id(object_id)
     validator.is_instance(dict, config=config)
     self._config = config
     self.node_id = self._parse_node_id(node_id)
     self.configured = {}
コード例 #3
0
ファイル: sensor.py プロジェクト: HazardDede/pnp
 def __init__(self,
              device='dht22',
              data_gpio=17,
              humidity_offset=0.0,
              temp_offset=0.0,
              **kwargs):
     super().__init__(**kwargs)
     valid_devices = ['dht11', 'dht22', 'am2302']
     self.device = str(device).lower()
     validator.one_of(valid_devices, device=self.device)
     self.data_gpio = int(data_gpio)
     self.humidity_offset = float(humidity_offset)
     self.temp_offset = float(temp_offset)
コード例 #4
0
 def __init__(self, pins, default=CONST_RISING, **kwargs):
     super().__init__(**kwargs)
     self._mode_default = default
     validator.one_of(CONST_RISING_OPTIONS + CONST_FALLING_OPTIONS +
                      CONST_SWITCH_OPTIONS + CONST_MOTION_OPTIONS,
                      mode_default=self._mode_default)
     self._pins = [
         Callback.from_str(pin_str, default=default)
         for pin_str in make_list(pins)
     ]
     _without_duplicate = set(self._pins)
     if len(_without_duplicate) != len(self._pins):
         diff = list(
             (Counter(self._pins) - Counter(_without_duplicate)).elements())
         self.logger.warning(
             "You provided duplicate gpio pin configurations. Will ignore '%s'",
             diff)
         self._pins = _without_duplicate
コード例 #5
0
ファイル: logging.py プロジェクト: HazardDede/pnp
    def __init__(self,
                 api_key: str,
                 channel: str,
                 username: str = DEFAULT_USERNAME,
                 icon_url: Optional[str] = None,
                 icon_emoji: Optional[str] = None,
                 ping_users: Optional[Iterable[str]] = None,
                 ping_level: str = DEFAULT_PING_LEVEL,
                 fire_and_forget: bool = True):
        super().__init__()
        self.formatter = NoStacktraceFormatter()
        self.slacker = slacker.Slacker(api_key)
        self.fire_and_forget = bool(fire_and_forget)
        self.username = str(username)
        self.icon_url = icon_url and str(icon_url)
        self.icon_emoji = icon_emoji if (icon_emoji
                                         or icon_url) else self.DEFAULT_EMOJI
        self.channel = channel
        if not self.channel.startswith('#') and not self.channel.startswith(
                '@'):
            self.channel = '#' + self.channel

        # Optional ping user related stuff
        ping_level = str(ping_level).upper()
        validator.one_of(_nameToLevel, ping_level=ping_level)
        self.ping_level = _nameToLevel[ping_level]  # type: int
        self.ping_user_ids = []  # type: List[int]

        if ping_users:
            user_map = self._build_user_map()
            for ping_user in ping_users:
                user_id = user_map.get(ping_user)
                if not user_id:
                    raise RuntimeError(
                        'User not found in Slack users list: %s' % ping_user)
                self.ping_user_ids.append(user_id)
コード例 #6
0
ファイル: sensor.py プロジェクト: HazardDede/pnp
 def _check_mode(cls, mode: str) -> str:
     validator.one_of(ALLOWED_MODES, mode=mode)
     return mode
コード例 #7
0
 def _parse_method(val):
     val = str(val).upper()
     validator.one_of(utils.HTTP_METHODS, method=val)
     return val