Skip to content

Commit 4c66ba3

Browse files
authored
Allow filenames without dots in them when sending files (python-telegram-bot#1228)
* Fix issue 1227 by allowing filenames without dots in them * Touch new test data file * Satisfy flake8
1 parent c714a17 commit 4c66ba3

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

telegram/files/inputfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def __init__(self, obj, filename=None, attach=None):
7070
self.filename)[0] or DEFAULT_MIME_TYPE
7171
else:
7272
self.mimetype = DEFAULT_MIME_TYPE
73-
if not self.filename or '.' not in self.filename:
73+
if not self.filename:
7474
self.filename = self.mimetype.replace('/', '.')
7575

7676
@property

tests/data/telegram

Whitespace-only changes.

tests/test_inputfile.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,34 @@ def test_mimetypes(self):
6363
assert (InputFile(BytesIO(b'blah'), filename='tg.notaproperext').mimetype ==
6464
'application/octet-stream')
6565
assert InputFile(BytesIO(b'blah')).mimetype == 'application/octet-stream'
66+
67+
def test_filenames(self):
68+
assert InputFile(open('tests/data/telegram.jpg', 'rb')).filename == 'telegram.jpg'
69+
assert InputFile(open('tests/data/telegram.jpg', 'rb'),
70+
filename='blah').filename == 'blah'
71+
assert InputFile(open('tests/data/telegram.jpg', 'rb'),
72+
filename='blah.jpg').filename == 'blah.jpg'
73+
assert InputFile(open('tests/data/telegram', 'rb')).filename == 'telegram'
74+
assert InputFile(open('tests/data/telegram', 'rb'),
75+
filename='blah').filename == 'blah'
76+
assert InputFile(open('tests/data/telegram', 'rb'),
77+
filename='blah.jpg').filename == 'blah.jpg'
78+
79+
class MockedFileobject(object):
80+
# A open(?, 'rb') without a .name
81+
def __init__(self, f):
82+
self.f = open(f, 'rb')
83+
84+
def read(self):
85+
return self.f.read()
86+
87+
assert InputFile(MockedFileobject('tests/data/telegram.jpg')).filename == 'image.jpeg'
88+
assert InputFile(MockedFileobject('tests/data/telegram.jpg'),
89+
filename='blah').filename == 'blah'
90+
assert InputFile(MockedFileobject('tests/data/telegram.jpg'),
91+
filename='blah.jpg').filename == 'blah.jpg'
92+
assert InputFile(MockedFileobject('tests/data/telegram')).filename == 'application.octet-stream' # flake8: noqa
93+
assert InputFile(MockedFileobject('tests/data/telegram'),
94+
filename='blah').filename == 'blah'
95+
assert InputFile(MockedFileobject('tests/data/telegram'),
96+
filename='blah.jpg').filename == 'blah.jpg'

0 commit comments

Comments
 (0)