def get_data(self, query):
     # Observable создается из списка url
     return Observable.from_list(
         self.urls
     ).flat_map(
         # Для каждого url создается observable, который загружает данные
         lambda url: Observable.from_future(self.get_rss(url))
     ).flat_map(
         # Полученные данные парсятся, из них создается observable
         lambda x: Observable.from_list(
             feedparser.parse(x.body)['entries']
         ).filter(
             # Фильтрует по вхождению запроса в заголовок или текст новости
             lambda val, i: query in val.title or query in val.summary
         ).take(5)  # Берем только по 5 новостей по каждому url
     ).map(lambda x: {'title': x.title, 'link': x.link,
                      'published': x.published, 'summary': x.summary})
コード例 #2
0
 def get_data(self, query):
     """ query the data to the API and return the contet filtered"""
     return Observable.from_list(self.orgs).flat_map(
         lambda name: Observable.from_future(self.get_org_repos(name))
     ).flat_map(lambda x: Observable.from_list(
         self.get_info(x)  #transform the response to a json list
     ).filter(lambda val: (val.get("description") is not None and (val.get(
         "description").lower()).find(query.lower()) != -1) or
              (val.get("language") is not None and
               (val.get("language").lower()).find(query.lower()) != -1)).
                take(10)  #just take 10 repos from each org
                ).map(
                    lambda x: {
                        'name': x.get("name"),
                        'stars': str(x.get("stargazers_count")),
                        'link': x.get("svn_url"),
                        'description': x.get("description"),
                        'language': x.get("language")
                    })
コード例 #3
0
def fetch_project_teams_and_remind(smtp_config,
                                   bamboo_api,
                                   tempo_api,
                                   recipients=None):
    try:
        employee_directory = bamboo_api.get_list_of_employees()

        Observable.from_list(tempo_api.get_all_teams()) \
            .filter(filter_teams) \
            .flat_map(lambda team: Observable.create(lambda obs: obs.on_next(ProjectTeam(team["name"],
                                                                                         get_email(team["lead"]),
                                                                                         team["id"])))) \
            .flat_map(lambda team: append_team_members(team, tempo_api)) \
            .map(lambda team: append_team_member_details(team, employee_directory)) \
            .map(lambda team: append_team_time_offs(team, bamboo_api)) \
            .subscribe(lambda team: send_reminder(team, smtp_config, recipients.get(team.name)))
    except smtplib.SMTPException:
        log.exception('SMTP error occurred!')
        pass
    except Exception:
        log.exception("Something went wrong!")
  def get_data(self,query):
    """ query the data to the API and return the contet filtered"""
    return Observable.from_list(
        self.orgs
    ).flat_map(
        lambda name: Observable.from_future(self.get_org_repos(name))
    ).flat_map(
        lambda x: Observable.from_list(

            self.get_info(x) #transform the response to a json list

         ).filter(

            lambda val: (val.get("description") is not None
        and (val.get("description").lower()).find(query.lower())!= -1)
                or (val.get("language") is not None
                and (val.get("language").lower()).find(query.lower())!= -1)
         ).take(10)  #just take 10 repos from each org

    ).map(lambda x: {'name': x.get("name"),
    'stars': str(x.get("stargazers_count")),
    'link': x.get("svn_url"),'description': x.get("description"),
    'language': x.get("language")})
コード例 #5
0
    def resolve_author(root, info):
        import json

        authors = [Author(id=1, name="a"), Author(id=2, name="b")]

        class PrintObserver(Observer):
            def on_next(self, value):
                pass

            def on_completed(self):
                pass

            def on_error(self, error):
                pass

        source = Observable.from_list(authors)
        source.subscribe(PrintObserver())
        return source
コード例 #6
0
 def get_data(self, query):
     # Observable создается из списка url
     return Observable.from_list(self.urls).flat_map(
         # Для каждого url создается observable, который загружает данные
         lambda url: Observable.from_future(self.get_rss(url))
     ).flat_map(
         # Полученные данные парсятся, из них создается observable
         lambda x: Observable.
         from_list(feedparser.parse(x.body)['entries']).filter(
             # Фильтрует по вхождению запроса в заголовок или текст новости
             lambda val, i: query in val.title or query in val.summary
         ).take(5)  # Берем только по 5 новостей по каждому url
     ).map(
         lambda x: {
             'title': x.title,
             'link': x.link,
             'published': x.published,
             'summary': x.summary
         })
コード例 #7
0
 def get_data(self, query):
     """ query the data to the API and return the content filtered"""
     print(f"test {query}")
     return rx.of(self.orgs).pipe(
         flat_map(lambda name: print(name) or rx.from_future(
             self.get_org_repos(name))),
         flat_map(lambda rsp: Observable.from_list(
             self.get_info(rsp)  # transform the response to a json list
         ).filter(lambda val: (val.get("description") is not None and (
             val.get("description").lower()).find(query.lower()) != -1) or
                  (val.get("language") is not None and
                   (val.get("language").lower()).find(query.lower()) != -1))
                  .take(10)  # just take 10 repos from each org
                  ),
         map(
             lambda rsp: {
                 "name": rsp.get("name"),
                 "stars": str(rsp.get("stargazers_count")),
                 "link": rsp.get("svn_url"),
                 "description": rsp.get("description"),
                 "language": rsp.get("language"),
             }),
     )
コード例 #8
0
print("===================")

xs = Observable.from_([1, 2, 2, 2, 3, 3, 4, 5, 6])
xs.to_blocking().subscribe(print)
xs.to_iterable().subscribe(print)

print("===================")


def myprint(*args):
    print(*args)
    return None


drive = Observable.from_list(list(range(10))).publish()

s = Subject()
xs = s.buffer_with_count(3).do_action(myprint)
xs.subscribe()

drive.subscribe(s)
drive.connect()

print("===================")

xs = Observable.from_([1, 2, 3, 4, 5, 6])
ys = xs.to_blocking()
print(type(ys))
zs = (x * x for x in ys if x > 3)
print(zs)
コード例 #9
0
ファイル: t_rx.py プロジェクト: andreyladmj/links-checker
from rx.subjects import Subject

#tornado


# class PrintObserver(Observer):
class PrintObserver(Subject):
    """https://auth0.com/blog/reactive-programming-in-python/"""
    def on_next(self, value):
        print("Received {0}".format(value))

    def on_completed(self):
        print("Done!")

    def on_error(self, error):
        print("Error Occurred: {0}".format(error))

    def on_close(self):
        self.combine_latest_sbs.dispose()
        print("WebSocket closed")


if __name__ == '__main__':
    source = Observable.from_list([1, 2, 3, 4, 5, 6])

    s = source.subscribe(PrintObserver())
    s.dispose()

    # source = Observable.from_list([1,2,3,4,5,6])
    #
    # source.subscribe(lambda value: print("Received {0}".format(value)))
コード例 #10
0
def test_split_list():
    # flat_map does not preserve order
    Observable.of(
        [1, 2, 3],
        [4, 5, 6]).flat_map(lambda l: Observable.from_list(l)).subscribe(print)
コード例 #11
0
# From
Observable.from_(['abc', 'def', 'ghi']).subscribe(print_value)


def say_hello(name, callback):
    callback('hello {}!'.format(name))


# You can use from_callback to produce more observables using a
# function as a factory.
hello = Observable.from_callback(say_hello)
hello('Rudolf').subscribe(print_value)
hello('observable').subscribe(print_value)

# You can turn a list into an observable.
Observable.from_list([1, 2, 3]).subscribe(print_value)

# You can turn a list of arguments into an observable.
Observable.of(1, 2, 3, 'A', 'B', 'C').subscribe(print_value)

# And for testing, you can use "marbles". Marbles are a visual
# representation of when items are emitted through an observable.

# We have to import the marbles module to activate this function and
# we have to import the TestScheduler.
from rx.testing import marbles, TestScheduler

from rx.concurrency import timeout_scheduler, new_thread_scheduler

test_scheduler = TestScheduler()
コード例 #12
0
ファイル: rxpy.py プロジェクト: boilerplate-pkg/pyfoobar
 def simple():
     from rx import Observable, Observer
     source = Observable.from_list([1, 2, 3, 4, 5, 6])
     source.subscribe(lambda v: print("receive {}".format(v)))
コード例 #13
0
ファイル: 009.py プロジェクト: miyamotok0105/python_sample
import rx
import signal
from rx.subjects import Subject
from rx import Observable, Observer


def myprint(*args):
    print(*args)
    return None


# drive = Observable.from_list(list(range(33))).publish()
# reg = Subject().buffer_with_count(8).do_action(myprint)
# drive.subscribe(reg)
# drive.connect()

#publish:普通のObservableを接続可能なObservableに変換する
drive = Observable.from_list(list(range(33))).publish()

s = Subject()
#buffer_with_count
#観測可能なシーケンスの各要素を要素数情報に基づいて生成された0個以上のバッファに投影する
#→ 8個ずつ次のストリームに渡す
s.buffer_with_count(8).do_action(myprint).subscribe()

drive.subscribe(s)
#connectでストリーム同士を繋ぐ?
#これがないと結果が表示されない
drive.connect()
コード例 #14
0
ファイル: main_module.py プロジェクト: samraeng/myFirstRaspPi
    def on_next(self, coin):
        self.pushButton()

    def on_error(self, error):
        print("error")

    def on_completed(self):
        print("completed")

    def pushButton(self):
        pass


if __name__ == "__main__":

    coinEvents = Observable.from_list([5, 10, 5, 5, 10, 5]).publish()



    Observable.from_iterable(range(4)) \
      .zip(Observable.interval(250)) \
      .subscribe(WaterLevelController())

    totalCoinEvent = Observable.from_iterable(range(6)) \
      .flat_map(lambda r: coinEvents.take(r) \
        .reduce(lambda a, b: a + b, 0)
      )

    totalCoinEvent.subscribe(CoinLCDOutputObserver())

    totalCoinEvent \