From b693eca3149fa9cede38ead53860c362bbe3d118 Mon Sep 17 00:00:00 2001 From: gehrisandro Date: Mon, 6 Nov 2023 08:12:52 +0100 Subject: [PATCH] Adjust model response object to the latest API changes --- README.md | 17 ----- src/Resources/Models.php | 4 +- src/Responses/Models/ListResponse.php | 6 +- src/Responses/Models/RetrieveResponse.php | 25 +------ .../Models/RetrieveResponsePermission.php | 66 ------------------- .../Models/RetrieveResponseFixture.php | 18 ----- tests/Fixtures/Model.php | 18 ----- tests/Resources/Models.php | 21 +----- tests/Responses/Models/RetrieveResponse.php | 17 +---- .../Models/RetrieveResponsePermission.php | 28 -------- 10 files changed, 12 insertions(+), 208 deletions(-) delete mode 100644 src/Responses/Models/RetrieveResponsePermission.php delete mode 100644 tests/Responses/Models/RetrieveResponsePermission.php diff --git a/README.md b/README.md index be3c1cab..affe0239 100644 --- a/README.md +++ b/README.md @@ -115,23 +115,6 @@ $response->id; // 'gpt-3.5-turbo-instruct' $response->object; // 'model' $response->created; // 1642018370 $response->ownedBy; // 'openai' -$response->root; // 'gpt-3.5-turbo-instruct' -$response->parent; // null - -foreach ($response->permission as $result) { - $result->id; // 'modelperm-7E53j9OtnMZggjqlwMxW4QG7' - $result->object; // 'model_permission' - $result->created; // 1664307523 - $result->allowCreateEngine; // false - $result->allowSampling; // true - $result->allowLogprobs; // true - $result->allowSearchIndices; // false - $result->allowView; // true - $result->allowFineTuning; // false - $result->organization; // '*' - $result->group; // null - $result->isBlocking; // false -} $response->toArray(); // ['id' => 'gpt-3.5-turbo-instruct', ...] ``` diff --git a/src/Resources/Models.php b/src/Resources/Models.php index d28908bc..f88817f4 100644 --- a/src/Resources/Models.php +++ b/src/Resources/Models.php @@ -24,7 +24,7 @@ public function list(): ListResponse { $payload = Payload::list('models'); - /** @var Response, root: string, parent: ?string}>}> $response */ + /** @var Response}> $response */ $response = $this->transporter->requestObject($payload); return ListResponse::from($response->data(), $response->meta()); @@ -39,7 +39,7 @@ public function retrieve(string $model): RetrieveResponse { $payload = Payload::retrieve('models', $model); - /** @var Response, root: string, parent: ?string}> $response */ + /** @var Response $response */ $response = $this->transporter->requestObject($payload); return RetrieveResponse::from($response->data(), $response->meta()); diff --git a/src/Responses/Models/ListResponse.php b/src/Responses/Models/ListResponse.php index 2ccb8307..c6557427 100644 --- a/src/Responses/Models/ListResponse.php +++ b/src/Responses/Models/ListResponse.php @@ -12,12 +12,12 @@ use OpenAI\Testing\Responses\Concerns\Fakeable; /** - * @implements ResponseContract, root: string, parent: ?string}>}> + * @implements ResponseContract}> */ final class ListResponse implements ResponseContract, ResponseHasMetaInformationContract { /** - * @use ArrayAccessible, root: string, parent: ?string}>}> + * @use ArrayAccessible}> */ use ArrayAccessible; @@ -37,7 +37,7 @@ private function __construct( /** * Acts as static factory, and returns a new Response instance. * - * @param array{object: string, data: array, root: string, parent: ?string}>} $attributes + * @param array{object: string, data: array} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { diff --git a/src/Responses/Models/RetrieveResponse.php b/src/Responses/Models/RetrieveResponse.php index 43fb8c85..979c6dc9 100644 --- a/src/Responses/Models/RetrieveResponse.php +++ b/src/Responses/Models/RetrieveResponse.php @@ -12,29 +12,23 @@ use OpenAI\Testing\Responses\Concerns\Fakeable; /** - * @implements ResponseContract, root: string, parent: ?string}> + * @implements ResponseContract */ final class RetrieveResponse implements ResponseContract, ResponseHasMetaInformationContract { /** - * @use ArrayAccessible, root: string, parent: ?string}> + * @use ArrayAccessible */ use ArrayAccessible; use Fakeable; use HasMetaInformation; - /** - * @param array $permission - */ private function __construct( public readonly string $id, public readonly string $object, public readonly int $created, public readonly string $ownedBy, - public readonly array $permission, - public readonly string $root, - public readonly ?string $parent, private readonly MetaInformation $meta, ) { } @@ -42,22 +36,15 @@ private function __construct( /** * Acts as static factory, and returns a new Response instance. * - * @param array{id: string, object: string, created: int, owned_by: string, permission: array, root: string, parent: ?string} $attributes + * @param array{id: string, object: string, created: int, owned_by: string} $attributes */ public static function from(array $attributes, MetaInformation $meta): self { - $permission = array_map(fn (array $result): RetrieveResponsePermission => RetrieveResponsePermission::from( - $result - ), $attributes['permission']); - return new self( $attributes['id'], $attributes['object'], $attributes['created'], $attributes['owned_by'], - $permission, - $attributes['root'], - $attributes['parent'], $meta, ); } @@ -72,12 +59,6 @@ public function toArray(): array 'object' => $this->object, 'created' => $this->created, 'owned_by' => $this->ownedBy, - 'permission' => array_map( - static fn (RetrieveResponsePermission $result): array => $result->toArray(), - $this->permission, - ), - 'root' => $this->root, - 'parent' => $this->parent, ]; } } diff --git a/src/Responses/Models/RetrieveResponsePermission.php b/src/Responses/Models/RetrieveResponsePermission.php deleted file mode 100644 index 26136800..00000000 --- a/src/Responses/Models/RetrieveResponsePermission.php +++ /dev/null @@ -1,66 +0,0 @@ - $this->id, - 'object' => $this->object, - 'created' => $this->created, - 'allow_create_engine' => $this->allowCreateEngine, - 'allow_sampling' => $this->allowSampling, - 'allow_logprobs' => $this->allowLogprobs, - 'allow_search_indices' => $this->allowSearchIndices, - 'allow_view' => $this->allowView, - 'allow_fine_tuning' => $this->allowFineTuning, - 'organization' => $this->organization, - 'group' => $this->group, - 'is_blocking' => $this->isBlocking, - ]; - } -} diff --git a/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.php b/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.php index 5a093948..0d4dab02 100644 --- a/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.php +++ b/src/Testing/Responses/Fixtures/Models/RetrieveResponseFixture.php @@ -9,23 +9,5 @@ final class RetrieveResponseFixture 'object' => 'model', 'created' => 1_642_018_370, 'owned_by' => 'openai', - 'permission' => [ - [ - 'id' => 'snapperm-7oP3WFr9x7qf5xb3eZrVABAH', - 'object' => 'model_permission', - 'created' => 1_642_018_480, - 'allow_create_engine' => false, - 'allow_sampling' => true, - 'allow_logprobs' => true, - 'allow_search_indices' => false, - 'allow_view' => true, - 'allow_fine_tuning' => false, - 'organization' => '*', - 'group' => null, - 'is_blocking' => false, - ], - ], - 'root' => 'text-babbage:001', - 'parent' => null, ]; } diff --git a/tests/Fixtures/Model.php b/tests/Fixtures/Model.php index a3521fee..b2f06f0b 100644 --- a/tests/Fixtures/Model.php +++ b/tests/Fixtures/Model.php @@ -10,24 +10,6 @@ function model(): array 'object' => 'model', 'created' => 1642018370, 'owned_by' => 'openai', - 'permission' => [ - [ - 'id' => 'snapperm-7oP3WFr9x7qf5xb3eZrVABAH', - 'object' => 'model_permission', - 'created' => 1642018480, - 'allow_create_engine' => false, - 'allow_sampling' => true, - 'allow_logprobs' => true, - 'allow_search_indices' => false, - 'allow_view' => true, - 'allow_fine_tuning' => false, - 'organization' => '*', - 'group' => null, - 'is_blocking' => false, - ], - ], - 'root' => 'text-babbage:001', - 'parent' => null, ]; } diff --git a/tests/Resources/Models.php b/tests/Resources/Models.php index e8064709..c99f746c 100644 --- a/tests/Resources/Models.php +++ b/tests/Resources/Models.php @@ -4,7 +4,6 @@ use OpenAI\Responses\Models\DeleteResponse; use OpenAI\Responses\Models\ListResponse; use OpenAI\Responses\Models\RetrieveResponse; -use OpenAI\Responses\Models\RetrieveResponsePermission; test('list', function () { $client = mockClient('GET', 'models', [], \OpenAI\ValueObjects\Transporter\Response::from(modelList(), metaHeaders())); @@ -34,25 +33,7 @@ ->id->toBe('text-babbage:001') ->object->toBe('model') ->created->toBe(1642018370) - ->ownedBy->toBe('openai') - ->permission->toBeArray()->toHaveCount(1) - ->permission->each->toBeInstanceOf(RetrieveResponsePermission::class) - ->root->toBe('text-babbage:001') - ->parent->toBe(null); - - expect($result->permission[0]) - ->id->toBe('snapperm-7oP3WFr9x7qf5xb3eZrVABAH') - ->object->toBe('model_permission') - ->created->toBe(1642018480) - ->allowCreateEngine->toBe(false) - ->allowSampling->toBe(true) - ->allowLogprobs->toBe(true) - ->allowSearchIndices->toBe(false) - ->allowView->toBe(true) - ->allowFineTuning->toBe(false) - ->organization->toBe('*') - ->group->toBe(null) - ->isBlocking->toBe(false); + ->ownedBy->toBe('openai'); expect($result->meta()) ->toBeInstanceOf(MetaInformation::class); diff --git a/tests/Responses/Models/RetrieveResponse.php b/tests/Responses/Models/RetrieveResponse.php index 6efb050a..8ee72d2c 100644 --- a/tests/Responses/Models/RetrieveResponse.php +++ b/tests/Responses/Models/RetrieveResponse.php @@ -2,7 +2,6 @@ use OpenAI\Responses\Meta\MetaInformation; use OpenAI\Responses\Models\RetrieveResponse; -use OpenAI\Responses\Models\RetrieveResponsePermission; test('from', function () { $result = RetrieveResponse::from(model(), meta()); @@ -13,10 +12,6 @@ ->object->toBe('model') ->created->toBe(1642018370) ->ownedBy->toBe('openai') - ->permission->toBeArray()->toHaveCount(1) - ->permission->each->toBeInstanceOf(RetrieveResponsePermission::class) - ->root->toBe('text-babbage:001') - ->parent->toBe(null) ->meta()->toBeInstanceOf(MetaInformation::class); }); @@ -38,22 +33,16 @@ expect($response) ->id->toBe('text-babbage:001') - ->and($response->permission[0]) - ->allowCreateEngine->toBeFalse(); + ->ownedBy->toBe('openai'); }); test('fake with override', function () { $response = RetrieveResponse::fake([ 'id' => 'text-1234', - 'permission' => [ - [ - 'allow_create_engine' => true, - ], - ], + 'owned_by' => 'xyz-dev', ]); expect($response) ->id->toBe('text-1234') - ->and($response->permission[0]) - ->allowCreateEngine->toBeTrue(); + ->ownedBy->toBe('xyz-dev'); }); diff --git a/tests/Responses/Models/RetrieveResponsePermission.php b/tests/Responses/Models/RetrieveResponsePermission.php deleted file mode 100644 index 61493c26..00000000 --- a/tests/Responses/Models/RetrieveResponsePermission.php +++ /dev/null @@ -1,28 +0,0 @@ -id->toBe('snapperm-7oP3WFr9x7qf5xb3eZrVABAH') - ->object->toBe('model_permission') - ->created->toBe(1642018480) - ->allowCreateEngine->toBe(false) - ->allowSampling->toBe(true) - ->allowLogprobs->toBe(true) - ->allowSearchIndices->toBe(false) - ->allowView->toBe(true) - ->allowFineTuning->toBe(false) - ->organization->toBe('*') - ->group->toBe(null) - ->isBlocking->toBe(false); -}); - -test('to array', function () { - $result = RetrieveResponsePermission::from(model()['permission'][0]); - - expect($result->toArray()) - ->toBe(model()['permission'][0]); -});