Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,5 @@ target/

#Ipython Notebook
.ipynb_checkpoints

.env
19 changes: 14 additions & 5 deletions .openapi-generator/FILES
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
README.md
perigon/__init__.py
perigon/api/__init__.py
perigon/api/supplemental_endpoints_api.py
perigon/api/v1_api.py
perigon/api_client.py
perigon/api_response.py
Expand All @@ -11,7 +12,11 @@ perigon/models/all_endpoint_sort_by.py
perigon/models/article.py
perigon/models/article_search_filter.py
perigon/models/article_search_params.py
perigon/models/articles_vector_search_result.py
perigon/models/auth_exception.py
perigon/models/auth_exception_cause.py
perigon/models/auth_exception_cause_stack_trace_inner.py
perigon/models/auth_exception_suppressed_inner.py
perigon/models/category_holder.py
perigon/models/category_with_score_holder.py
perigon/models/company.py
Expand Down Expand Up @@ -44,7 +49,8 @@ perigon/models/place.py
perigon/models/query_search_result.py
perigon/models/question.py
perigon/models/record_stat_holder.py
perigon/models/scored_article.py
perigon/models/scored_data_article.py
perigon/models/scored_data_wiki_data.py
perigon/models/sentiment_holder.py
perigon/models/sort_by.py
perigon/models/source.py
Expand All @@ -57,18 +63,21 @@ perigon/models/summary_body.py
perigon/models/summary_search_result.py
perigon/models/symbol_holder.py
perigon/models/too_many_requests_exception.py
perigon/models/too_many_requests_exception_cause.py
perigon/models/too_many_requests_exception_cause_stack_trace_inner.py
perigon/models/too_many_requests_exception_suppressed_inner.py
perigon/models/topic_dto.py
perigon/models/topic_holder.py
perigon/models/topic_labels.py
perigon/models/topic_search_result.py
perigon/models/vector_search_result.py
perigon/models/web_resources.py
perigon/models/wiki_data.py
perigon/models/wiki_page.py
perigon/models/wiki_page_section_holder.py
perigon/models/wikidata_date_holder.py
perigon/models/wikidata_label_holder.py
perigon/models/wikidata_political_party_holder.py
perigon/models/wikidata_position_holder.py
perigon/models/wikipedia_search_filter.py
perigon/models/wikipedia_search_params.py
perigon/models/wikipedia_search_result.py
perigon/models/wikipedia_vector_search_result.py
perigon/py.typed
pyproject.toml
2 changes: 1 addition & 1 deletion .openapi-generator/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7.13.0
7.14.0
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,11 +229,6 @@ articles, journalist = asyncio.run(main())

---

## Usage Examples
We have put together basic and advanced examples of accessing and using the Perigon API using the python SDK inside the **examples/** folder.

---

## 🪪 License

MIT © Perigon
56 changes: 53 additions & 3 deletions examples/advanced.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
3. Run: python examples/advanced.py
"""

import os
import asyncio
import os
from datetime import datetime, timedelta, timezone

from perigon import ApiClient, V1Api
from perigon.models import ArticleSearchParams, SummaryBody
from perigon.models import ArticleSearchParams, SummaryBody, WikipediaSearchParams


def main():
Expand Down Expand Up @@ -151,7 +152,56 @@ def main():
except Exception as e:
print(f" ❌ Error exploring topics: {e}")

# Example 6: Demonstrate async usage
# Example 6: Vector-based Wikipedia Search
print("\n🧠 Example 6: Vector-based Wikipedia Search")
print(
"Using semantic search to find Wikipedia pages related to artificial intelligence...\n"
)

try:
vector_wikipedia_result = api.vector_search_wikipedia(
wikipedia_search_params=WikipediaSearchParams(
prompt="artificial intelligence and neural networks in computing",
size=3,
pageviews_from=100, # Only pages with significant viewership
)
)

print(
f"Found {len(vector_wikipedia_result.results)} semantically related Wikipedia pages:"
)
for i, result in enumerate(vector_wikipedia_result.results, 1):
page = result.data
print(f" {i}. {page.wiki_title or 'Untitled' if page else 'Untitled'}")
print(
f" Relevance Score: {(result.score * 100):.1f}%"
if result.score
else " Relevance Score: N/A"
)
print(f" URL: {page.url if page and hasattr(page, 'url') else 'N/A'}")

summary = "No summary available"
if page and hasattr(page, "content") and page.content:
summary = (
page.content[:200] + "..."
if len(page.content) > 200
else page.content
)
elif page and hasattr(page, "summary") and page.summary:
summary = (
page.summary[:200] + "..."
if len(page.summary) > 200
else page.summary
)
print(f" Summary: {summary}")

print(f" Views per day: {page.pageviews or 'N/A' if page else 'N/A'}")
print(f" Wikidata ID: {page.wikidata_id or 'N/A' if page else 'N/A'}\n")

except Exception as e:
print(f" ❌ Error in vector Wikipedia search: {e}")

# Example 7: Demonstrate async usage
print("\n🔄 Running async operations...")
asyncio.run(async_example(api))

Expand Down
40 changes: 40 additions & 0 deletions examples/basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"""

import os
from datetime import datetime

from perigon import ApiClient, V1Api


Expand Down Expand Up @@ -82,6 +84,44 @@ def main():
except Exception as e:
print(f" ❌ Error searching journalists: {e}")

# Example 4: Wikipedia Search
print("📚 Example 4: Wikipedia Search")
print('Searching Wikipedia pages about "machine learning"...\n')

try:
wikipedia_result = api.search_wikipedia(
q="machine learning",
size=3,
sort_by="relevance",
)

print(f"Found {wikipedia_result.num_results} Wikipedia pages:")
for i, page in enumerate(wikipedia_result.results, 1):
print(f" {i}. {page.wiki_title or 'Untitled'}")
print(f" URL: {page.url or 'N/A'}")
summary = page.summary if page.summary else "No summary available"
if len(summary) > 150:
summary = summary[:150] + "..."
print(f" Summary: {summary}")
print(f" Views per day: {page.pageviews or 'N/A'}")

# Format the revision timestamp if available
last_modified = "Unknown"
if page.wiki_revision_ts:
try:
# Parse ISO timestamp and format as date
dt = datetime.fromisoformat(
page.wiki_revision_ts.replace("Z", "+00:00")
)
last_modified = dt.strftime("%m/%d/%Y")
except:
last_modified = page.wiki_revision_ts

print(f" Last modified: {last_modified}\n")

except Exception as e:
print(f" ❌ Error searching Wikipedia: {e}")

print("✅ Basic example completed!")


Expand Down
27 changes: 16 additions & 11 deletions perigon/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
__version__ = "1.0.0"

# import apis into sdk package
from perigon.api.supplemental_endpoints_api import SupplementalEndpointsApi
from perigon.api.v1_api import V1Api
from perigon.api_client import ApiClient

Expand All @@ -37,7 +38,13 @@
from perigon.models.article import Article
from perigon.models.article_search_filter import ArticleSearchFilter
from perigon.models.article_search_params import ArticleSearchParams
from perigon.models.articles_vector_search_result import ArticlesVectorSearchResult
from perigon.models.auth_exception import AuthException
from perigon.models.auth_exception_cause import AuthExceptionCause
from perigon.models.auth_exception_cause_stack_trace_inner import (
AuthExceptionCauseStackTraceInner,
)
from perigon.models.auth_exception_suppressed_inner import AuthExceptionSuppressedInner
from perigon.models.category_holder import CategoryHolder
from perigon.models.category_with_score_holder import CategoryWithScoreHolder
from perigon.models.company import Company
Expand Down Expand Up @@ -70,7 +77,8 @@
from perigon.models.query_search_result import QuerySearchResult
from perigon.models.question import Question
from perigon.models.record_stat_holder import RecordStatHolder
from perigon.models.scored_article import ScoredArticle
from perigon.models.scored_data_article import ScoredDataArticle
from perigon.models.scored_data_wiki_data import ScoredDataWikiData
from perigon.models.sentiment_holder import SentimentHolder
from perigon.models.sort_by import SortBy
from perigon.models.source import Source
Expand All @@ -83,22 +91,19 @@
from perigon.models.summary_search_result import SummarySearchResult
from perigon.models.symbol_holder import SymbolHolder
from perigon.models.too_many_requests_exception import TooManyRequestsException
from perigon.models.too_many_requests_exception_cause import (
TooManyRequestsExceptionCause,
)
from perigon.models.too_many_requests_exception_cause_stack_trace_inner import (
TooManyRequestsExceptionCauseStackTraceInner,
)
from perigon.models.too_many_requests_exception_suppressed_inner import (
TooManyRequestsExceptionSuppressedInner,
)
from perigon.models.topic_dto import TopicDto
from perigon.models.topic_holder import TopicHolder
from perigon.models.topic_labels import TopicLabels
from perigon.models.topic_search_result import TopicSearchResult
from perigon.models.vector_search_result import VectorSearchResult
from perigon.models.web_resources import WebResources
from perigon.models.wiki_data import WikiData
from perigon.models.wiki_page import WikiPage
from perigon.models.wiki_page_section_holder import WikiPageSectionHolder
from perigon.models.wikidata_date_holder import WikidataDateHolder
from perigon.models.wikidata_label_holder import WikidataLabelHolder
from perigon.models.wikidata_political_party_holder import WikidataPoliticalPartyHolder
from perigon.models.wikidata_position_holder import WikidataPositionHolder
from perigon.models.wikipedia_search_filter import WikipediaSearchFilter
from perigon.models.wikipedia_search_params import WikipediaSearchParams
from perigon.models.wikipedia_search_result import WikipediaSearchResult
from perigon.models.wikipedia_vector_search_result import WikipediaVectorSearchResult
1 change: 1 addition & 0 deletions perigon/api/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# flake8: noqa

# import apis into api package
from perigon.api.supplemental_endpoints_api import SupplementalEndpointsApi
from perigon.api.v1_api import V1Api
Loading