Skip to content

Error when using year/quarter with fetch_periodic_sec_filings tool in Research Agent on Windows: Cannot locate timezone 'UTC' #613

@llyyt

Description

@llyyt

Describe the bug
When I use Research Agent and the fetch_periodic_sec_filings tool is called, sometimes I meet error "Cannot locate timezone 'UTC'" when either year or quarter parameter is set.

Screenshots

Image Image

To Reproduce
Note: set AGENT_DEBUG_MODE=true to trace model behavior locally.

Run the following in [project directory]\python:

from valuecell.agents.research_agent.sources import fetch_periodic_sec_filings
# Successful path (only limit)
await fetch_periodic_sec_filings(
    cik_or_ticker="AAPL",
    forms=["10-Q"],
    limit=3,
)

# Failing path (with year / quarter)
await fetch_periodic_sec_filings(
    cik_or_ticker="AAPL",
    forms=["10-Q"],
    year=[2025, 2026],
    quarter=[1, 3, 4],
    limit=3,
)

Expected behavior
On Windows, when year/quarter is provided:

  • Either return filtered SEC filings normally; or
  • When tzdata is missing, provide a clearer error message (suggesting to install tzdata or run PyArrow's tzdata installation tool), rather than directly throwing a low-level ArrowInvalid.

Actual behavior

  • Without year/quarter: returns a normal SECFilingResult.
  • With year/quarter: throws an error (excerpt):
    pyarrow.lib.ArrowInvalid: Cannot locate timezone 'UTC': Timezone database not found at "C:\Users\lyt\Downloads\tzdata"

Environment
OS: Windows 11
Python: 3.12.12 (via uv)
Browser: Edge
Using the newest version in main branch [commit 9793e9c]
Project is locally deployed

Preliminary root cause analysis
The year/quarter branch of fetch_periodic_sec_filings calls edgar's filter_by_year_quarter, which under the hood uses PyArrow to filter a timezone-aware time column. On Windows, the current PyArrow version by default looks for the timezone database at %USERPROFILE%\Downloads\tzdata (e.g., C:\Users\xxx\Downloads\tzdata). If this directory does not exist or is incomplete, the above error occurs. The project code does not explicitly configure this path; this is PyArrow's default behavior on Windows.

Related Q&A on stackoverflow: https://stackoverflow.com/questions/74267313/how-to-use-tzdata-file-with-pyarrow-compute-assume-timezone/74292266#74292266

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions