A strawberry + Django integration for phone numbers
Project description
strawberry-django-phonenumber
Introduction
GraphQL types for Phone Numbers with Strawberry Django. If you use django, strawberry, and django-phonenumber-field, this library is for you.
Supported on:
- Python 3.10+
- Django 3+
- strawberry-graphql-django 0.17+
- django-phonenumber-field 7+
CI tests Python 3.10 (minimum supported) and 3.14 (latest).
Here's how it works. Automagically get this query:
query User {
phoneNumber {
...phoneNumberFragment
}
}
fragment phoneNumberFragment on PhoneNumber {
asInternational # +1 415-418-3420
asNational # (415) 418-3420
asE164
asRfc3966
countryCode # 1
nationalNumber
extension
rawInput
}
With this code:
# yourapp/models.py
from django.contrib.auth.models import AbstractUser
from phonenumber_field.modelfields import PhoneNumberField
class User(AbstractUser):
phone_number = PhoneNumberField(blank=True)
# yourapp/graphql/types.py
from typing import Optional, cast
import strawberry
import strawberry_django
from strawberry.types import Info
from strawberry_django_phonenumber import PhoneNumber
from yourapp import models
@strawberry_django.type(models.User, fields=["first_name", "last_name"])
class User(strawberry.relay.Node):
"""GraphQL type for the User model."""
@strawberry_django.field
async def phone_number(root, info: Info) -> Optional[PhoneNumber]:
if not root.phone_number:
return None
return cast(PhoneNumber, root.phone_number)
# yourapp/graphql/__init__.py
from typing import Optional
import strawberry
import strawberry_django
from asgiref.sync import sync_to_async
from strawberry.types import Info
from .types import User
@sync_to_async
def aget_user_from_request(request):
return request.user if request.user.is_authenticated else None
@strawberry.type
class Queries:
@strawberry_django.field
async def me(self, info: Info) -> Optional[User]:
user = await aget_user_from_request(info.context.request)
return user
schema = strawberry.Schema(query=Queries)
# yourapp/urls.py
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from strawberry.django.views import AsyncGraphQLView
from .graphql import schema
urlpatterns = [
path(
"graphql/",
csrf_exempt(
AsyncGraphQLView.as_view(
schema=schema,
graphql_ide="graphiql",
)
),
),
]
Installation
pip install strawberry-django-phonenumber
Changelog
0.2.2
- Replace Safety with pip-audit; refresh lockfile and dependency versions
- CI tests Python 3.10 and 3.14; consolidated lint job; updated GitHub Actions
- Dependabot with grouped minor/patch updates; optional pre-commit hook
- Docs: Python 3.10+; `graphql_ide` instead of deprecated `graphiql` on `AsyncGraphQLView`
0.2.1
- Remove deprecated strawberry-graphql debug-server extra
0.2.0
- Remove psycopg2-binary dependency, allow psycopg>=3
0.1.0
- Initial release
Contributing
Install dependencies and run tests (requires PostgreSQL; CI uses postgres / postgres on port 5432):
./poetry-install.sh
export PG_PASSWORD=postgres
poetry run pytest
Lint and security checks (same as CI):
./lint.sh --check
Format/fix locally:
./lint.sh
Optional pre-commit hook (runs ./lint.sh --check):
poetry run pre-commit install
Please open a pull request or issue.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strawberry_django_phonenumber-0.2.2.tar.gz.
File metadata
- Download URL: strawberry_django_phonenumber-0.2.2.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc63df0b59ccc78a800268653e362efd58d593f700414c346022faebb2149f94
|
|
| MD5 |
27009f457e2979523b53e662072067c7
|
|
| BLAKE2b-256 |
8ff4611feee78dcca6249f950a8637cb68a650ce6551c65bb0899317918ff208
|
Provenance
The following attestation bundles were made for strawberry_django_phonenumber-0.2.2.tar.gz:
Publisher:
publish.yml on UpliftAgency/strawberry-django-phonenumber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strawberry_django_phonenumber-0.2.2.tar.gz -
Subject digest:
dc63df0b59ccc78a800268653e362efd58d593f700414c346022faebb2149f94 - Sigstore transparency entry: 1704848147
- Sigstore integration time:
-
Permalink:
UpliftAgency/strawberry-django-phonenumber@dc3853ad30832df1cc3989aeb64eccd875831840 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/UpliftAgency
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dc3853ad30832df1cc3989aeb64eccd875831840 -
Trigger Event:
push
-
Statement type:
File details
Details for the file strawberry_django_phonenumber-0.2.2-py3-none-any.whl.
File metadata
- Download URL: strawberry_django_phonenumber-0.2.2-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c75a7b5f11cdf807fce5b22a030f9e7c84d9b440c5a88a34d53d6cc61ab479d1
|
|
| MD5 |
1ed97c1673af7255fee8f601a32b7678
|
|
| BLAKE2b-256 |
c04291a8d68674c62e4c602969cc845af9753880a3c8b1f032534338427b4100
|
Provenance
The following attestation bundles were made for strawberry_django_phonenumber-0.2.2-py3-none-any.whl:
Publisher:
publish.yml on UpliftAgency/strawberry-django-phonenumber
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strawberry_django_phonenumber-0.2.2-py3-none-any.whl -
Subject digest:
c75a7b5f11cdf807fce5b22a030f9e7c84d9b440c5a88a34d53d6cc61ab479d1 - Sigstore transparency entry: 1704848154
- Sigstore integration time:
-
Permalink:
UpliftAgency/strawberry-django-phonenumber@dc3853ad30832df1cc3989aeb64eccd875831840 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/UpliftAgency
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dc3853ad30832df1cc3989aeb64eccd875831840 -
Trigger Event:
push
-
Statement type: