Skip to content

Commit 69408f6

Browse files
committed
Add support for modifying files and file_set support (#4)
* Add support for modifying files and file_set support * Bump version * Updated file sets to use name everywhere * Bump to 0.4.0
1 parent ff751ab commit 69408f6

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

openai/api_resources/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from openai.api_resources.error_object import ErrorObject
55
from openai.api_resources.event import Event
66
from openai.api_resources.file import File
7+
from openai.api_resources.file_set import FileSet
78
from openai.api_resources.higherlevel import HigherLevel
89
from openai.api_resources.plan import Plan
910
from openai.api_resources.run import Run

openai/api_resources/file.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,14 @@
77
import openai
88
from openai import api_requestor, util
99
from openai.api_resources.abstract import (
10-
APIResource,
11-
CreateableAPIResource,
1210
DeletableAPIResource,
1311
ListableAPIResource,
1412
UpdateableAPIResource,
1513
)
1614
from openai.util import log_info
1715

1816

19-
class File(ListableAPIResource):
17+
class File(ListableAPIResource, UpdateableAPIResource, DeletableAPIResource):
2018
OBJECT_NAME = "file"
2119

2220
@classmethod

openai/api_resources/file_set.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from __future__ import absolute_import, division, print_function
2+
3+
from openai import error, six, util
4+
from openai.six.moves.urllib.parse import quote_plus
5+
from openai.api_resources.abstract import (
6+
CreateableAPIResource,
7+
DeletableAPIResource,
8+
ListableAPIResource,
9+
)
10+
11+
12+
class FileSet(
13+
CreateableAPIResource,
14+
ListableAPIResource,
15+
DeletableAPIResource,
16+
):
17+
OBJECT_NAME = "file_set"
18+
19+
def __init__(self, name, *args, **kwargs):
20+
self.name = name
21+
super().__init__(*args, name=self.name, **kwargs)
22+
23+
@classmethod
24+
def retrieve(cls, name, api_key=None, request_id=None, **params):
25+
instance = cls(name, api_key, **params)
26+
instance.refresh(request_id=request_id)
27+
return instance
28+
29+
def instance_url(self):
30+
# file_sets are normally called by their name, not their id
31+
name = self.get("name")
32+
33+
if not isinstance(name, six.string_types):
34+
raise error.InvalidRequestError(
35+
"Could not determine which URL to request: %s instance "
36+
"has invalid ID: %r, %s. ID should be of type `str` (or"
37+
" `unicode`)" % (type(self).__name__, name, type(name)),
38+
"name",
39+
)
40+
41+
id = util.utf8(name)
42+
base = self.class_url()
43+
extn = quote_plus(id)
44+
return "%s/%s" % (base, extn)

0 commit comments

Comments
 (0)