conference-agent 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. conference_agent-0.1.0/PKG-INFO +145 -0
  2. conference_agent-0.1.0/README.md +110 -0
  3. conference_agent-0.1.0/conference_agent/__init__.py +11 -0
  4. conference_agent-0.1.0/conference_agent/__main__.py +7 -0
  5. conference_agent-0.1.0/conference_agent/airports.py +679 -0
  6. conference_agent-0.1.0/conference_agent/calendar_sync.py +301 -0
  7. conference_agent-0.1.0/conference_agent/cli.py +1765 -0
  8. conference_agent-0.1.0/conference_agent/config.py +162 -0
  9. conference_agent-0.1.0/conference_agent/database.py +1777 -0
  10. conference_agent-0.1.0/conference_agent/deadline_time.py +282 -0
  11. conference_agent-0.1.0/conference_agent/discover.py +1012 -0
  12. conference_agent-0.1.0/conference_agent/live.py +145 -0
  13. conference_agent-0.1.0/conference_agent/models.py +667 -0
  14. conference_agent-0.1.0/conference_agent/notify.py +82 -0
  15. conference_agent-0.1.0/conference_agent/page_watch.py +211 -0
  16. conference_agent-0.1.0/conference_agent/refresh.py +579 -0
  17. conference_agent-0.1.0/conference_agent/subscriptions.py +512 -0
  18. conference_agent-0.1.0/conference_agent/web/__init__.py +0 -0
  19. conference_agent-0.1.0/conference_agent/web/app.py +399 -0
  20. conference_agent-0.1.0/conference_agent/web/handler.py +18 -0
  21. conference_agent-0.1.0/conference_agent/web/nl_query.py +240 -0
  22. conference_agent-0.1.0/conference_agent/web/refresh_handler.py +85 -0
  23. conference_agent-0.1.0/conference_agent/web/search.py +980 -0
  24. conference_agent-0.1.0/conference_agent/web/static/add.html +846 -0
  25. conference_agent-0.1.0/conference_agent/web/static/calendar.js +421 -0
  26. conference_agent-0.1.0/conference_agent/web/static/index.html +2067 -0
  27. conference_agent-0.1.0/conference_agent/web/static/nl_query.js +253 -0
  28. conference_agent-0.1.0/conference_agent/web/static/search.js +865 -0
  29. conference_agent-0.1.0/conference_agent.egg-info/PKG-INFO +145 -0
  30. conference_agent-0.1.0/conference_agent.egg-info/SOURCES.txt +61 -0
  31. conference_agent-0.1.0/conference_agent.egg-info/dependency_links.txt +1 -0
  32. conference_agent-0.1.0/conference_agent.egg-info/entry_points.txt +2 -0
  33. conference_agent-0.1.0/conference_agent.egg-info/requires.txt +21 -0
  34. conference_agent-0.1.0/conference_agent.egg-info/top_level.txt +1 -0
  35. conference_agent-0.1.0/pyproject.toml +64 -0
  36. conference_agent-0.1.0/setup.cfg +4 -0
  37. conference_agent-0.1.0/tests/test_add_form.py +36 -0
  38. conference_agent-0.1.0/tests/test_airports.py +435 -0
  39. conference_agent-0.1.0/tests/test_calendar_ics.py +271 -0
  40. conference_agent-0.1.0/tests/test_cli_add.py +803 -0
  41. conference_agent-0.1.0/tests/test_cli_discover.py +120 -0
  42. conference_agent-0.1.0/tests/test_cli_lookup.py +78 -0
  43. conference_agent-0.1.0/tests/test_database.py +916 -0
  44. conference_agent-0.1.0/tests/test_deadline_local_time.py +54 -0
  45. conference_agent-0.1.0/tests/test_deadline_time.py +367 -0
  46. conference_agent-0.1.0/tests/test_discover.py +356 -0
  47. conference_agent-0.1.0/tests/test_extension_input.py +125 -0
  48. conference_agent-0.1.0/tests/test_ga_injection.py +36 -0
  49. conference_agent-0.1.0/tests/test_guidelines.py +124 -0
  50. conference_agent-0.1.0/tests/test_ingest_submissions.py +75 -0
  51. conference_agent-0.1.0/tests/test_keyword_search.py +151 -0
  52. conference_agent-0.1.0/tests/test_live.py +109 -0
  53. conference_agent-0.1.0/tests/test_models.py +274 -0
  54. conference_agent-0.1.0/tests/test_month_sort.py +92 -0
  55. conference_agent-0.1.0/tests/test_nl_query.py +158 -0
  56. conference_agent-0.1.0/tests/test_page_watch.py +106 -0
  57. conference_agent-0.1.0/tests/test_refresh.py +376 -0
  58. conference_agent-0.1.0/tests/test_search_parity.py +295 -0
  59. conference_agent-0.1.0/tests/test_seo_pages.py +77 -0
  60. conference_agent-0.1.0/tests/test_size_sort.py +75 -0
  61. conference_agent-0.1.0/tests/test_static_globals.py +45 -0
  62. conference_agent-0.1.0/tests/test_static_syntax.py +38 -0
  63. conference_agent-0.1.0/tests/test_subscriptions.py +262 -0
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: conference_agent
3
+ Version: 0.1.0
4
+ Summary: AI agent that compiles academic/professional conferences into a table and exports them as a calendar feed
5
+ Author: Joseph Rich
6
+ License: MIT
7
+ Project-URL: Homepage, https://conferenceagent.vercel.app
8
+ Project-URL: Source, https://github.com/josephrich98/conference-agent
9
+ Keywords: conferences,deadlines,calendar,academic,ical
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Environment :: Console
15
+ Requires-Python: >=3.10
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: pydantic>=2.0
18
+ Requires-Dist: SQLAlchemy>=2.0
19
+ Requires-Dist: tabulate>=0.9
20
+ Provides-Extra: discover
21
+ Requires-Dist: anthropic>=0.40; extra == "discover"
22
+ Requires-Dist: requests>=2.31; extra == "discover"
23
+ Requires-Dist: beautifulsoup4>=4.12; extra == "discover"
24
+ Provides-Extra: web
25
+ Requires-Dist: fastapi>=0.110; extra == "web"
26
+ Requires-Dist: uvicorn>=0.27; extra == "web"
27
+ Requires-Dist: mangum>=0.17; extra == "web"
28
+ Requires-Dist: pg8000>=1.30; extra == "web"
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest>=7.0; extra == "dev"
31
+ Requires-Dist: ruff>=0.4; extra == "dev"
32
+ Requires-Dist: bandit>=1.7; extra == "dev"
33
+ Requires-Dist: psycopg[binary]>=3.1; extra == "dev"
34
+ Requires-Dist: conference_agent[discover,web]; extra == "dev"
35
+
36
+ # conference_agent
37
+
38
+ Website: https://conferenceagent.vercel.app
39
+ Data: https://conferenceagent.vercel.app/data/conferences.json
40
+
41
+ Dynamic academic conference database with a focus on artificial intelligence, medicine, and genomics.
42
+
43
+ Features:
44
+ - Keep up to date with conference news such as venue announcements, submission deadline posting, and submission deadline extension via calendar events and email reminders
45
+ - Organize conferences by category and subcategory, size, submission deadlines, and more
46
+ - Search with keywords, boolean logic, or plain English
47
+ - Sort conferences by those with the nearest submission deadlines, color-coded by timeframe
48
+ - See deadline times in your current timezone
49
+ - Read each conference's abstract and paper submission guidelines (word or page limits, required structure, templates)
50
+ - View conferences that have a history of extending deadlines
51
+ - Suggest a new conference or an edit to an existing one with the [form](https://conferenceagent.vercel.app/add/)
52
+ - Read any conference or single field as static JSON, with no API key (see [Data access](#data-access-for-scripts-and-ai-agents))
53
+
54
+ ## Install
55
+
56
+ ```bash
57
+ pip install conference-agent
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ```bash
63
+ conference-agent lookup # query the database
64
+ conference-agent info # show one conference by id or acronym
65
+ ```
66
+
67
+ Both commands search the live site's data
68
+ (https://conferenceagent.vercel.app/data/conferences.json, cached in
69
+ `~/.cache/conference-agent`), so they need no local database. The site is
70
+ checked for a newer catalog on the first run of each day; later runs that day
71
+ read the cached copy without a network request (`--refresh` checks again).
72
+
73
+ ### conference-agent lookup
74
+
75
+ Query the database for conferences:
76
+
77
+ ```bash
78
+ conference-agent lookup --query "subcategory:radiology AND size:massive"
79
+ ```
80
+
81
+ Query the database for conferences, only returning specific columns:
82
+
83
+ ```bash
84
+ conference-agent lookup --query "subcategory:radiology AND size:massive" \
85
+ --columns name acronym upcoming_start_date location
86
+ ```
87
+
88
+ View the entire database:
89
+
90
+ ```bash
91
+ conference-agent lookup
92
+ ```
93
+
94
+ View all unique values of a column:
95
+
96
+ ```bash
97
+ conference-agent lookup --columns name
98
+ ```
99
+
100
+ ### conference-agent info
101
+
102
+ Show one conference's entire row, found by its id (the unique name slug) or its
103
+ acronym:
104
+
105
+ ```bash
106
+ conference-agent info radiological-society-of-north-america-annual-meeting
107
+ conference-agent info RSNA
108
+ ```
109
+
110
+ Show only specific columns (a single column prints just its value):
111
+
112
+ ```bash
113
+ conference-agent info RSNA name upcoming_start_date upcoming_location
114
+ ```
115
+
116
+ If an acronym is shared by several conferences, `info` lists their ids and
117
+ exits with an error; rerun it with the id of the one you want. List ids with
118
+ `conference-agent lookup --columns id`.
119
+
120
+ To add a conference or correct one, use the
121
+ [form](https://conferenceagent.vercel.app/add/); submissions are reviewed
122
+ before they reach the table. Maintaining or self-hosting the database (the
123
+ `add`, `delete`, and `discover` commands, which come only with a development
124
+ install from a clone of the repository, and the scheduled updates) is
125
+ covered in [DEVELOPMENT.md](https://github.com/josephrich98/conference-agent/blob/main/DEVELOPMENT.md).
126
+
127
+ ## Data access for scripts and AI agents
128
+
129
+ No API key or server: the live site serves the data as static JSON. The `<id>` is the
130
+ conference name slug; find it
131
+ by searching `acronym`/`name` in the catalog.
132
+
133
+ - One conference (all fields): `https://conferenceagent.vercel.app/c/<id>/data.json`
134
+ - Whole catalog (`conferences` list plus `fields` metadata): `https://conferenceagent.vercel.app/data/conferences.json`
135
+ - Agent guide: `/llms.txt`
136
+ - Calendar feeds: `/c/<id>/calendar.ics`, `/field/<tag>/calendar.ics`, `/calendar.ics`
137
+
138
+ ```bash
139
+ # AUA abstract deadline date and time of day
140
+ curl -s https://conferenceagent.vercel.app/c/american-urological-association-annual-meeting/data.json \
141
+ | jq '{date: .upcoming_abstract_deadline, time: .abstract_time, zone: .abstract_timezone}'
142
+ # AUA by acronym (acronyms are not unique; check `name`)
143
+ curl -s https://conferenceagent.vercel.app/data/conferences.json \
144
+ | jq '.conferences[] | select(.acronym=="AUA")'
145
+ ```
@@ -0,0 +1,110 @@
1
+ # conference_agent
2
+
3
+ Website: https://conferenceagent.vercel.app
4
+ Data: https://conferenceagent.vercel.app/data/conferences.json
5
+
6
+ Dynamic academic conference database with a focus on artificial intelligence, medicine, and genomics.
7
+
8
+ Features:
9
+ - Keep up to date with conference news such as venue announcements, submission deadline posting, and submission deadline extension via calendar events and email reminders
10
+ - Organize conferences by category and subcategory, size, submission deadlines, and more
11
+ - Search with keywords, boolean logic, or plain English
12
+ - Sort conferences by those with the nearest submission deadlines, color-coded by timeframe
13
+ - See deadline times in your current timezone
14
+ - Read each conference's abstract and paper submission guidelines (word or page limits, required structure, templates)
15
+ - View conferences that have a history of extending deadlines
16
+ - Suggest a new conference or an edit to an existing one with the [form](https://conferenceagent.vercel.app/add/)
17
+ - Read any conference or single field as static JSON, with no API key (see [Data access](#data-access-for-scripts-and-ai-agents))
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ pip install conference-agent
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ```bash
28
+ conference-agent lookup # query the database
29
+ conference-agent info # show one conference by id or acronym
30
+ ```
31
+
32
+ Both commands search the live site's data
33
+ (https://conferenceagent.vercel.app/data/conferences.json, cached in
34
+ `~/.cache/conference-agent`), so they need no local database. The site is
35
+ checked for a newer catalog on the first run of each day; later runs that day
36
+ read the cached copy without a network request (`--refresh` checks again).
37
+
38
+ ### conference-agent lookup
39
+
40
+ Query the database for conferences:
41
+
42
+ ```bash
43
+ conference-agent lookup --query "subcategory:radiology AND size:massive"
44
+ ```
45
+
46
+ Query the database for conferences, only returning specific columns:
47
+
48
+ ```bash
49
+ conference-agent lookup --query "subcategory:radiology AND size:massive" \
50
+ --columns name acronym upcoming_start_date location
51
+ ```
52
+
53
+ View the entire database:
54
+
55
+ ```bash
56
+ conference-agent lookup
57
+ ```
58
+
59
+ View all unique values of a column:
60
+
61
+ ```bash
62
+ conference-agent lookup --columns name
63
+ ```
64
+
65
+ ### conference-agent info
66
+
67
+ Show one conference's entire row, found by its id (the unique name slug) or its
68
+ acronym:
69
+
70
+ ```bash
71
+ conference-agent info radiological-society-of-north-america-annual-meeting
72
+ conference-agent info RSNA
73
+ ```
74
+
75
+ Show only specific columns (a single column prints just its value):
76
+
77
+ ```bash
78
+ conference-agent info RSNA name upcoming_start_date upcoming_location
79
+ ```
80
+
81
+ If an acronym is shared by several conferences, `info` lists their ids and
82
+ exits with an error; rerun it with the id of the one you want. List ids with
83
+ `conference-agent lookup --columns id`.
84
+
85
+ To add a conference or correct one, use the
86
+ [form](https://conferenceagent.vercel.app/add/); submissions are reviewed
87
+ before they reach the table. Maintaining or self-hosting the database (the
88
+ `add`, `delete`, and `discover` commands, which come only with a development
89
+ install from a clone of the repository, and the scheduled updates) is
90
+ covered in [DEVELOPMENT.md](https://github.com/josephrich98/conference-agent/blob/main/DEVELOPMENT.md).
91
+
92
+ ## Data access for scripts and AI agents
93
+
94
+ No API key or server: the live site serves the data as static JSON. The `<id>` is the
95
+ conference name slug; find it
96
+ by searching `acronym`/`name` in the catalog.
97
+
98
+ - One conference (all fields): `https://conferenceagent.vercel.app/c/<id>/data.json`
99
+ - Whole catalog (`conferences` list plus `fields` metadata): `https://conferenceagent.vercel.app/data/conferences.json`
100
+ - Agent guide: `/llms.txt`
101
+ - Calendar feeds: `/c/<id>/calendar.ics`, `/field/<tag>/calendar.ics`, `/calendar.ics`
102
+
103
+ ```bash
104
+ # AUA abstract deadline date and time of day
105
+ curl -s https://conferenceagent.vercel.app/c/american-urological-association-annual-meeting/data.json \
106
+ | jq '{date: .upcoming_abstract_deadline, time: .abstract_time, zone: .abstract_timezone}'
107
+ # AUA by acronym (acronyms are not unique; check `name`)
108
+ curl -s https://conferenceagent.vercel.app/data/conferences.json \
109
+ | jq '.conferences[] | select(.acronym=="AUA")'
110
+ ```
@@ -0,0 +1,11 @@
1
+ """conference_agent — compile conferences into a table and sync to Google Calendar.
2
+
3
+ The public surface is intentionally small while the project is scaffolded. As
4
+ modules are implemented, re-export the key entry points here.
5
+ """
6
+
7
+ from conference_agent.models import Conference, ConferenceSize, RemoteOption
8
+
9
+ __all__ = ["Conference", "ConferenceSize", "RemoteOption"]
10
+
11
+ __version__ = "0.1.0"
@@ -0,0 +1,7 @@
1
+ """Allow ``python -m conference_agent`` as an alias for the ``conference-agent`` CLI."""
2
+
3
+ import sys
4
+
5
+ from conference_agent.cli import main
6
+
7
+ sys.exit(main())