2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-22 18:07:21 +00:00

Merge branch 'master' into docs

# Conflicts:
#	compiler/api/compiler.py
#	compiler/docs/compiler.py
This commit is contained in:
Dan 2018-01-21 17:39:16 +01:00
commit b9fa1e414d
9 changed files with 80 additions and 78 deletions

View File

@ -49,7 +49,7 @@ Features
`MTProto Mobile Protocol v2.0`_ and the mechanisms needed for establishing
a reliable connection.
- **Updated**: Pyrogram makes use of the latest Telegram API version, currently `Layer 74`_.
- **Updated**: Pyrogram makes use of the latest Telegram API version, currently `Layer 75`_.
- **Documented**: Pyrogram API public methods are documented and resemble the well
established Telegram Bot API, thus offering a familiar look to Bot developers.
@ -148,7 +148,7 @@ License
.. _`MTProto Mobile Protocol v2.0`: https://core.telegram.org/mtproto
.. _`Layer 74`: compiler/api/source/main_api.tl
.. _`Layer 75`: compiler/api/source/main_api.tl
.. _`your own`: https://github.com/pyrogram/pyrogram/wiki/Getting-Started#api-keys
@ -191,7 +191,7 @@ License
<br><br><br>
<a href="compiler/api/source/main_api.tl">
<img src="https://www.pyrogram.ml/images/scheme.svg"
alt="Scheme Layer 74">
alt="Scheme Layer 75">
</a>
<a href="https://core.telegram.org/mtproto">
<img src="https://www.pyrogram.ml/images/mtproto.svg"
@ -207,7 +207,7 @@ License
.. |scheme| image:: https://www.pyrogram.ml/images/scheme.svg
:target: compiler/api/source/main_api.tl
:alt: Scheme Layer 74
:alt: Scheme Layer 75
.. |mtproto| image:: https://www.pyrogram.ml/images/mtproto.svg
:target: https://core.telegram.org/mtproto

View File

@ -129,15 +129,15 @@ def start():
shutil.rmtree("{}/types".format(DESTINATION), ignore_errors=True)
shutil.rmtree("{}/functions".format(DESTINATION), ignore_errors=True)
with open("{}/source/auth_key.tl".format(HOME)) as auth, \
open("{}/source/sys_msgs.tl".format(HOME)) as system, \
open("{}/source/main_api.tl".format(HOME)) as api:
with open("{}/source/auth_key.tl".format(HOME), encoding="utf-8") as auth, \
open("{}/source/sys_msgs.tl".format(HOME), encoding="utf-8") as system, \
open("{}/source/main_api.tl".format(HOME), encoding="utf-8") as api:
schema = (auth.read() + system.read() + api.read()).splitlines()
with open("{}/template/class.txt".format(HOME)) as f:
with open("{}/template/class.txt".format(HOME), encoding="utf-8") as f:
template = f.read()
with open(NOTICE_PATH) as f:
with open(NOTICE_PATH, encoding="utf-8") as f:
notice = []
for line in f.readlines():
@ -234,10 +234,10 @@ def start():
init = "{}/__init__.py".format(path)
if not os.path.exists(init):
with open(init, "w") as f:
with open(init, "w", encoding="utf-8") as f:
f.write(notice + "\n\n")
with open(init, "a") as f:
with open(init, "a", encoding="utf-8") as f:
f.write("from .{} import {}\n".format(snek(c.name), capit(c.name)))
sorted_args = sort_args(c.args)
@ -370,7 +370,7 @@ def start():
read_types += "\n "
read_types += "{} = Object.read(b)\n ".format(arg_name)
with open("{}/{}.py".format(path, snek(c.name)), "w") as f:
with open("{}/{}.py".format(path, snek(c.name)), "w", encoding="utf-8") as f:
f.write(
template.format(
notice=notice,
@ -387,7 +387,7 @@ def start():
)
)
with open("{}/all.py".format(DESTINATION), "w") as f:
with open("{}/all.py".format(DESTINATION), "w", encoding="utf-8") as f:
f.write(notice + "\n\n")
f.write("layer = {}\n\n".format(layer))
f.write("objects = {")
@ -409,7 +409,7 @@ def start():
f.write("\n}\n")
for k, v in namespaces.items():
with open("{}/{}/__init__.py".format(DESTINATION, k), "a") as f:
with open("{}/{}/__init__.py".format(DESTINATION, k), "a", encoding="utf-8") as f:
f.write("from . import {}\n".format(", ".join([i for i in v])) if v else "")

View File

@ -44,7 +44,7 @@ def generate(source_path, base):
if not i.startswith("__"):
build("/".join([path, i]), level=level + 1)
except NotADirectoryError:
with open(path + "/" + i) as f:
with open(path + "/" + i, encoding="utf-8") as f:
p = ast.parse(f.read())
for node in ast.walk(p):
@ -59,7 +59,7 @@ def generate(source_path, base):
os.makedirs(os.path.dirname(destination + "/" + full_path), exist_ok=True)
with open(destination + "/" + full_path, "w") as f:
with open(destination + "/" + full_path, "w", encoding="utf-8") as f:
f.write(
page_template.format(
title=name,
@ -94,7 +94,7 @@ def generate(source_path, base):
inner_path = base + "/index" + ".rst"
module = "pyrogram.api.{}".format(base)
with open(destination + "/" + inner_path, "w") as f:
with open(destination + "/" + inner_path, "w", encoding="utf-8") as f:
if k == base:
f.write(":tocdepth: 1\n\n")
@ -114,10 +114,10 @@ def start():
global page_template
global toctree
with open(home + "/template/page.txt") as f:
with open(home + "/template/page.txt", encoding="utf-8") as f:
page_template = f.read()
with open(home + "/template/toctree.txt") as f:
with open(home + "/template/toctree.txt", encoding="utf-8") as f:
toctree = f.read()
generate(types_path, types_base)

View File

@ -43,7 +43,7 @@ def start():
files = [i for i in os.listdir("{}/source".format(home))]
with open(notice_path) as f:
with open(notice_path, encoding="utf-8") as f:
notice = []
for line in f.readlines():
@ -51,7 +51,7 @@ def start():
notice = "\n".join(notice)
with open("{}/all.py".format(dest), "w") as f_all:
with open("{}/all.py".format(dest), "w", encoding="utf-8") as f_all:
f_all.write(notice + "\n\n")
f_all.write("count = {count}\n\n")
f_all.write("exceptions = {\n")
@ -66,14 +66,14 @@ def start():
init = "{}/__init__.py".format(dest)
if not os.path.exists(init):
with open(init, "w") as f_init:
with open(init, "w", encoding="utf-8") as f_init:
f_init.write(notice + "\n\n")
with open(init, "a") as f_init:
with open(init, "a", encoding="utf-8") as f_init:
f_init.write("from .{}_{} import *\n".format(name.lower(), code))
with open("{}/source/{}".format(home, i)) as f_csv, \
open("{}/{}_{}.py".format(dest, name.lower(), code), "w") as f_class:
with open("{}/source/{}".format(home, i), encoding="utf-8") as f_csv, \
open("{}/{}_{}.py".format(dest, name.lower(), code), "w", encoding="utf-8") as f_class:
reader = csv.reader(f_csv, delimiter="\t")
super_class = caml(name)
@ -98,10 +98,10 @@ def start():
sub_classes.append((sub_class, id, message))
with open("{}/template/class.txt".format(home), "r") as f_class_template:
with open("{}/template/class.txt".format(home), "r", encoding="utf-8") as f_class_template:
class_template = f_class_template.read()
with open("{}/template/sub_class.txt".format(home), "r") as f_sub_class_template:
with open("{}/template/sub_class.txt".format(home), "r", encoding="utf-8") as f_sub_class_template:
sub_class_template = f_sub_class_template.read()
class_template = class_template.format(
@ -123,10 +123,10 @@ def start():
f_all.write("}\n")
with open("{}/all.py".format(dest)) as f:
with open("{}/all.py".format(dest), encoding="utf-8") as f:
content = f.read()
with open("{}/all.py".format(dest), "w") as f:
with open("{}/all.py".format(dest), "w", encoding="utf-8") as f:
f.write(re.sub("{count}", str(count), content))
print("Compiling Errors: [100%]")

View File

@ -16,9 +16,9 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
__copyright__ = "Copyright (C) 2017-2018 Dan Tès <https://github.com/delivrance>"
__copyright__ = "Copyright (C) 2017-2018 Dan Tès <https://github.com/delivrance>".encode(errors="replace").decode()
__license__ = "GNU Lesser General Public License v3 or later (LGPLv3+)"
__version__ = "0.4.0"
__version__ = "0.4.2"
from .api.errors import Error
from .client import ChatAction

View File

@ -42,7 +42,7 @@ class Error(Exception):
# TODO: Proper log unknown errors
if self.CODE == 520:
with open("unknown_errors.txt", "a") as f:
with open("unknown_errors.txt", "a", encoding="utf-8") as f:
f.write("{}\t{}\t{}\n".format(x.error_code, x.error_message, query_type))
@staticmethod

View File

@ -311,7 +311,7 @@ class Client:
def load_session(self, session_name):
try:
with open("{}.session".format(session_name)) as f:
with open("{}.session".format(session_name), encoding="utf-8") as f:
s = json.load(f)
except FileNotFoundError:
self.dc_id = 1
@ -326,7 +326,7 @@ class Client:
auth_key = base64.b64encode(self.auth_key).decode()
auth_key = [auth_key[i: i + 43] for i in range(0, len(auth_key), 43)]
with open("{}.session".format(self.session_name), "w") as f:
with open("{}.session".format(self.session_name), "w", encoding="utf-8") as f:
json.dump(
dict(
dc_id=self.dc_id,
@ -604,10 +604,10 @@ class Client:
file=file,
ttl_seconds=ttl_seconds
),
**self.markdown.parse(caption),
silent=disable_notification or None,
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id()
random_id=self.rnd_id(),
**self.markdown.parse(caption)
)
)
except FilePartMissing as e:
@ -682,10 +682,10 @@ class Client:
types.DocumentAttributeFilename(os.path.basename(audio))
]
),
**self.markdown.parse(caption),
silent=disable_notification or None,
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id()
random_id=self.rnd_id(),
**self.markdown.parse(caption)
)
)
except FilePartMissing as e:
@ -741,10 +741,10 @@ class Client:
types.DocumentAttributeFilename(os.path.basename(document))
]
),
**self.markdown.parse(caption),
silent=disable_notification or None,
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id()
random_id=self.rnd_id(),
**self.markdown.parse(caption)
)
)
except FilePartMissing as e:
@ -816,10 +816,10 @@ class Client:
)
]
),
**self.markdown.parse(caption),
silent=disable_notification or None,
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id()
random_id=self.rnd_id(),
**self.markdown.parse(caption)
)
)
except FilePartMissing as e:
@ -882,10 +882,10 @@ class Client:
)
]
),
**self.markdown.parse(caption),
silent=disable_notification or None,
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id()
random_id=self.rnd_id(),
**self.markdown.parse(caption)
)
)
except FilePartMissing as e:

View File

@ -1,31 +0,0 @@
[metadata]
name = Pyrogram
version = attr: pyrogram.__version__
description = Telegram MTProto API Client Library for Python
url = https://github.com/pyrogram/pyrogram
author = Dan Tès
author_email = admin@pyrogram.ml
license = LGPLv3+
keywords = telegram mtproto api client library python
classifiers =
Development Status :: 3 - Alpha
Intended Audience :: Developers
License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Operating System :: OS Independent
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
Programming Language :: Python :: 3.5
Programming Language :: Python :: 3.6
Topic :: Internet
Topic :: Communications :: Chat
Topic :: Software Development :: Libraries
Topic :: Software Development :: Libraries :: Python Modules
[options]
packages = find:
zip_safe = False
setup_requires = pyaes; pysocks
install_requires = pyaes; pysocks
include_package_data = True

View File

@ -19,7 +19,7 @@
import re
from sys import argv
from setuptools import setup
from setuptools import setup, find_packages
from compiler.api import compiler as api_compiler
from compiler.error import compiler as error_compiler
@ -31,9 +31,42 @@ if len(argv) > 1 and argv[1] != "sdist":
error_compiler.start()
# docs_compiler.start()
with open("pyrogram/__init__.py", encoding="utf-8") as f:
version = re.findall(r"__version__ = \"(.+)\"", f.read())[0]
# PyPI doesn't like raw html
with open("README.rst", encoding="UTF-8") as f:
with open("README.rst", encoding="utf-8") as f:
readme = re.sub(r"\.\. \|.+\| raw:: html(?:\s{4}.+)+\n\n", "", f.read())
readme = re.sub(r"\|header\|", "|logo|\n\n|description|\n\n|scheme| |mtproto|", readme)
setup(long_description=readme)
setup(
name="Pyrogram",
version=version,
description="Telegram MTProto API Client Library for Python",
url="https://github.com/pyrogram/pyrogram",
author="Dan Tès",
author_email="admin@pyrogram.ml",
license="LGPLv3+",
keywords="telegram mtproto api client library python",
long_description=readme,
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Internet",
"Topic :: Communications :: Chat",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules"
],
packages=find_packages(),
zip_safe=False,
install_requires=["pyaes", "pysocks"],
include_package_data=True,
)