Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3641822

Browse files
created a setup.py file for instaling the library and created entry_points for the cli script
1 parent f01605d commit 3641822

File tree

8 files changed

+80
-33
lines changed

8 files changed

+80
-33
lines changed

ether_sql.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

ether_sql/cli/__init__.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
import click
22
import logging
3+
from sqlalchemy import func
34

45
from ether_sql.cli import sql, ether
6+
from ether_sql.session import Session
7+
from ether_sql.scrapper import scrape_blocks, add_block_number
8+
from ether_sql.models import Blocks
59

610
logger = logging.getLogger(__name__)
711

812

913
@click.group()
10-
@click.option('--settings', default='DefaultSettings', help='settings to run ether_sql')
14+
@click.option('--settings', default='DefaultSettings',
15+
help='settings to run ether_sql')
1116
@click.pass_context
1217
def cli(ctx, settings):
1318
"""CLI script for ether_sql"""
14-
from ether_sql.session import Session
19+
if ctx.obj is None:
20+
ctx.obj = {}
21+
1522
logger.debug('settings')
1623
ctx.obj['session'] = Session(settings=settings)
1724

@@ -27,11 +34,10 @@ def cli(ctx, settings):
2734
def scrape_block_range(ctx, start_block_number, end_block_number):
2835
"""
2936
Pushes the data between start_block_number and end_block_number in the
30-
database
37+
database. If no values are provided, the start_block_number is the last
38+
block_number+1 in sql and end_block_number is the current block_number in
39+
node
3140
"""
32-
from sqlalchemy import func
33-
from ether_sql.scrapper import scrape_blocks
34-
from ether_sql.models import Blocks
3541

3642
# A DBSession() instance establishes all conversations with the database
3743
# and represents a "staging zone" for all the objects loaded into the
@@ -42,7 +48,8 @@ def scrape_block_range(ctx, start_block_number, end_block_number):
4248
end_block_number = session.w3.eth.blockNumber
4349
logger.debug(end_block_number)
4450
if start_block_number is None:
45-
sql_block_number = session.db_session.query(func.max(Blocks.block_number)).scalar()
51+
sql_block_number = session.db_session.query(
52+
func.max(Blocks.block_number)).scalar()
4653
if sql_block_number is None:
4754
start_block_number = 0
4855
else:
@@ -66,15 +73,15 @@ def scrape_block_range(ctx, start_block_number, end_block_number):
6673
@click.pass_context
6774
def scrape_block(ctx, block_number):
6875
"""
69-
Pushes the data in block_number in the database
76+
Pushes the data at block=block_number in the database
7077
"""
71-
from ether_sql.scrapper import add_block_number
7278

7379
session = ctx.obj['session']
7480
if block_number is not None:
7581
block_number = int(block_number)
7682
session = add_block_number(block_number=block_number,
7783
ether_sql_session=session)
84+
logger.info("Commiting block: {} to sql".format(block_number))
7885
session.db_session.commit()
7986
else:
80-
raise ValueError('Please provide a value of --block_number')
87+
click.echo(ctx.get_help())

ether_sql/cli/ether.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def cli():
1010

1111

1212
@cli.command()
13-
def eth_blockNumber():
13+
def blockNumber():
1414
"""
1515
Gives the most recent block number in the ether node
1616
"""

ether_sql/cli/sql.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import click
22
import logging
3-
from ether_sql.models import base
3+
from sqlalchemy import func
4+
5+
from ether_sql.models import base, Blocks
46

57
logger = logging.getLogger(__name__)
68

@@ -32,15 +34,9 @@ def drop_tables(ctx):
3234

3335

3436
@cli.command()
35-
def sql_blockNumber():
37+
@click.pass_context
38+
def blockNumber(ctx):
3639
""" Gives the current highest block in database"""
37-
from ether_sql import db_engine
38-
from ether_sql.models import Blocks
39-
from sqlalchemy import func
40-
from sqlalchemy.orm import sessionmaker
41-
42-
DBSession = sessionmaker(bind=db_engine)
43-
db_session = DBSession()
44-
45-
max_block_number = db_session.query(func.max(Blocks.block_number)).scalar()
40+
session = ctx.obj['session']
41+
max_block_number = session.db_session.query(func.max(Blocks.block_number)).scalar()
4642
click.echo("{}".format(max_block_number))

ether_sql/session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
HTTPProvider,
88
)
99
from ether_sql.models import base
10-
from settings import (
10+
from ether_sql.settings import (
1111
DefaultSettings,
1212
TestSettings,
1313
ParityTestSettings,
File renamed without changes.

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# SqlAlchemy
55
sqlalchemy==1.2.4
6-
sqlalchemy-migrate==0.11.0
6+
alembic==0.9.9
77
psycopg2-binary==2.7.4
88

99
# CLI

setup.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
from setuptools import (
4+
find_packages,
5+
setup,
6+
)
7+
8+
9+
setup(
10+
name='ether_sql',
11+
version='0.1.0',
12+
description="""A python library to push ethereum blockchain data into an sql database.""",
13+
long_description_markdown_filename='README.md',
14+
author='Ankit Chiplunkar',
15+
author_email='[email protected]',
16+
url='https://github.com/analyseether/ether_sql',
17+
include_package_data=True,
18+
install_requires=[
19+
"web3",
20+
"sqlalchemy==1.2.4",
21+
"alembic==0.9.9",
22+
"psycopg2-binary==2.7.4",
23+
"Click==6.7",
24+
],
25+
setup_requires=['setuptools-markdown'],
26+
python_requires='>=3.5, <4',
27+
extras_require={
28+
'tester': [
29+
"pytest==3.0.0",
30+
"pytest-cov==2.2.1",
31+
],
32+
'linter': [
33+
"flake8==3.4.1",
34+
"isort>=4.2.15,<5",
35+
],
36+
},
37+
entry_points='''
38+
[console_scripts]
39+
ether_sql=ether_sql.cli:cli
40+
''',
41+
py_modules=['ether_sql'],
42+
zip_safe=False,
43+
keywords='ethereum',
44+
packages=find_packages(exclude=["tests", "tests.*"]),
45+
classifiers=[
46+
'Development Status :: 3 - Alpha',
47+
'Intended Audience :: Developers',
48+
'Natural Language :: English',
49+
'Programming Language :: Python :: 3',
50+
'Programming Language :: Python :: 3.5',
51+
'Programming Language :: Python :: 3.6',
52+
],
53+
)

0 commit comments

Comments
 (0)