Skip to content

Commit

Permalink
Merge branch 'release/0.9.9'
Browse files Browse the repository at this point in the history
  • Loading branch information
prawn-cake committed Jul 18, 2017
2 parents 4a3f495 + 0eaa8b0 commit 4670089
Show file tree
Hide file tree
Showing 16 changed files with 675 additions and 785 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.9.8
current_version = 0.9.9
tag = False
tag_name = {new_version}
commit = True
Expand Down
6 changes: 5 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
Changelog
=========

0.9.8 (2017-04-01)
0.9.8+1 (UNRELEASED)
--------------------
* [Bugfix] #25: Fix logging issues

0.9.8 (2017-04-01)
------------------
* Remove deprecated code

0.9.7 (2016-11-15)
Expand Down
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,25 @@ Just pass `scope` and/or `api_version` parameters like
api = vk_requests.create_api(..., scope=['offline', 'status'], api_version='5.00')
api.status.set(text='Hello world!')

### Enable debug logger
From your code:
### Enable logging

To enable library logging in your project you should do as follows:

import logging

# Setup basic config
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s [%(name)s] %(message)s',
)

# To change log level for the library logger
logging.getLogger('vk-requests').setLevel(logging.DEBUG)


## Features
### Straightforward queries

### Simple queries

# Returns list of users
api.users.get(users_ids=1)
Expand Down
6 changes: 3 additions & 3 deletions requirements-test.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-r requirements.txt

mock == 1.3.0
nose == 1.3.7
coverage == 4.0.3
mock
nose
coverage
23 changes: 17 additions & 6 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
from setuptools import setup

import sys


PY_VERSION = sys.version_info.major, sys.version_info.minor

install_requires = [
'six',
'requests>=2.8.1',
'beautifulsoup4>=4.4.1']


if PY_VERSION >= (3, 4):
install_requires.append('aiohttp')


setup(
name='vk-requests',
version='0.9.8',
version='0.9.9',
packages=['vk_requests'],
url='https://github.com/prawn-cake/vk-requests',
license='MIT',
author='Maksim Ekimovskii',
author_email='ekimovsky.maksim@gmail.com',
description='vk.com requests for humans. API library for vk.com',
install_requires=[
'six',
'requests>=2.8.1',
'beautifulsoup4>=4.4.1'
],
install_requires=install_requires,
classifiers=[
'Intended Audience :: Developers',

Expand Down
33 changes: 23 additions & 10 deletions vk_requests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
from vk_requests.auth import InteractiveVKSession, VKSession
from vk_requests.session import VKSession
from vk_requests.api import API


__version__ = '0.9.8'
__version__ = '0.9.9'


def create_api(app_id=None, login=None, password=None, phone_number=None,
Expand All @@ -28,11 +28,24 @@ def create_api(app_id=None, login=None, password=None, phone_number=None,
:rtype : vk_requests.api.API
"""

session_cls = InteractiveVKSession if interactive else VKSession
session = session_cls(app_id=app_id,
user_login=login,
user_password=password,
phone_number=phone_number,
scope=scope,
api_version=api_version)
return API(session=session, timeout=timeout, **method_default_args)
session = VKSession(app_id=app_id,
user_login=login,
user_password=password,
phone_number=phone_number,
scope=scope,
api_version=api_version,
interactive=interactive)
return API(session=session, timeout=timeout, **method_default_args)


# Set default logging handler to avoid "No handler found" warnings.
import logging

try: # Python 2.7+
from logging import NullHandler
except ImportError:
class NullHandler(logging.Handler):
def emit(self, record):
pass

logging.getLogger('vk-requests').addHandler(NullHandler())
63 changes: 33 additions & 30 deletions vk_requests/api.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
# -*- coding: utf-8 -*-

import logging


logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s [%(name)s] %(message)s',
)
logger = logging.getLogger('vk-requests')


Expand All @@ -18,52 +13,60 @@ def __init__(self, session, timeout=10, **default_request_kwargs):

def get_default_kwargs(self):
"""Getter method.
It is used in vk_requests.auth.VKSession.send_api_request
It is used in vk_requests.session.VKSession.send_api_request
:return: copy of default requests kwargs dict
"""
return self._default_request_kwargs.copy()

def get_timeout(self):
return self._timeout

def make_request(self, request_obj):
"""Make http request. This method is being called from Request object
:param request_obj: vk_requests.api.Request
:return: dict | VkAPIError
"""
return self._session.make_request(request_obj)

def __getattr__(self, method_name):
return Request(self, method_name)
return Request(session=self._session,
method_name=method_name,
timeout=self._timeout)


class Request(object):
__slots__ = ('_api', '_method_name', '_method_args')
__slots__ = ('_session', 'timeout', '_method_name', '_method_args')

def __init__(self, api, method_name):
self._api = api
def __init__(self, session, method_name, timeout=10):
"""
:param session: vk_requests.session.VKSession instance
:param method_name: str: method name
"""
self._session = session
self._method_name = method_name
self._method_args = None # will be set with __call__ execution
self.timeout = timeout

def get_api(self):
return self._api

def get_method_name(self):
@property
def method_name(self):
return self._method_name

def get_method_args(self):
@method_name.setter
def method_name(self, val):
raise AttributeError('method_name is immutable')

@property
def method_args(self):
return self._method_args

@method_args.setter
def method_args(self, val):
raise AttributeError('method_args is immutable')

def __getattr__(self, method_name):
return Request(self._api, '.'.join([self._method_name, method_name]))
new_method = '.'.join([self._method_name, method_name])
return Request(session=self._session,
method_name=new_method,
timeout=self.timeout)

def __call__(self, **method_args):
self._method_args = method_args
return self._api.make_request(request_obj=self)
return self._session.make_request(request_obj=self)

def __repr__(self): # pragma: no cover
return "%s(method='%s', args=%s)" % (
self.__class__.__name__, self.get_method_name(),
self.get_method_args())
self.__class__.__name__,
self.method_name,
self.method_args)

0 comments on commit 4670089

Please sign in to comment.