# Path: psqlextra/models/partitioned.py
# class PostgresPartitionedModel(
#     PostgresModel, metaclass=PostgresPartitionedModelMeta
# ):
#     """Base class for taking advantage of PostgreSQL's 11.x native support for
#     table partitioning."""
# 
#     class Meta:
#         abstract = True
#         base_manager_name = "objects"
# 
# Path: psqlextra/partitioning/strategy.py
# class PostgresPartitioningStrategy:
#     """Base class for implementing a partitioning strategy for a partitioned
#     table."""
# 
#     @abstractmethod
#     def to_create(
#         self,
#     ) -> Generator[PostgresPartition, None, None]:
#         """Generates a list of partitions to be created."""
# 
#     @abstractmethod
#     def to_delete(
#         self,
#     ) -> Generator[PostgresPartition, None, None]:
#         """Generates a list of partitions to be deleted."""


from psqlextra.models import PostgresPartitionedModel
from .strategy import PostgresPartitioningStrategy



class PostgresPartitioningConfig:
    """Configuration for partitioning a specific model according to the
    specified strategy."""

    def __init__(
        self,

# Path: psqlextra/models/partitioned.py
# class PostgresPartitionedModel(
#     PostgresModel, metaclass=PostgresPartitionedModelMeta
# ):
#     """Base class for taking advantage of PostgreSQL's 11.x native support for
#     table partitioning."""
# 
#     class Meta:
#         abstract = True
#         base_manager_name = "objects"
# 
# Path: psqlextra/partitioning/strategy.py
# class PostgresPartitioningStrategy:
#     """Base class for implementing a partitioning strategy for a partitioned
#     table."""
# 
#     @abstractmethod
#     def to_create(
#         self,
#     ) -> Generator[PostgresPartition, None, None]:
#         """Generates a list of partitions to be created."""
# 
#     @abstractmethod
#     def to_delete(
#         self,
#     ) -> Generator[PostgresPartition, None, None]:
#         """Generates a list of partitions to be deleted."""


# Path: psqlextra/partitioning/config.py
from psqlextra.models import PostgresPartitionedModel
from .strategy import PostgresPartitioningStrategy




class PostgresPartitioningConfig:
    """Configuration for partitioning a specific model according to the
    specified strategy."""

    def __init__(
        self,

        model: PostgresPartitionedModel,