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
19 changes: 9 additions & 10 deletions magicalapi/types/company_data.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
from datetime import datetime
from datetime import date
from datetime import date, datetime
from typing import TypeAlias

from pydantic import BaseModel, HttpUrl, field_validator
from pydantic import Field, field_validator

from .base import BaseModelValidated, BaseResponse

Expand Down Expand Up @@ -51,8 +50,8 @@ class Investor(BaseModelValidated):


class FundingRound(BaseModelValidated):
date: date | None
type: str | None
date_: date | None = Field(default=None, alias="date")
type_: str | None = Field(default=None, alias="type")
raised_amount: str | None


Expand All @@ -68,14 +67,14 @@ class Company(BaseModelValidated):
The main type of company data service
"""

url: HttpUrl
url: str
company_name: str
crawled_at: datetime
name: str
name: str | None
tagline: str | None
cover_image_url: HttpUrl
logo_url: HttpUrl | None
employees: str
cover_image_url: str | None
logo_url: str | None
employees: str | None
followers: str | None
#
about: str | None
Expand Down
63 changes: 25 additions & 38 deletions magicalapi/types/profile_data.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from datetime import date, datetime
from datetime import datetime

from pydantic import BaseModel, HttpUrl, field_validator
from pydantic import field_validator

from .base import BaseModelValidated, BaseResponse, OptionalModel

Expand Down Expand Up @@ -54,57 +54,50 @@ class StartEndDateEducation(StartEndDate):

class Duration(BaseModelValidated):
years: int = 0
months: int
months: int = 0


class StartEndDurationDate(StartEndDate):
duration: Duration | None


class Experience(BaseModelValidated, OptionalModel):
image_url: HttpUrl | None
title: str | None
company_name: str
company_link: HttpUrl | None
company_name: str | None
company_link: str | None
image_url: str | None
date: StartEndDurationDate | None
location: str | None
description: str | None


class Education(BaseModelValidated):
image_url: HttpUrl | None
university_name: str
university_link: HttpUrl | None
university_name: str | None
university_link: str | None
image_url: str | None
degree: str | None
major: str | None
date: StartEndDateEducation | None
date: StartEndDate | None


class Certification(BaseModelValidated):
image_url: str | None
title: str
title: str | None
course_link: str | None
issuer: str
issuer: str | None
credential: str | None
issued_date: date | None

@field_validator("issued_date", mode="before")
@classmethod
def date_validator(cls, value: str) -> date | None:
if not value:
return None
return datetime.strptime(value, "%b %Y").date()
issued_date: str | None


class Language(BaseModelValidated):
name: str
name: str | None
description: str | None


class Volunteering(BaseModelValidated):
role: str
role: str | None
organization: str | None
volunteering_link: HttpUrl | None
volunteering_link: str | None
date: StartEndDurationDate | None
cause: str | None
description: str | None
Expand All @@ -113,35 +106,28 @@ class Volunteering(BaseModelValidated):
class Publication(BaseModelValidated):
title: str | None
publisher: str | None
publication_link: HttpUrl | None
publication_link: str | None
publication_date: str | None
description: str | None


class Project(BaseModelValidated):
name: str
name: str | None
date: StartEndDate | None
description: str | None


class Course(BaseModelValidated):
name: str
name: str | None
number: str | None


class HonorAndAward(BaseModelValidated):
title: str
issuer: str
issued_date: date | None
title: str | None
issuer: str | None
issued_date: str | None
description: str | None

@field_validator("issued_date", mode="before")
@classmethod
def date_validator(cls, value: str) -> date | None:
if not value:
return None
return datetime.strptime(value, "%b %Y").date()


class Activity(BaseModelValidated):
title: str | None
Expand All @@ -168,10 +154,11 @@ class Profile(BaseModelValidated):
The main type of linkedin profile data service
"""

url: HttpUrl
url: str
profile: str
crawled_at: datetime
name: str
name: str | None
headline: str | None
description: str | None
location: str | None
followers: str | None
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "magicalapi"
version = "1.5.1"
version = "1.5.2"
description = "This is a Python client that provides easy access to the MagicalAPI.com services, fully type annotated, and asynchronous."
authors = [
{ name = "MagicalAPI", email = "info@magicalapi.com" }
Expand Down
1 change: 1 addition & 0 deletions tests/types/test_profile_data_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def profile_data():
"profile": _username,
"crawled_at": fake.date_time_this_year().strftime("%d/%m/%Y %H:%M:%S"),
"name": fake.name(),
"headline": fake.name(),
"description": "", # empty text
"location": "{}, {}".format(*fake.location_on_land()[2:4]),
"followers": f"{randint(1,500)} followers",
Expand Down
Loading
Loading