Add foreign key validation in Collection
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dai punti di ingresso di Schema e Collection, quindi esamina il comportamento esistente di require_relationship_one_to_at_least_one e @dy.filter descritto nell’issue. Confronta la dichiarazione richiesta con l’approccio foreign_key di sqlmodel. Il lavoro è completato quando i membri di una collection possono dichiarare riferimenti e le chiavi referenziate mancanti generano un’assertion invece di essere filtrate silenziosamente; non viene indicato alcun file o test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Lets say you have this basic example:
class Country(dy.Schema):
country_code = dy.String(primary_key=True)
capital = dy.String()
class CountryPair(dy.Schema):
a_country_code = dy.String(primary_key=True)
b_country_code = dy.String(primary_key=True)
distance = dy.Float64()
class MyCollection(dy.Collection):
"""Collection of all input tables for DMU balancing optimization."""
country: dy.LazyFrame[Country]
country_pair: dy.LazyFrame[CountryPair]
You might want to check/assert that a_country_code and b_country_code are present in Country.country_code.
Today you can use require_relationship_one_to_at_least_one but this will not raise a Expection but only filter.
And I would like to have something that is closer to my Collection definition. I tried to add in my Collection:
@dy.filter()
def at_least_one_diagnosis_per_invoice(self) -> pl.LazyFrame:
return self.country.select(pl.col.country_code.name.prefix("a_")).join(
self.country_pair,
on="a_country_code",
how="inner",
)
# But it fails with: ImplementationError: Members of a collection must have an overlapping primary key but did not find any
But even if this worked, I am more interesting into an assertion rather than a filter.
Do you think we can add support for foreign_key in the same manner this is done by sqlmodel
Exmaple:
class Country(dy.Schema):
country_code = dy.String(primary_key=True)
capital = dy.String()
class CountryPair(dy.Schema):
a_country_code = dy.String(primary_key=True, foreign_key="country.country_code") # reference Collection attribute
b_country_code = dy.String(primary_key=True, foreign_key="country.country_code") # reference Collection attribute
distance = dy.Float64()
class MyCollection(dy.Collection):
"""Collection of all input tables for DMU balancing optimization."""
country: dy.LazyFrame[Country]
country_pair: dy.LazyFrame[CountryPair]
- Lingua principale
- Python
- Stelle
- 618
- Fork
- 21
- Merge medio
- 14h 34m
- PR unite (30g)
- 7
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Quantco/dataframely
-
Expose validation errors Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Quantco/dataframely#402 · 3 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
Quantco/dataframely#357 · 1 reazione ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Quantco/dataframely#309 · 4 commenti · 2 reazioni ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
Quantco/dataframely#273 · 5 commenti · 1 reazione ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Quantco/dataframely#272 · 10 commenti · 1 reazione ·
Tutte le issue di Quantco/dataframely
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
stephrobert/dsoxlab#238 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
sublimehq/package_control#1780 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
nwg-piotr/nwg-displays#145 ·