{"id":24570,"library":"seeq-spy","title":"Seeq Spy","description":"Easy-to-use Python interface for Seeq, providing high-level access to Seeq data, analyses, and workbooks. Current version: 201.0. Release cadence is irregular, following Seeq product updates.","status":"active","version":"201.0","language":"python","source_language":"en","source_url":"https://github.com/seeq12/seeq-spy","tags":["seeq","industrial","time-series","data-analysis","spy"],"install":[{"cmd":"pip install seeq-spy","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"wrong":"import seeq.spy as spy","symbol":"spy","correct":"import seeq"}],"quickstart":{"code":"import seeq.spy as spy\nimport os\n\n# Authenticate using URL and credentials\nurl = os.environ.get('SEEQ_URL', 'https://demo.seeq.com')\nspy.login(url, username='demo', password='demo')\n\n# Search for a signal\nresults = spy.search({'Name': 'Temperature'})\nprint(results.head())","lang":"python","description":"Import the spy module, authenticate via spy.login, and search for data items. Replace credentials with your own."},"warnings":[{"fix":"Use `import seeq.spy as spy` instead of `import spy`.","message":"In seeq-spy 201.0, the spy object is no longer a global singleton but must be imported explicitly. Direct import of `spy` without the `seeq.` namespace will fail.","severity":"breaking","affected_versions":">=201.0"},{"fix":"Access columns via tuples (e.g., `df[('Signal Name', 'Value')]`) or flatten the MultiIndex using `.columns.droplevel()`.","message":"The `spy.pull()` method now returns a Pandas DataFrame with MultiIndex columns. Code that expects single-level columns may break.","severity":"breaking","affected_versions":">=200.0"},{"fix":"Replace `spy.authenticate(url, username, password)` with `spy.login(url, username=..., password=...)`.","message":"`spy.authenticate()` is deprecated in favor of `spy.login()`. The old method may be removed in a future version.","severity":"deprecated","affected_versions":">=200.0"},{"fix":"Use `for index, row in df.iterrows():` or convert to dict with `df.to_dict('records')`.","message":"`spy.search()` returns a DataFrame, not a list. Iterating directly over the DataFrame yields column names, not rows.","severity":"gotcha","affected_versions":"all"},{"fix":"Ensure your DataFrame index uses `pd.DatetimeIndex` with `tz='UTC'`: `df.index = df.index.tz_localize('UTC')` if naive.","message":"When pushing data with `spy.push()`, the index must be timezone-aware (UTC). Naive timestamps will raise a ValueError.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'201.0':24 'access':15 'analys':19 'analysi':40 'cadenc':26 'current':22 'data':18,39 'data-analysi':38 'easi':4 'easy-to-us':3 'follow':29 'high':13 'high-level':12 'industri':34 'interfac':8 'irregular':28 'level':14 'product':31 'provid':11 'python':7 'releas':25 'seeq':1,10,17,30,33 'seri':37 'spi':2,41 'time':36 'time-seri':35 'updat':32 'use':6 'version':23 'workbook':21","created_at":"2026-05-01T08:13:46.918802+00:00","updated_at":"2026-05-01T08:13:46.918802+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"201.6","cli_name":"","cli_version":null,"type":"library","homepage":"https://www.seeq.com","github":null,"docs":"https://python-docs.seeq.com/","changelog":"https://python-docs.seeq.com/changelog.html","pypi":"https://pypi.org/project/seeq-spy/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}