-
Notifications
You must be signed in to change notification settings - Fork 108
Open
Description
My code:
import os
import sys
import json
import datetime
from typing import List, Optional
import datetime
import asana
class AsanaReader():
"""Asana reader. Reads data from an Asana workspace.
Args:
asana_token (str): Asana token.
"""
def __init__(self, asana_token: str=None) -> None:
"""Initialize Asana reader."""
config = asana.Configuration()
config.access_token = asana_token
self.client = asana.ApiClient(config)
def load_data(
self,
workspace_gid: Optional[str] = None,
project_gid: Optional[str] = None,
modified_since: Optional[str] = (datetime.datetime.now() - datetime.timedelta(days=7)).isoformat(),
) -> List[str]:
"""Load data from the workspace.
Args:
workspace_id (Optional[str], optional): Workspace ID.
project_id (Optional[str], optional): Project ID.
modified_since: Optional[str], optional): Only return tasks modified since this date.
"""
# check for valid input
if workspace_gid is None and project_gid is None:
raise ValueError("Either workspace_id or project_id must be provided")
if workspace_gid is not None and project_gid is not None:
raise ValueError("Only one of workspace_id or project_id should be provided")
# Case: Only workspace_id is provided
if workspace_gid is not None:
projects = self.get_projects(workspace_gid)
elif project_gid is not None:
projects = [self.get_project(project_gid)]
else:
raise ValueError("Invalid input")
def get_projects(self, workspace_gid: str) -> List[str]:
opts = {
'workspace': workspace_gid,
'archived': False,
'opt_fields': "name,workspace"
}
projects_api_instance = asana.ProjectsApi(self.client)
api_response = projects_api_instance.get_projects(opts)
return [data for data in api_response]
def get_project(self, project_gid: str) -> List[str]:
opts = {
'archived': False,
'opt_fields': "name,workspace"
}
projects_api_instance = asana.ProjectsApi(self.client)
api_response = projects_api_instance.get_project(project_gid, opts)
return api_response
# main
if __name__ == "__main__":
from dotenv import load_dotenv
load_dotenv()
reader = AsanaReader(asana_token=os.getenv("ASANA_PROD_API_KEY"))
data = reader.load_data(
project_gid=os.getenv("ASANA_PROJECT_GID")
)
print(data)The warning:
Exception ignored in: <function ApiClient.__del__ at 0x105330900>
Traceback (most recent call last):
File "/Users/nickyoungblut/mambaforge/envs/weaviate-db-tools/lib/python3.11/site-packages/asana/api_client.py", line 95, in __del__
File "/Users/nickyoungblut/mambaforge/envs/weaviate-db-tools/lib/python3.11/multiprocessing/pool.py", line 648, in close
AttributeError: 'NoneType' object has no attribute 'debug'
Exception ignored in: <function Pool.__del__ at 0x104d1d1c0>
Traceback (most recent call last):
File "/Users/nickyoungblut/mambaforge/envs/weaviate-db-tools/lib/python3.11/multiprocessing/pool.py", line 271, in __del__
File "/Users/nickyoungblut/mambaforge/envs/weaviate-db-tools/lib/python3.11/multiprocessing/queues.py", line 371, in put
AttributeError: 'NoneType' object has no attribute 'dumps'My conda env:
# Name Version Build Channel
aiohappyeyeballs 2.4.4 pypi_0 pypi
aiohttp 3.11.11 pypi_0 pypi
aiosignal 1.3.2 pypi_0 pypi
annotated-types 0.7.0 pypi_0 pypi
anyio 4.7.0 pypi_0 pypi
appnope 0.1.4 pyhd8ed1ab_1 conda-forge
asana 5.0.10 pypi_0 pypi
asttokens 3.0.0 pyhd8ed1ab_1 conda-forge
attrs 24.3.0 pypi_0 pypi
authlib 1.3.1 pypi_0 pypi
bzip2 1.0.8 h99b78c6_7 conda-forge
ca-certificates 2024.12.14 hf0a4a13_0 conda-forge
certifi 2024.12.14 pypi_0 pypi
cffi 1.17.1 pypi_0 pypi
charset-normalizer 3.4.1 pypi_0 pypi
comm 0.2.2 pyhd8ed1ab_1 conda-forge
cryptography 44.0.0 pypi_0 pypi
dataclasses-json 0.6.7 pypi_0 pypi
debugpy 1.8.11 py311h155a34a_0 conda-forge
decorator 5.1.1 pyhd8ed1ab_1 conda-forge
dill 0.3.9 pypi_0 pypi
distro 1.9.0 pypi_0 pypi
exceptiongroup 1.2.2 pyhd8ed1ab_1 conda-forge
executing 2.1.0 pyhd8ed1ab_1 conda-forge
frozenlist 1.5.0 pypi_0 pypi
grpcio 1.68.1 pypi_0 pypi
grpcio-health-checking 1.68.1 pypi_0 pypi
grpcio-tools 1.68.1 pypi_0 pypi
h11 0.14.0 pypi_0 pypi
httpcore 1.0.7 pypi_0 pypi
httpx 0.27.0 pypi_0 pypi
httpx-sse 0.4.0 pypi_0 pypi
idna 3.10 pypi_0 pypi
importlib-metadata 8.5.0 pyha770c72_1 conda-forge
ipykernel 6.29.5 pyh57ce528_0 conda-forge
ipython 8.31.0 pyh707e725_0 conda-forge
jedi 0.19.2 pyhd8ed1ab_1 conda-forge
jiter 0.8.2 pypi_0 pypi
jsonpatch 1.33 pypi_0 pypi
jsonpointer 3.0.0 pypi_0 pypi
jupyter_client 8.6.3 pyhd8ed1ab_1 conda-forge
jupyter_core 5.7.2 pyh31011fe_1 conda-forge
krb5 1.21.3 h237132a_0 conda-forge
langchain 0.3.13 pypi_0 pypi
langchain-community 0.3.13 pypi_0 pypi
langchain-core 0.3.28 pypi_0 pypi
langchain-openai 0.2.14 pypi_0 pypi
langchain-text-splitters 0.3.4 pypi_0 pypi
langchain-weaviate 0.0.3 pypi_0 pypi
langchainhub 0.1.21 pypi_0 pypi
langsmith 0.2.7 pypi_0 pypi
libcxx 19.1.6 ha82da77_1 conda-forge
libedit 3.1.20191231 hc8eb9b7_2 conda-forge
libexpat 2.6.4 h286801f_0 conda-forge
libffi 3.4.2 h3422bc3_5 conda-forge
liblzma 5.6.3 h39f12f2_1 conda-forge
libsodium 1.0.20 h99b78c6_0 conda-forge
libsqlite 3.47.2 h3f77e49_0 conda-forge
libzlib 1.3.1 h8359307_2 conda-forge
marshmallow 3.23.2 pypi_0 pypi
matplotlib-inline 0.1.7 pyhd8ed1ab_1 conda-forge
mpire 2.10.2 pypi_0 pypi
multidict 6.1.0 pypi_0 pypi
multiprocess 0.70.17 pypi_0 pypi
mypy-extensions 1.0.0 pypi_0 pypi
ncurses 6.5 h7bae524_1 conda-forge
nest-asyncio 1.6.0 pyhd8ed1ab_1 conda-forge
notion-client 2.3.0 pypi_0 pypi
numpy 1.26.4 pypi_0 pypi
openai 1.58.1 pypi_0 pypi
openssl 3.4.0 h39f12f2_0 conda-forge
orjson 3.10.13 pypi_0 pypi
packaging 24.2 pyhd8ed1ab_2 conda-forge
pandas 2.2.3 pypi_0 pypi
parso 0.8.4 pyhd8ed1ab_1 conda-forge
pexpect 4.9.0 pyhd8ed1ab_1 conda-forge
pickleshare 0.7.5 pyhd8ed1ab_1004 conda-forge
pip 24.3.1 pyh8b19718_2 conda-forge
platformdirs 4.3.6 pyhd8ed1ab_1 conda-forge
prompt-toolkit 3.0.48 pyha770c72_1 conda-forge
propcache 0.2.1 pypi_0 pypi
protobuf 5.29.2 pypi_0 pypi
psutil 6.1.1 py311h917b07b_0 conda-forge
ptyprocess 0.7.0 pyhd8ed1ab_1 conda-forge
pure_eval 0.2.3 pyhd8ed1ab_1 conda-forge
pycparser 2.22 pypi_0 pypi
pydantic 2.10.4 pypi_0 pypi
pydantic-core 2.27.2 pypi_0 pypi
pydantic-settings 2.7.1 pypi_0 pypi
pygments 2.18.0 pyhd8ed1ab_1 conda-forge
python 3.11.11 hc22306f_1_cpython conda-forge
python-dateutil 2.9.0.post0 pyhff2d567_1 conda-forge
python-dotenv 1.0.1 pypi_0 pypi
python_abi 3.11 5_cp311 conda-forge
pytz 2024.2 pypi_0 pypi
pyyaml 6.0.2 pypi_0 pypi
pyzmq 26.2.0 py311h730b646_3 conda-forge
readline 8.2 h92ec313_1 conda-forge
regex 2024.11.6 pypi_0 pypi
requests 2.32.3 pypi_0 pypi
requests-toolbelt 1.0.0 pypi_0 pypi
semchunk 3.0.0 pypi_0 pypi
setuptools 75.6.0 pyhff2d567_1 conda-forge
simsimd 4.4.0 pypi_0 pypi
six 1.17.0 pyhd8ed1ab_0 conda-forge
sniffio 1.3.1 pypi_0 pypi
sqlalchemy 2.0.36 pypi_0 pypi
stack_data 0.6.3 pyhd8ed1ab_1 conda-forge
tenacity 9.0.0 pypi_0 pypi
tiktoken 0.8.0 pypi_0 pypi
tk 8.6.13 h5083fa2_1 conda-forge
tornado 6.4.2 py311h917b07b_0 conda-forge
tqdm 4.67.1 pypi_0 pypi
traitlets 5.14.3 pyhd8ed1ab_1 conda-forge
types-requests 2.32.0.20241016 pypi_0 pypi
typing-inspect 0.9.0 pypi_0 pypi
typing_extensions 4.12.2 pyha770c72_1 conda-forge
tzdata 2024.2 pypi_0 pypi
urllib3 2.3.0 pypi_0 pypi
validators 0.34.0 pypi_0 pypi
wcwidth 0.2.13 pyhd8ed1ab_1 conda-forge
weaviate-client 4.8.1 pypi_0 pypi
weaviate-db-tools 0.1.0 pypi_0 pypi
wheel 0.45.1 pyhd8ed1ab_1 conda-forge
yarl 1.18.3 pypi_0 pypi
zeromq 4.3.5 hc1bb282_7 conda-forge
zipp 3.21.0 pyhd8ed1ab_1 conda-forgeMetadata
Metadata
Assignees
Labels
No labels