├── .coveragerc ├── .gitignore ├── .travis.yml ├── LICENSE.txt ├── Makefile ├── README.md ├── requirements.txt ├── run ├── setup.py ├── test-requirements.txt ├── tornadoes ├── __init__.py ├── models.py └── tests │ ├── __init__.py │ ├── data │ ├── materias.bulk │ └── outrasmaterias.bulk │ └── unit │ ├── __init__.py │ └── test_tornadoes.py └── tox.ini /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | omit = 3 | *tests.py 4 | branch = True 5 | source = 6 | tornadoes/__init__.py 7 | tornadoes/models.py 8 | 9 | [report] 10 | exclude_lines = 11 | pragma: no cover 12 | def __repr__ 13 | raise NotImplementedError 14 | if __name__ == .__main__.: 15 | from urllib.parse import parse_qs 16 | except ImportError: 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | *.iml 3 | 4 | # Byte-compiled / optimized / DLL files 5 | __pycache__/ 6 | *.py[cod] 7 | *$py.class 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Distribution / packaging 13 | .Python 14 | env/ 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | test-results 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *,cover 50 | .hypothesis/ 51 | 52 | # Translations 53 | *.mo 54 | *.pot 55 | 56 | # Django stuff: 57 | *.log 58 | local_settings.py 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # IPython Notebook 74 | .ipynb_checkpoints 75 | 76 | # pyenv 77 | .python-version 78 | 79 | # celery beat schedule file 80 | celerybeat-schedule 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | venv/ 87 | ENV/ 88 | 89 | # Spyder project settings 90 | .spyderproject 91 | 92 | # Rope project settings 93 | .ropeproject 94 | 95 | ### Example user template 96 | 97 | # IntelliJ project files 98 | .idea 99 | *.iml 100 | out 101 | gen 102 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - 2.7 4 | - 3.4 5 | - pypy 6 | 7 | install: 8 | - make setup 9 | - python setup.py install 10 | 11 | script: 12 | # ES 0.9 branch 13 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.13.deb 14 | - sudo apt-get purge elasticsearch -fy 15 | - sudo dpkg -i --force-confnew elasticsearch-0.90.13.deb 16 | - sudo service elasticsearch restart 17 | - sleep 10 # Wait for ElasticSearch 18 | - curl http://localhost:9200/ # Check if ES is up and listening 19 | - make test 20 | - sudo service elasticsearch stop 21 | 22 | # ES 1.0 branch 23 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.3.deb 24 | - sudo apt-get purge elasticsearch -fy 25 | - sudo dpkg -i --force-confnew elasticsearch-1.0.3.deb 26 | - sudo service elasticsearch start 27 | - sleep 10 28 | - curl http://localhost:9200/ 29 | - make test 30 | - sudo service elasticsearch stop 31 | 32 | # ES 1.1 branch 33 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.1.2.deb 34 | - sudo apt-get purge elasticsearch -fy 35 | - sudo dpkg -i --force-confnew elasticsearch-1.1.2.deb 36 | - sudo service elasticsearch start 37 | - sleep 10 38 | - curl http://localhost:9200/ 39 | - make test 40 | - sudo service elasticsearch stop 41 | 42 | # ES 1.2 branch 43 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.4.deb 44 | - sudo apt-get purge elasticsearch -fy 45 | - sudo dpkg -i --force-confnew elasticsearch-1.2.4.deb 46 | - sudo service elasticsearch start 47 | - sleep 10 48 | - curl http://localhost:9200/ 49 | - make test 50 | - sudo service elasticsearch stop 51 | 52 | # ES 1.3 branch 53 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.9.deb 54 | - sudo apt-get purge elasticsearch -fy 55 | - sudo dpkg -i --force-confnew elasticsearch-1.3.9.deb 56 | - sudo service elasticsearch start 57 | - sleep 10 58 | - curl http://localhost:9200/ 59 | - make test 60 | - sudo service elasticsearch stop 61 | 62 | # ES 1.4 branch 63 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.5.deb 64 | - sudo apt-get purge elasticsearch -fy 65 | - sudo dpkg -i --force-confnew elasticsearch-1.4.5.deb 66 | - sudo service elasticsearch start 67 | - sleep 10 68 | - curl http://localhost:9200/ 69 | - make test 70 | - sudo service elasticsearch stop 71 | 72 | # ES 1.5 branch 73 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.5.2.deb 74 | - sudo apt-get purge elasticsearch -fy 75 | - sudo dpkg -i --force-confnew elasticsearch-1.5.2.deb 76 | - sudo service elasticsearch start 77 | - sleep 10 78 | - curl http://localhost:9200/ 79 | - make test 80 | - sudo service elasticsearch stop 81 | 82 | # ES 1.6 branch 83 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.6.2.deb 84 | - sudo apt-get purge elasticsearch -fy 85 | - sudo dpkg -i --force-confnew elasticsearch-1.6.2.deb 86 | - sudo service elasticsearch start 87 | - sleep 10 88 | - curl http://localhost:9200/ 89 | - make test 90 | - sudo service elasticsearch stop 91 | 92 | # ES 1.7 branch 93 | - wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb 94 | - sudo apt-get purge elasticsearch -fy 95 | - sudo dpkg -i --force-confnew elasticsearch-1.7.1.deb 96 | - sudo service elasticsearch start 97 | - sleep 10 98 | - curl http://localhost:9200/ 99 | - make test 100 | - sudo service elasticsearch stop 101 | 102 | # ES 2.0 branch 103 | - wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.0.0-beta1/elasticsearch-2.0.0-beta1.deb 104 | - sudo apt-get purge elasticsearch -fy 105 | - sudo dpkg -i --force-confnew elasticsearch-2.0.0-beta1.deb 106 | - sudo service elasticsearch start 107 | - sleep 10 108 | - curl http://localhost:9200/ 109 | - make test 110 | - sudo service elasticsearch stop 111 | 112 | # ES 2.3.3 branch 113 | - wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.3.3/elasticsearch-2.3.3.deb 114 | - sudo apt-get purge elasticsearch -fy 115 | - sudo dpkg -i --force-confnew elasticsearch-2.3.3.deb 116 | - sudo service elasticsearch start 117 | - sleep 10 118 | - curl http://localhost:9200/ 119 | - make test 120 | - sudo service elasticsearch stop 121 | 122 | # ES 5.0 branch 123 | - wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.0.deb 124 | - sudo apt-get install oracle-java8-set-default 125 | - sudo apt-get purge elasticsearch -fy 126 | - sudo dpkg -i --force-confnew elasticsearch-5.0.0.deb 127 | - sudo service elasticsearch start 128 | - sleep 10 129 | - curl http://localhost:9200/ 130 | - make test 131 | - sudo service elasticsearch stop 132 | 133 | # ES 5.5.1 branch 134 | - wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.deb 135 | - sudo apt-get install oracle-java8-set-default 136 | - sudo apt-get purge elasticsearch -fy 137 | - sudo dpkg -i --force-confnew elasticsearch-5.5.1.deb 138 | - sudo service elasticsearch start 139 | - sleep 10 140 | - curl http://localhost:9200/ 141 | - make test 142 | - sudo service elasticsearch stop 143 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015, tornadoes authors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: help 2 | 3 | help: 4 | @echo "Usage: make test -- Runs tests." 5 | 6 | setup: 7 | pip install -U -r test-requirements.txt 8 | 9 | clean: 10 | @echo "Cleaning up build and *.pyc files..." 11 | @find . -name '*.pyc' -delete 12 | @rm -rf .coverage 13 | @rm -rf ./build 14 | @rm -rf ./dist 15 | @rm -rf ./MANIFEST 16 | @echo "Done!" 17 | 18 | bulk: 19 | # creates test data 20 | @./run bulk 21 | 22 | test: clean bulk unit 23 | 24 | unit: 25 | @coverage run --branch `which nosetests` -vv --with-yanc -s tornadoes/tests/ 26 | @coverage report -m --fail-under=80 27 | 28 | coverage-html: unit 29 | @coverage html -d cover 30 | 31 | tox: 32 | @tox 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://secure.travis-ci.org/globocom/tornado-es.png?branch=master)](https://travis-ci.org/globocom/tornado-es) 2 | 3 | 4 | Tornado-es 5 | ========== 6 | 7 | A tornado-powered python library that provides asynchronous access to elasticsearch. 8 | 9 | 10 | Install 11 | ======= 12 | 13 | Via pip: 14 | 15 | pip install tornadoes 16 | 17 | 18 | Usage 19 | ===== 20 | 21 | Indexing a dummy document: 22 | 23 | ```bash 24 | $ curl -XPUT 'http://localhost:9200/index_test/typo_test/1' -d '{ 25 | "typo_test" : { 26 | "name" : "scooby doo" 27 | } 28 | }' 29 | ``` 30 | 31 | Tornado program used to search the document previously indexed: 32 | 33 | ```python 34 | # -*- coding: utf-8 -*- 35 | 36 | import json 37 | 38 | import tornado.ioloop 39 | import tornado.web 40 | 41 | from tornadoes import ESConnection 42 | 43 | 44 | class SearchHandler(tornado.web.RequestHandler): 45 | 46 | es_connection = ESConnection("localhost", 9200) 47 | 48 | @tornado.web.asynchronous 49 | def get(self, indice="index_test", tipo="typo_test"): 50 | query = {"query": {"match_all": {}}} 51 | self.es_connection.search(callback=self.callback, 52 | index=indice, 53 | type=tipo, 54 | source=query) 55 | 56 | def callback(self, response): 57 | self.content_type = 'application/json' 58 | self.write(json.loads(response.body)) 59 | self.finish() 60 | 61 | application = tornado.web.Application([ 62 | (r"/", SearchHandler), 63 | ]) 64 | 65 | if __name__ == "__main__": 66 | application.listen(8888) 67 | tornado.ioloop.IOLoop.instance().start() 68 | ``` 69 | 70 | 71 | Development 72 | =========== 73 | 74 | Setup your development environment: 75 | 76 | make setup 77 | 78 | > *Note: Don't forget to create a virtualenv first* 79 | 80 | Run tests: 81 | 82 | make test 83 | 84 | > *Note: Make sure ElasticSearch is running on port 9200* 85 | 86 | 87 | Contributing 88 | ============ 89 | 90 | Fork, patch, test, and send a pull request. 91 | 92 | 93 | License 94 | ======= 95 | 96 | [MIT](http://opensource.org/licenses/MIT) © [Globo.com](https://github.com/globocom) 97 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | six 2 | tornado 3 | -------------------------------------------------------------------------------- /run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | test () { 4 | bulk 5 | make test 6 | } 7 | 8 | bulk () { 9 | curl -XDELETE 'http://localhost:9200/_all'; echo 10 | curl -s -XPOST 'http://localhost:9200/_bulk?refresh=true' --data-binary @tornadoes/tests/data/materias.bulk; echo 11 | curl -s -XPOST 'http://localhost:9200/_bulk?refresh=true' --data-binary @tornadoes/tests/data/outrasmaterias.bulk; echo 12 | } 13 | 14 | dist () { 15 | python setup.py -q sdist upload -r pypi 16 | } 17 | 18 | if [ $1 ]; then 19 | $1; 20 | else 21 | echo " bulk - Insert test data into elasticsearch." 22 | echo " test - Run the tests." 23 | exit 1 24 | fi; 25 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from setuptools import setup, find_packages 4 | 5 | VERSION = '2.5.1' 6 | 7 | setup( 8 | name='tornadoes', 9 | version=VERSION, 10 | description="A tornado-powered python library that provides asynchronous access to elasticsearch.", 11 | long_description="""\ 12 | A tornado-powered python library that provides asynchronous access to elasticsearch.""", 13 | author='Team Search of globo.com', 14 | author_email='busca@corp.globo.com', 15 | url='http://github.com/globocom/tornado-es', 16 | download_url='http://github.com/globocom/tornado-es', 17 | license='MIT', 18 | packages=find_packages(exclude=['ez_setup', 'testes']), 19 | classifiers=[ 20 | 'Development Status :: 4 - Beta', 21 | 'Intended Audience :: Developers', 22 | 'License :: OSI Approved :: MIT License', 23 | 'Natural Language :: English', 24 | 'Operating System :: Unix', 25 | 'Operating System :: OS Independent', 26 | "Programming Language :: Python :: 2.7", 27 | "Programming Language :: Python :: 3.4", 28 | "Programming Language :: Python :: Implementation :: PyPy", 29 | ], 30 | include_package_data=True, 31 | zip_safe=True, 32 | install_requires=[ 33 | 'tornado>=3.0.0', 34 | 'six>=1.7.3', 35 | ], 36 | tests_require=[ 37 | 'unittest2', 38 | 'nose' 39 | ], 40 | dependency_links=[], 41 | ) 42 | -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | -e . 3 | coverage==4.2 4 | nose 5 | tox 6 | yanc 7 | mock 8 | -------------------------------------------------------------------------------- /tornadoes/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from tornadoes.models import BulkList 4 | 5 | from six.moves.urllib.parse import urlencode, urlparse 6 | from tornado.escape import json_encode, json_decode 7 | from tornado.ioloop import IOLoop 8 | from tornado.httpclient import AsyncHTTPClient, HTTPRequest 9 | from tornado.concurrent import return_future 10 | 11 | 12 | class ESConnection(object): 13 | _MATCH_ALL_QUERY = {"query": {"match_all": {}}} 14 | 15 | def __init__(self, host='localhost', port='9200', io_loop=None, protocol='http', custom_client=None, 16 | http_request_kwargs=None): 17 | self.io_loop = io_loop or IOLoop.instance() 18 | self.url = "%(protocol)s://%(host)s:%(port)s" % {"protocol": protocol, "host": host, "port": port} 19 | self.bulk = BulkList() 20 | self.client = custom_client or AsyncHTTPClient(self.io_loop) 21 | 22 | # extra kwargs passed to tornado's HTTPRequest class e.g. request_timeout 23 | self.http_request_kwargs = http_request_kwargs or {} 24 | 25 | @staticmethod 26 | def _create_query_string(params): 27 | """ 28 | Support Elasticsearch 5.X 29 | """ 30 | parameters = params or {} 31 | 32 | for param, value in parameters.items(): 33 | param_value = str(value).lower() if isinstance(value, bool) else value 34 | parameters[param] = param_value 35 | 36 | return urlencode(parameters) 37 | 38 | @classmethod 39 | def from_uri(cls, uri, io_loop=None, custom_client=None, http_request_kwargs=None): 40 | parsed = urlparse(uri) 41 | 42 | if not parsed.hostname or not parsed.scheme: 43 | raise ValueError('Invalid URI') 44 | 45 | return cls(host=parsed.hostname, protocol=parsed.scheme, port=parsed.port, io_loop=io_loop, 46 | custom_client=custom_client, http_request_kwargs=http_request_kwargs) 47 | 48 | @staticmethod 49 | def create_path(method, index='_all', type='', **kwargs): 50 | query_string = ESConnection._create_query_string(kwargs) 51 | 52 | path = "/%(index)s/%(type)s/_%(method)s" % {"method": method, "index": index, "type": type} 53 | 54 | if query_string: 55 | path += '?' + query_string 56 | 57 | return path 58 | 59 | @return_future 60 | def search(self, callback, index='_all', type='', source=None, **kwargs): 61 | source = json_encode(source or self._MATCH_ALL_QUERY) 62 | path = self.create_path("search", index=index, type=type, **kwargs) 63 | 64 | self.post_by_path(path, callback, source) 65 | 66 | def multi_search(self, index, source): 67 | self.bulk.add(index, source) 68 | 69 | @return_future 70 | def apply_search(self, callback, params=None): 71 | params = params or {} 72 | path = "/_msearch" 73 | if params: 74 | path = "%s?%s" % (path, urlencode(params)) 75 | source = self.bulk.prepare_search() 76 | self.post_by_path(path, callback, source=source) 77 | 78 | def post_by_path(self, path, callback, source): 79 | url = '%(url)s%(path)s' % {"url": self.url, "path": path} 80 | request_http = HTTPRequest(url, method="POST", body=source, **self.http_request_kwargs) 81 | self.client.fetch(request=request_http, callback=callback) 82 | 83 | @return_future 84 | def get_by_path(self, path, callback): 85 | url = '%(url)s%(path)s' % {"url": self.url, "path": path} 86 | self.client.fetch(url, callback, **self.http_request_kwargs) 87 | 88 | @return_future 89 | def get(self, index, type, uid, callback, parameters=None): 90 | def to_dict_callback(response): 91 | source = json_decode(response.body) 92 | callback(source) 93 | self.request_document(index, type, uid, callback=to_dict_callback, parameters=parameters) 94 | 95 | @return_future 96 | def put(self, index, type, uid, contents, parameters=None, callback=None): 97 | self.request_document( 98 | index, type, uid, "PUT", body=json_encode(contents), 99 | parameters=parameters, callback=callback) 100 | 101 | @return_future 102 | def update(self, index, type, uid, contents, callback=None): 103 | path = "/%(index)s/%(type)s/%(uid)s/_update" % { 104 | "index": index, 105 | "type": type, 106 | "uid": uid 107 | } 108 | 109 | partial = { "doc": contents } 110 | 111 | self.post_by_path(path, callback, source=json_encode(partial)) 112 | 113 | @return_future 114 | def delete(self, index, type, uid, parameters=None, callback=None): 115 | self.request_document(index, type, uid, "DELETE", parameters=parameters, callback=callback) 116 | 117 | @return_future 118 | def count(self, index="_all", type='', source='', parameters=None, callback=None): 119 | """ 120 | The query can either be provided using a simple query string as a parameter 'q', 121 | or using the Query DSL defined within the request body (source). 122 | Notice there are additional query string parameters that could be added only with the first option. 123 | """ 124 | parameters = parameters or {} 125 | 126 | path = self.create_path('count', index=index, type=type, **parameters) 127 | 128 | if source: 129 | source = json_encode(source) 130 | 131 | self.post_by_path(path=path, callback=callback, source=source) 132 | 133 | def request_document(self, index, type, uid, method="GET", body=None, parameters=None, callback=None): 134 | query_string = ESConnection._create_query_string(parameters) 135 | 136 | path = '/{index}/{type}/{uid}'.format(**locals()) 137 | url = '%(url)s%(path)s?%(querystring)s' % { 138 | "url": self.url, 139 | "path": path, 140 | "querystring": query_string 141 | } 142 | request_arguments = dict(self.http_request_kwargs) 143 | request_arguments['method'] = method 144 | 145 | if body is not None: 146 | request_arguments['body'] = body 147 | 148 | request = HTTPRequest(url, **request_arguments) 149 | self.client.fetch(request, callback) 150 | -------------------------------------------------------------------------------- /tornadoes/models.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import threading 4 | 5 | from tornado.escape import json_encode 6 | 7 | 8 | class BulkList(object): 9 | 10 | def __init__(self): 11 | self.lock = threading.RLock() 12 | with self.lock: 13 | self.bulk_list = [] 14 | 15 | def add(self, index, source): 16 | with self.lock: 17 | command = {"index": index} if index else {} 18 | source = "%s\n%s" % (json_encode(command), json_encode(source)) 19 | self.bulk_list.append(source) 20 | 21 | def prepare_search(self): 22 | with self.lock: 23 | source = "\n".join(self.bulk_list) + "\n" 24 | self.bulk_list = [] 25 | return source 26 | -------------------------------------------------------------------------------- /tornadoes/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/globocom/tornado-es/f805ba766db1d4f3119583490aa99dbb71ad5680/tornadoes/tests/__init__.py -------------------------------------------------------------------------------- /tornadoes/tests/data/materias.bulk: -------------------------------------------------------------------------------- 1 | { "index" : {"_index":"teste","_type":"materia","_id":"171171"}} 2 | {"ID":"171171","Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/707276/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 3 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/2/fast"}} 4 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/706765/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 5 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/3/fast"}} 6 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/707276/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 7 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/4/fast"}} 8 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/706765/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 9 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/5/fast"}} 10 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/707276/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 11 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/6/fast"}} 12 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/706765/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 13 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/7/fast"}} 14 | {"Subeditorias":["Mundo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:03:03Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:Rio de Janeiro, 26 abr (EFE).- O presidente da mineradora Vale, Murilo Ferreira, que possui um projeto para exploração de potássio na Argentina, disse nesta quinta-feira que se preocupa com o risco político no país, por causa da desapropriação da companhia petrolífera YPF.\nFerreira afirmou em teleconferência com jornalistas que o fator político é um elemento de grande preocupação, mas não o único, em relação ao projeto Rio Colorado, que desenvolve na província de Mendoza.\n'Já estávamos fazendo uma verificação (da rentabilidade da mina) pela potencial explosão da inflação prevista por analistas, quando aconteceu este evento político', disse o responsável da companhia.\nFerreira rejeitou avaliar que recomendação fará ao conselho de acionistas sobre a viabilidade do projeto, e não revelou se a empresa poderia abandoná-lo.\nO projeto de Rio Colorado contempla investimentos de US$ 5,915 bilhões, que incluem o desenvolvimento de uma mina de potássio, a construção de um porto em Bahía Blanca, uma usina elétrica e a gestão de um lance de 756 quilômetros de ferrovia para sua conexão logística.\nAs reservas de potássio desta mina chegam a 430 milhões de toneladas e a capacidade de produção poderia ser de até 4,35 milhões de toneladas, segundo cálculos da empresa.\nA Vale investiu até o final de março US$ 1,1 bilhão no projeto, que segundo seus planos deveria começar a operar no segundo semestre de 2014.\nO Governo da presidente Cristina Kirchner anunciou a desapropriação de 51% das ações que a companhia espanhola Repsol tinha na YPF, o que gerou uma onda de críticas de vários países e represálias por parte da Espanha. EFE","Titulo":"\nPresidente da Vale manifesta preocupação por risco político na Argentina\n\t","ID":"http://localhost/noticia/707256/fast","URL":"http://g1.globo.com/mundo/noticia/2012/04/presidente-da-vale-manifesta-preocupacao-por-risco-politico-na-argentina.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:03:04Z","URLThumbnail":""} 15 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/8/fast"}} 16 | {"Subeditorias":["Política"],"Portal":"G1","DataPublicacao":"2012-04-26T19:09:07Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: Por Tiago Pariz\n BRASÍLIA, 26 Abr (Reuters) - O Banco Central decidiu indicar na ata da última reunião do Copom que a taxa básica de juros deve continuar caindo, com \"parcimônia\", por entender que a recuperação da atividade econômica está mais lenta do que se esperava no início de março, segundo uma fonte da equipe econômica.\n No mês passado, o Comitê de Política Monetária tinha sinalizado que a Selic se estabilizaria em 9 por cento ao ano. Mas de lá para cá, indicadores mostraram que a recuperação não tinha o fôlego imaginado.\n Entre outros dados, o desemprego voltou a subir e a atividade está fraca, com a indústria ainda sem sinais de retomada. Considerado uma prévia do PIB, o Índice de Atividade Econômica do Banco Central (IBC-Br) registrou contração de 0,23 por cento em fevereiro na comparação com janeiro.\n Na ata do encontro da semana passada, o Comitê de Política Monetária afirmou que \"qualquer movimento de flexibilização monetária adicional deve ser conduzido com parcimônia\". No documento sobre a reunião anterior, publicado em março, o Copom havia afirmado que a Selic poderia ficar \"ligeiramente acima dos mínimos históricos\", de 8,75 por cento ao ano.\n Para especialistas, a palavra parcimônia significa para maio, quando o comitê se reúne novamente, um corte na Selic de 0,25 ou 0,50 ponto percentual .\n Na ata, o Copom observou ainda que \"ocorreram mudanças estruturais significativas na economia brasileira, às quais determinaram recuo nas taxas de juros geral, em particular na taxa neutra\".\n No mercado futuro de juros, a maioria dos contratos de DI caiu.\n ","Titulo":"BC indica novo corte do juro por ver retomada lenta da economia","ID":"http://localhost/noticia/707274/fast","URL":"http://g1.globo.com/politica/noticia/2012/04/bc-indica-novo-corte-do-juro-por-ver-retomada-lenta-da-economia-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:09:08Z","URLThumbnail":""} 17 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/9/fast"}} 18 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:09:05Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: Por Tiago Pariz\n BRASÍLIA, 26 Abr (Reuters) - O Banco Central decidiu indicar na ata da última reunião do Copom que a taxa básica de juros deve continuar caindo, com \"parcimônia\", por entender que a recuperação da atividade econômica está mais lenta do que se esperava no início de março, segundo uma fonte da equipe econômica.\n No mês passado, o Comitê de Política Monetária tinha sinalizado que a Selic se estabilizaria em 9 por cento ao ano. Mas de lá para cá, indicadores mostraram que a recuperação não tinha o fôlego imaginado.\n Entre outros dados, o desemprego voltou a subir e a atividade está fraca, com a indústria ainda sem sinais de retomada. Considerado uma prévia do PIB, o Índice de Atividade Econômica do Banco Central (IBC-Br) registrou contração de 0,23 por cento em fevereiro na comparação com janeiro.\n Na ata do encontro da semana passada, o Comitê de Política Monetária afirmou que \"qualquer movimento de flexibilização monetária adicional deve ser conduzido com parcimônia\". No documento sobre a reunião anterior, publicado em março, o Copom havia afirmado que a Selic poderia ficar \"ligeiramente acima dos mínimos históricos\", de 8,75 por cento ao ano.\n Para especialistas, a palavra parcimônia significa para maio, quando o comitê se reúne novamente, um corte na Selic de 0,25 ou 0,50 ponto percentual .\n Na ata, o Copom observou ainda que \"ocorreram mudanças estruturais significativas na economia brasileira, às quais determinaram recuo nas taxas de juros geral, em particular na taxa neutra\".\n No mercado futuro de juros, a maioria dos contratos de DI caiu.\n ","Titulo":"BC indica novo corte do juro por ver retomada lenta da economia","ID":"http://localhost/noticia/707272/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/bc-indica-novo-corte-do-juro-por-ver-retomada-lenta-da-economia.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:09:06Z","URLThumbnail":""} 19 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/10/fast"}} 20 | {"Subeditorias":["Brasil","Mato Grosso do Sul"],"Portal":"G1","DataPublicacao":"2012-04-26T19:08:52Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tUm idoso de 68 anos teve a perna esquerda esmagada em uma colheitadeira na tarde desta quinta-feira (26), em Campo Grandex, segundo informações do Corpo de Bombeiros. De acordo com os socorristas, o homem teve duas fraturas expostas e foi levado para a Santa Casa da cidade.\n\n\tAinda de acordo com os bombeiros, a vítima disse ter escorregado enquanto fazia a limpeza da caixa de sementes da máquina durante a chuva que caiu na cidade durante a tarde.\n\n\tOs socorristas informaram ao G1 que o homem perdeu muito sangue por conta dos ferimentos e por isso o estado de saúde dele no momento do resgate foi considerado grave.\n\n\tsaiba mais\n\t\n\t\t\tHomem morre esmagado por bobina de aço de 12 toneladas em MS\n\t\t\n\t\t\tOperário morre soterrado em obra de poço de elevador em MS\n\t","Titulo":"Colheitadeira esmaga perna de idoso em MS, diz Corpo de Bombeiros","ID":"http://localhost/noticia/707261/fast","URL":"http://g1.globo.com/mato-grosso-do-sul/noticia/2012/04/colheitadeira-esmaga-perna-de-idoso-em-ms-diz-corpo-de-bombeiros.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:08:52Z","URLThumbnail":""} 21 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/11/fast"}} 22 | {"Subeditorias":["Araraquara e Região","SP","São Paulo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:01:21Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tDois homens e três menores foram detidos pela Polícia Militar com uma espingarda, na tarde desta quinta-feira (26), em Américo Brasiliensex (SP). Eles estavam próximos a um canavial e efetuavam disparos na região. Ninguém ficou ferido.\n\n\tUma denúncia anônima feita à PM informou que os suspeitos estavam na Rua Toledo Piza. Policiais foram até o local e encontraram o grupo de posse da espingarda. Eles foram detidos e encaminhados para a delegacia.\n\n\tSegundo a polícia, um dos menores assumiu ser o dono da arma. Todos foram ouvidos e liberados. Um inquérito será instaurado pela Polícia Civil.\n\n\tA arma e a munição foram apreendidas. Ao menos quatro tiros foram disparados no local, segundo a polícia.\n\t ","Titulo":"Grupo é detido com espingarda em Américo Brasiliense, SP","ID":"http://localhost/noticia/707195/fast","URL":"http://g1.globo.com/sp/araraquara-regiao/noticia/2012/04/grupo-e-detido-apos-atirar-com-espingarda-em-americo-brasiliense.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:08:46Z","URLThumbnail":""} 23 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/12/fast"}} 24 | {"Subeditorias":["Campinas e Região","SP","São Paulo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:20Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tA Prefeitura de Campinasx estipulou a meta de vacinar 192.354 pessoas contra a gripe durante a campanha que começa no sábado (5) e termina dia 25 de maio. A campanha de vacinação contará com pontos fixos e móveis nos quais a vacinação será feita das 8h às 17h.\n\n\tOs idosos com 60 anos ou mais representam 133.801 do público que a prefeitura pretende atingir. Outras 21.803 são crianças, com idade entre seis meses e 2 anos, além de 14.750 gestantes e 22 mil profissionais de saúdem que também devem ser imunizados.\n\n\tAo todo, o grupo prioritário para receber a dose tem 297 mil pessoas em Campinas, segundo estimativa da Prefeitura. É preciso levar a carteira de vacinação para receber a imunização contra os vírus A (H1N1 e H3N2) e B da gripe.\n\t ","Titulo":"Prefeitura quer vacinar 192,3 mil contra a gripe em Campinas","ID":"http://localhost/noticia/705560/fast","URL":"http://g1.globo.com/sp/campinas-regiao/noticia/2012/04/prefeitura-quer-vacinar-1923-mil-contra-gripe-em-campinas.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:20Z","URLThumbnail":""} 25 | { "index" : {"_index":"teste","_type":"materia","_id":"http://localhost/noticia/13/fast"}} 26 | {"Subeditorias":["Economia","Negócios"],"Portal":"G1","DataPublicacao":"2012-04-26T19:07:34Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tA Souza Cruzx registrou lucro líquido de R$ 443 milhões no primeiro trimestre de 2012, 7% acima dos R$ 415,4 milhões verificados no mesmo período do ano passado.\n\n\tA geração de caixa medida pelo Ebitda (sigla em inglês para lucro antes de juros, impostos, depreciação e amortização) no trimestre passado ficou em R$ 679,4 milhões, 9% superior ao obtido um ano antes.\n\n\tA receita com vendas de produtos e serviços subiu 4,59%, de R$ 1,348 bilhões, para R$ 1,41 bilhões.","Titulo":"Souza Cruz tem lucro líquido de R$ 443 milhões no 1º trimestre","ID":"http://localhost/noticia/707265/fast","URL":"http://g1.globo.com/economia/negocios/noticia/2012/04/souza-cruz-tem-lucro-liquido-de-r-443-milhoes-no-1-trimestre.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:07:34Z","URLThumbnail":""} 27 | { "index" : {"_index":"teste","_type":"galeria","_id":"101010"}} 28 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:06:05Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: NOVA YORK, 26 Abr (Reuters) - A agência de classificação de risco Standard & Poor's anunciou nesta quinta-feira que rebaixou o rating de longo prazo de crédito soberano da Espanha de \"A\" para \"BBB+\".\n A S&P afirmou que estava dando perspectiva negativa no rating de longo prazo refletindo sua visão de riscos significativos sobre o crescimento econômico espanhol e a trajetória orçamentária do país.\n (Reportagem de Burton Frierson)\n ","Titulo":"S&P rebaixa rating de crédito soberano da Espanha","ID":"101010","URL":"http://g1.globo.com/economia/noticia/2012/04/sp-rebaixa-rating-de-credito-soberano-da-espanha-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:06:05Z","URLThumbnail":""} 29 | -------------------------------------------------------------------------------- /tornadoes/tests/data/outrasmaterias.bulk: -------------------------------------------------------------------------------- 1 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/11/fast"}} 2 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/7072761/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 3 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/21/fast"}} 4 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/7067651/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 5 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/31/fast"}} 6 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/7072761/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 7 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/41/fast"}} 8 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/7067651/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 9 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/51/fast"}} 10 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:02Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:BRASÍLIA, 26 Abr 2012 (AFP) -A aprovação da lei que reduz áreas protegidas e anistia os desmatadores de grandes superfícies na Amazônia brasileira, a poucas semanas da cúpula Rio+20, representou uma vitória do setor agropecuário e uma derrota para os ecologistas, que pedem o veto da presidente Dilma Rousseff.\n\"A reforma aprovada é o maior retrocesso ambiental no Brasil em décadas\" porque \"promove uma anistia para quem desmatou ilegalmente na última década, deixa grandes áreas que não serão reflorestadas e reduz o que os produtores devem proteger\", denunciou à AFP o coordenador do Fundo Mundial para a Natureza (WWF) no Brasil, Carlos Rittl.\n\"Aprovaram um texto que apresenta incentivos reais a novos desmatamentos\", denunciou o Comitê em Defesa das Florestas, que reúne 163 ONGs brasileiras.\nO Congresso brasileiro aprovou na quarta-feira a reforma da lei que estabelece o percentual de florestas que os produtores rurais devem preservar em suas terras, uma proporção que chega a 80% na Amazônia, e muitos analistas já antecipam as críticas na cúpula da ONU Rio+20, em que mais de 100 chefes de Estado e de governo discutirão em junho, no Rio de Janeiro, o desenvolvimento sustentável do planeta.\n\"O Brasil não tem a condição moral de receber chefes de Estado de todo o mundo para discutir a sustentabilidade se aprovar, semanas antes, uma lei que praticamente destrói a conservação da vegetação nativa\", afirmou à imprensa o ex-vice-ministro de Meio Ambiente e diretor do Instituto Democracia e Sustentabilidade, João Paulo Capobianco.\nO texto, aprovado por um poderoso lobby agropecuário ávido por ampliar as terras culivadas e que tem folgada maioria no Congresso, não é o que o governo esperava, que estuda seu complicado alcance.\nUm estudo divulgado pela Universidade de Brasília estimou que a nova legislação poderá aumentar em 47% o desmatamento no país até 2020.\n\"A presidente analisará com muita serenidade, sem animosidade\" a possibilidade de vetar o texto ou partes do mesmo, declarou nesta quinta-feira o ministro da Secretaria da Presidência, Gilberto Carvalho. \"Temos muita responsabilidade com o país\", disse.\n\"Qualquer questão que na prática signifique anistia (para quem desmatou ilegalmente), acho que tem chances de sofrer veto\" presidencial, disse à imprensa a ministra de Relações Institucionais, Ideli Salvati.\nA coalizão de governo se dividiu na votação e agora alguns defendem a reforma e outros, o veto presidencial.\nA ex-candidata à Presidência e ex-ministra do Meio Ambiente Marina Silva convocou a população a apoiar a campanha #VetaDilma!, que circula na internet, apelando à promessa eleitoral da presidente de vetar qualquer reforma que estimule o desmatamento ou anistie aqueles que desmataram ilegalmente.\nA reforma exibe duas faces do Brasil: a do gigante agropecuário com exportações recorde e cujos campos cultivados ocupam 27,7% do território e a do país com cinco milhões de quilômetros quadrados de florestas, que cobrem mais de 60% do território nacional e que conseguiu reduzir o desmatamento amazônico de 27.000 km2 em 2004 a pouco mais de 6.000 km2 em 2011.\n\"Se não houver um veto da presidente, o Brasil perderá a credibilidade e as conquistas que levaram o país a reduzir o desmatamento\", disse à AFP Paulo Moutinho, do Instituto de Pesquisas Ambientais da Amazônia (IPAM). \nO desmatamento, que as autoridades prometeram reduzir em 80% até 2020, faz do País um dos maiores emissores de gases causadores do efeito estufa, responsáveis pelo aquecimento global.\nOs agricultores garantem que a nova lei não incentivará o desmatamento e defendem a reforma porque a legislação anterior \"era incompatível com o grau de evolução do agronegócio brasileiro\", disse Assuero Doca Veronez, alto dirigente da Conferderação Nacional da Agricultura.\nAgricultores e ecologistas concordavam em reformar a lei e o governo estava disposto a flexibilizar algumas exigências para que os produtores rurais pudessem replantar boa parte do território desmatado, mas com a reforma atual, a recuperação das florestas se reduz ao mínimo e as áreas de proteção diminuem.\nA importância desta lei, que define o que os proprietários rurais devem proteger, se deve a que os 5,3 milhões de quilômetros quadrados de selva e florestas que o Brasil tem, apenas 1,7 milhão está sob proteção do Estado e o restante se encontra em terras privadas de produtores rurais ou sem propriedade definida.\nym/lbc/ad/mvv/dm","Titulo":"Dilma sofre pressão para vetar Código Florestal","ID":"http://localhost/noticia/7072761/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/dilma-sofre-pressao-para-vetar-codigo-florestal-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:03Z","URLThumbnail":""} 11 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/61/fast"}} 12 | {"Subeditorias":["Economia","Política","Últimas notícias"],"Portal":"G1","DataPublicacao":"2012-04-26T14:10:35Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tsaiba mais\n\t\n\t\t\tDilma lança programa para ampliar metrô e ônibus nas grandes cidades\n\t\n\n\tA ministra do Planejamento, Miriam Belchiorx, informou nesta quinta-feira (26) que o governo deve encaminhar nas próximas semanas, para análise do Congresso, o projeto que estende para as obras do Programa de Aceleração do Crescimento (PAC) a possibilidade de uso do Regime Diferenciado de Contratação (RDC).\n\t\u201cPrecisamos ter mais investimento para alavancar de maneira sustentável o crescimento do país. Por isso nós estamos solicitando ao Congresso [que a extensão do RDC para as obras do PAC seja aprovada]\u201d, disse Belchior durante audiência na Câmara. Ela pediu apoio dos deputados ao projeto.\n\tAprovado para uso na licitação das obras voltadas para a Copa de 2014 e das Olimpíadas de 2016, o RDC é uma alternativa à Lei de Licitações e flexibiliza as regras para contratação de obras públicas.\n\n\tMiriam Belchior em audiência na Câmara nesta quinta-feira (Foto: Agência Câmara)\n\n\t\n\tO governo defende o mecanismo dizendo que ele possibilita a redução de prazos e gera queda no valor das obras. Críticos apontam que, com o RDC, há menos transparência do governo na condução dos processos \u2013 o valor de referência das obras só é de conhecimento do governo e dos órgãos de controle.\n\tA ministra apontou que o fato de o valor de referência não ser divulgado na licitação diminui a possibilidade de conluio entre as empresas que pretendem disputar a obra.\n\tDe acordo com Belchior, a objetivo do governo é que o RDC possa ser utilizado em qualquer obra do PAC, entre elas as de urbanização e saneamento tocadas por estados e municípios.\n\tA ministra citou que a Infraerox, estatal que administra aeroportos do país, usou o mecanismo em seis licitações. O resultado, segundo ela, foi redução do prazo médio dessas licitações, de 250 dias para 80 dias, e desconto médio de 15% no valor das obras contratadas em relação ao valor de referência.\n\n\tDelta\n\tA ministra afirmou que não teme que a instalação no Congresso a Comissão Parlamentar Mista de Inquérito (CPMI) ,destinada a investigar as relações do bicheiro Carlinhos Cachoeira com políticos e empresas, entre elas a construtora Delta, possa atrapalhar o andamento das obras do PAC. A Delta é responsável por diversas obras ligadas ao programa.\n\n\t\u201cAs licitações vão ser lançadas no mesmo ritmo que estavam previstas\u201d, disse a ministra. Ela declarou que o governo \u201cvai ver o que pode ser feito\u201dcaso a Delta seja considerada inidônea. Sobre a possibilidade de a empresa quebrar, Belchior afirmou que \u201cesse é um problema da empresa e não do governo.\u201d","Titulo":"Ministra defende flexibilização de licitações para obras do PAC","ID":"http://localhost/noticia/7067651/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/ministra-defende-flexibilizacao-de-licitacoes-para-obras-do-pac.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:04:54Z","URLThumbnail":"http://s.glbimg.com/jo/g1/f/90x68/2012/04/26/belchior-agcamara.jpg"} 13 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/71/fast"}} 14 | {"Subeditorias":["Mundo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:03:03Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:Rio de Janeiro, 26 abr (EFE).- O presidente da mineradora Vale, Murilo Ferreira, que possui um projeto para exploração de potássio na Argentina, disse nesta quinta-feira que se preocupa com o risco político no país, por causa da desapropriação da companhia petrolífera YPF.\nFerreira afirmou em teleconferência com jornalistas que o fator político é um elemento de grande preocupação, mas não o único, em relação ao projeto Rio Colorado, que desenvolve na província de Mendoza.\n'Já estávamos fazendo uma verificação (da rentabilidade da mina) pela potencial explosão da inflação prevista por analistas, quando aconteceu este evento político', disse o responsável da companhia.\nFerreira rejeitou avaliar que recomendação fará ao conselho de acionistas sobre a viabilidade do projeto, e não revelou se a empresa poderia abandoná-lo.\nO projeto de Rio Colorado contempla investimentos de US$ 5,915 bilhões, que incluem o desenvolvimento de uma mina de potássio, a construção de um porto em Bahía Blanca, uma usina elétrica e a gestão de um lance de 756 quilômetros de ferrovia para sua conexão logística.\nAs reservas de potássio desta mina chegam a 430 milhões de toneladas e a capacidade de produção poderia ser de até 4,35 milhões de toneladas, segundo cálculos da empresa.\nA Vale investiu até o final de março US$ 1,1 bilhão no projeto, que segundo seus planos deveria começar a operar no segundo semestre de 2014.\nO Governo da presidente Cristina Kirchner anunciou a desapropriação de 51% das ações que a companhia espanhola Repsol tinha na YPF, o que gerou uma onda de críticas de vários países e represálias por parte da Espanha. EFE","Titulo":"\nPresidente da Vale manifesta preocupação por risco político na Argentina\n\t","ID":"http://localhost/noticia/7072561/fast","URL":"http://g1.globo.com/mundo/noticia/2012/04/presidente-da-vale-manifesta-preocupacao-por-risco-politico-na-argentina.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:03:04Z","URLThumbnail":""} 15 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/81/fast"}} 16 | {"Subeditorias":["Política"],"Portal":"G1","DataPublicacao":"2012-04-26T19:09:07Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: Por Tiago Pariz\n BRASÍLIA, 26 Abr (Reuters) - O Banco Central decidiu indicar na ata da última reunião do Copom que a taxa básica de juros deve continuar caindo, com \"parcimônia\", por entender que a recuperação da atividade econômica está mais lenta do que se esperava no início de março, segundo uma fonte da equipe econômica.\n No mês passado, o Comitê de Política Monetária tinha sinalizado que a Selic se estabilizaria em 9 por cento ao ano. Mas de lá para cá, indicadores mostraram que a recuperação não tinha o fôlego imaginado.\n Entre outros dados, o desemprego voltou a subir e a atividade está fraca, com a indústria ainda sem sinais de retomada. Considerado uma prévia do PIB, o Índice de Atividade Econômica do Banco Central (IBC-Br) registrou contração de 0,23 por cento em fevereiro na comparação com janeiro.\n Na ata do encontro da semana passada, o Comitê de Política Monetária afirmou que \"qualquer movimento de flexibilização monetária adicional deve ser conduzido com parcimônia\". No documento sobre a reunião anterior, publicado em março, o Copom havia afirmado que a Selic poderia ficar \"ligeiramente acima dos mínimos históricos\", de 8,75 por cento ao ano.\n Para especialistas, a palavra parcimônia significa para maio, quando o comitê se reúne novamente, um corte na Selic de 0,25 ou 0,50 ponto percentual .\n Na ata, o Copom observou ainda que \"ocorreram mudanças estruturais significativas na economia brasileira, às quais determinaram recuo nas taxas de juros geral, em particular na taxa neutra\".\n No mercado futuro de juros, a maioria dos contratos de DI caiu.\n ","Titulo":"BC indica novo corte do juro por ver retomada lenta da economia","ID":"http://localhost/noticia/7072741/fast","URL":"http://g1.globo.com/politica/noticia/2012/04/bc-indica-novo-corte-do-juro-por-ver-retomada-lenta-da-economia-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:09:08Z","URLThumbnail":""} 17 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/91/fast"}} 18 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:09:05Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: Por Tiago Pariz\n BRASÍLIA, 26 Abr (Reuters) - O Banco Central decidiu indicar na ata da última reunião do Copom que a taxa básica de juros deve continuar caindo, com \"parcimônia\", por entender que a recuperação da atividade econômica está mais lenta do que se esperava no início de março, segundo uma fonte da equipe econômica.\n No mês passado, o Comitê de Política Monetária tinha sinalizado que a Selic se estabilizaria em 9 por cento ao ano. Mas de lá para cá, indicadores mostraram que a recuperação não tinha o fôlego imaginado.\n Entre outros dados, o desemprego voltou a subir e a atividade está fraca, com a indústria ainda sem sinais de retomada. Considerado uma prévia do PIB, o Índice de Atividade Econômica do Banco Central (IBC-Br) registrou contração de 0,23 por cento em fevereiro na comparação com janeiro.\n Na ata do encontro da semana passada, o Comitê de Política Monetária afirmou que \"qualquer movimento de flexibilização monetária adicional deve ser conduzido com parcimônia\". No documento sobre a reunião anterior, publicado em março, o Copom havia afirmado que a Selic poderia ficar \"ligeiramente acima dos mínimos históricos\", de 8,75 por cento ao ano.\n Para especialistas, a palavra parcimônia significa para maio, quando o comitê se reúne novamente, um corte na Selic de 0,25 ou 0,50 ponto percentual .\n Na ata, o Copom observou ainda que \"ocorreram mudanças estruturais significativas na economia brasileira, às quais determinaram recuo nas taxas de juros geral, em particular na taxa neutra\".\n No mercado futuro de juros, a maioria dos contratos de DI caiu.\n ","Titulo":"BC indica novo corte do juro por ver retomada lenta da economia","ID":"http://localhost/noticia/7072721/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/bc-indica-novo-corte-do-juro-por-ver-retomada-lenta-da-economia.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:09:06Z","URLThumbnail":""} 19 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/101/fast"}} 20 | {"Subeditorias":["Brasil","Mato Grosso do Sul"],"Portal":"G1","DataPublicacao":"2012-04-26T19:08:52Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tUm idoso de 68 anos teve a perna esquerda esmagada em uma colheitadeira na tarde desta quinta-feira (26), em Campo Grandex, segundo informações do Corpo de Bombeiros. De acordo com os socorristas, o homem teve duas fraturas expostas e foi levado para a Santa Casa da cidade.\n\n\tAinda de acordo com os bombeiros, a vítima disse ter escorregado enquanto fazia a limpeza da caixa de sementes da máquina durante a chuva que caiu na cidade durante a tarde.\n\n\tOs socorristas informaram ao G1 que o homem perdeu muito sangue por conta dos ferimentos e por isso o estado de saúde dele no momento do resgate foi considerado grave.\n\n\tsaiba mais\n\t\n\t\t\tHomem morre esmagado por bobina de aço de 12 toneladas em MS\n\t\t\n\t\t\tOperário morre soterrado em obra de poço de elevador em MS\n\t","Titulo":"Colheitadeira esmaga perna de idoso em MS, diz Corpo de Bombeiros","ID":"http://localhost/noticia/7072611/fast","URL":"http://g1.globo.com/mato-grosso-do-sul/noticia/2012/04/colheitadeira-esmaga-perna-de-idoso-em-ms-diz-corpo-de-bombeiros.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:08:52Z","URLThumbnail":""} 21 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/111/fast"}} 22 | {"Subeditorias":["Araraquara e Região","SP","São Paulo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:01:21Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tDois homens e três menores foram detidos pela Polícia Militar com uma espingarda, na tarde desta quinta-feira (26), em Américo Brasiliensex (SP). Eles estavam próximos a um canavial e efetuavam disparos na região. Ninguém ficou ferido.\n\n\tUma denúncia anônima feita à PM informou que os suspeitos estavam na Rua Toledo Piza. Policiais foram até o local e encontraram o grupo de posse da espingarda. Eles foram detidos e encaminhados para a delegacia.\n\n\tSegundo a polícia, um dos menores assumiu ser o dono da arma. Todos foram ouvidos e liberados. Um inquérito será instaurado pela Polícia Civil.\n\n\tA arma e a munição foram apreendidas. Ao menos quatro tiros foram disparados no local, segundo a polícia.\n\t ","Titulo":"Grupo é detido com espingarda em Américo Brasiliense, SP","ID":"http://localhost/noticia/7071951/fast","URL":"http://g1.globo.com/sp/araraquara-regiao/noticia/2012/04/grupo-e-detido-apos-atirar-com-espingarda-em-americo-brasiliense.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:08:46Z","URLThumbnail":""} 23 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/121/fast"}} 24 | {"Subeditorias":["Campinas e Região","SP","São Paulo"],"Portal":"G1","DataPublicacao":"2012-04-26T19:12:20Z","Macrotema":"Noticias","Editoria":"G1","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tA Prefeitura de Campinasx estipulou a meta de vacinar 192.354 pessoas contra a gripe durante a campanha que começa no sábado (5) e termina dia 25 de maio. A campanha de vacinação contará com pontos fixos e móveis nos quais a vacinação será feita das 8h às 17h.\n\n\tOs idosos com 60 anos ou mais representam 133.801 do público que a prefeitura pretende atingir. Outras 21.803 são crianças, com idade entre seis meses e 2 anos, além de 14.750 gestantes e 22 mil profissionais de saúdem que também devem ser imunizados.\n\n\tAo todo, o grupo prioritário para receber a dose tem 297 mil pessoas em Campinas, segundo estimativa da Prefeitura. É preciso levar a carteira de vacinação para receber a imunização contra os vírus A (H1N1 e H3N2) e B da gripe.\n\t ","Titulo":"Prefeitura quer vacinar 192,3 mil contra a gripe em Campinas","ID":"http://localhost/noticia/7055601/fast","URL":"http://g1.globo.com/sp/campinas-regiao/noticia/2012/04/prefeitura-quer-vacinar-1923-mil-contra-gripe-em-campinas.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:12:20Z","URLThumbnail":""} 25 | { "index" : {"_index":"outroteste","_type":"materia","_id":"http://localhost/noticia/131/fast"}} 26 | {"Subeditorias":["Economia","Negócios"],"Portal":"G1","DataPublicacao":"2012-04-26T19:07:34Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste:\n\tA Souza Cruzx registrou lucro líquido de R$ 443 milhões no primeiro trimestre de 2012, 7% acima dos R$ 415,4 milhões verificados no mesmo período do ano passado.\n\n\tA geração de caixa medida pelo Ebitda (sigla em inglês para lucro antes de juros, impostos, depreciação e amortização) no trimestre passado ficou em R$ 679,4 milhões, 9% superior ao obtido um ano antes.\n\n\tA receita com vendas de produtos e serviços subiu 4,59%, de R$ 1,348 bilhões, para R$ 1,41 bilhões.","Titulo":"Souza Cruz tem lucro líquido de R$ 443 milhões no 1º trimestre","ID":"http://localhost/noticia/7072651/fast","URL":"http://g1.globo.com/economia/negocios/noticia/2012/04/souza-cruz-tem-lucro-liquido-de-r-443-milhoes-no-1-trimestre.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:07:34Z","URLThumbnail":""} 27 | { "index" : {"_index":"outroteste","_type":"galeria","_id":"http://localhost/noticia/141/fast"}} 28 | {"Subeditorias":["Economia"],"Portal":"G1","DataPublicacao":"2012-04-26T19:06:05Z","Macrotema":"Noticias","Editoria":"Economia","TipoMidia":"Matéria","ControleAcesso":"aberto","Tags":"test","Corpo":"matéria de teste: NOVA YORK, 26 Abr (Reuters) - A agência de classificação de risco Standard & Poor's anunciou nesta quinta-feira que rebaixou o rating de longo prazo de crédito soberano da Espanha de \"A\" para \"BBB+\".\n A S&P afirmou que estava dando perspectiva negativa no rating de longo prazo refletindo sua visão de riscos significativos sobre o crescimento econômico espanhol e a trajetória orçamentária do país.\n (Reportagem de Burton Frierson)\n ","Titulo":"S&P rebaixa rating de crédito soberano da Espanha","ID":"http://localhost/noticia/7072631/fast","URL":"http://g1.globo.com/economia/noticia/2012/04/sp-rebaixa-rating-de-credito-soberano-da-espanha-1.html","Assunto":"","FormatoConteudo":"texto","Legenda":"","DataAtualizacao":"2012-04-26T19:06:05Z","URLThumbnail":""} 29 | -------------------------------------------------------------------------------- /tornadoes/tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/globocom/tornado-es/f805ba766db1d4f3119583490aa99dbb71ad5680/tornadoes/tests/unit/__init__.py -------------------------------------------------------------------------------- /tornadoes/tests/unit/test_tornadoes.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from uuid import uuid4 4 | 5 | from tornadoes import ESConnection 6 | from tornado import escape 7 | from tornado.testing import AsyncTestCase, gen_test 8 | from tornado.ioloop import IOLoop 9 | from mock import Mock 10 | 11 | from six.moves.urllib.parse import urlencode 12 | 13 | 14 | class ESConnectionTestBase(AsyncTestCase): 15 | 16 | def setUp(self): 17 | super(ESConnectionTestBase, self).setUp() 18 | self.es_connection = ESConnection("localhost", "9200", self.io_loop) 19 | self._set_version() 20 | 21 | def tearDown(self): 22 | if (not IOLoop.initialized() or self.io_loop is not IOLoop.instance()): 23 | self.io_loop.close(all_fds=True) 24 | super(AsyncTestCase, self).tearDown() 25 | 26 | def _set_version(self): 27 | self.es_connection.get_by_path("/", self.stop) 28 | response = self.wait() 29 | response = escape.json_decode(response.body) 30 | version = response['version']['number'] 31 | self.version = [int(n) for n in version.split('.') if n.isdigit()] 32 | 33 | def _set_count_query(self, query): 34 | if self.version[0] < 1: 35 | return query['query'] 36 | return query 37 | 38 | 39 | class TestESConnection(ESConnectionTestBase): 40 | 41 | def test_simple_search(self): 42 | self.es_connection.get_by_path("/_search?q=_id:http\:\/\/localhost\/noticia\/2\/fast", self.stop) 43 | response = self._verify_status_code_and_return_response() 44 | self.assertEqual(response["hits"]["total"], 1) 45 | self.assertEqual(response["hits"]["hits"][0]["_id"], u'http://localhost/noticia/2/fast') 46 | 47 | def test_search_for_specific_type_with_query(self): 48 | self.es_connection.search(callback=self.stop, 49 | source={"query": {"term": {"ID": "171171"}}}, 50 | type="materia", index="teste") 51 | 52 | response = self._verify_status_code_and_return_response() 53 | self.assertEqual(response["hits"]["total"], 1) 54 | self.assertEqual(response["hits"]["hits"][0]["_id"], u'171171') 55 | 56 | def test_search_specific_index(self): 57 | self.es_connection.search(callback=self.stop, index="outroteste") 58 | response = self._verify_status_code_and_return_response() 59 | self.assertEqual(response["hits"]["total"], 14) 60 | 61 | def test_search_apecific_type(self): 62 | self.es_connection.search(self.stop, type='galeria') 63 | response = self._verify_status_code_and_return_response() 64 | self.assertEqual(response["hits"]["total"], 2) 65 | 66 | def test_should_access_specific_document(self): 67 | self.es_connection.get(index="teste", type="materia", uid="171171", callback=self.stop) 68 | response = self.wait()["_source"] 69 | self.assertEqual(response['Portal'], "G1") 70 | self.assertEqual(response['Macrotema'], "Noticias") 71 | 72 | def test_should_accumulate_searches_before_search(self): 73 | source = {"query": {"term": {"_id": "171171"}}} 74 | self.es_connection.multi_search("teste", source=source) 75 | source = {"query": {"term": {"body": "multisearch"}}} 76 | self.es_connection.multi_search("neverEndIndex", source=source) 77 | 78 | self.assertListEqual(['{"index": "teste"}\n{"query": {"term": {"_id": "171171"}}}', 79 | '{"index": "neverEndIndex"}\n{"query": {"term": {"body": "multisearch"}}}' 80 | ], self.es_connection.bulk.bulk_list) 81 | 82 | def test_should_generate_empty_header_with_no_index_specified(self): 83 | source = {"query": {"term": {"_id": "171171"}}} 84 | self.es_connection.multi_search(index=None, source=source) 85 | source = {"query": {"term": {"body": "multisearch"}}} 86 | self.es_connection.multi_search(index=None, source=source) 87 | 88 | self.assertListEqual(['{}\n{"query": {"term": {"_id": "171171"}}}', 89 | '{}\n{"query": {"term": {"body": "multisearch"}}}' 90 | ], self.es_connection.bulk.bulk_list) 91 | 92 | def test_should_make_two_searches(self): 93 | self._make_multisearch() 94 | response = self._verify_status_code_and_return_response() 95 | self.assertEqual(response['responses'][0]['hits']['hits'][0]['_id'], "171171") 96 | self.assertFalse("hits" in response['responses'][1]) 97 | 98 | def test_should_clean_search_list_after_search(self): 99 | self._make_multisearch() 100 | self.wait() 101 | self.assertListEqual([], self.es_connection.bulk.bulk_list) 102 | 103 | def _make_multisearch(self): 104 | source = {"query": {"term": {"_id": "171171"}}} 105 | self.es_connection.multi_search(index="teste", source=source) 106 | source = {"query": {"term": {"_id": "101010"}}} 107 | self.es_connection.multi_search(index="neverEndIndex", source=source) 108 | 109 | self.es_connection.apply_search(callback=self.stop) 110 | 111 | def _verify_status_code_and_return_response(self): 112 | response = self.wait() 113 | return self._verify_response_and_returns_dict(response) 114 | 115 | def _verify_response_and_returns_dict(self, response): 116 | self.assertTrue(response.code in [200, 201], "Wrong response code: %d." % response.code) 117 | response = escape.json_decode(response.body) 118 | return response 119 | 120 | def test_can_put_and_delete_document(self): 121 | try: 122 | doc_id = str(uuid4()) 123 | 124 | self.es_connection.put("test", "document", doc_id, { 125 | "test": "document", 126 | "other": "property" 127 | }, parameters={'refresh': True}, callback=self.stop) 128 | 129 | response = self.wait() 130 | response_dict = self._verify_response_and_returns_dict(response) 131 | self.assertEqual(response_dict['_index'], 'test') 132 | self.assertEqual(response_dict['_type'], 'document') 133 | self.assertEqual(response_dict['_id'], doc_id) 134 | self.assertIn('refresh=true', response.request.url) 135 | finally: 136 | self.es_connection.delete("test", "document", doc_id, 137 | parameters={'refresh': True}, callback=self.stop) 138 | response = self._verify_status_code_and_return_response() 139 | 140 | self.assertTrue(response['found']) 141 | self.assertEqual(response['_index'], 'test') 142 | self.assertEqual(response['_type'], 'document') 143 | self.assertEqual(response['_id'], doc_id) 144 | 145 | def test_update_partial_document(self): 146 | uid = escape.url_escape("http://localhost/noticia/5/fast") 147 | self.es_connection.update(index='teste', 148 | type='materia', 149 | uid=uid, 150 | contents={"Tags": "nova"}, 151 | callback=self.stop) 152 | 153 | response = self._verify_status_code_and_return_response() 154 | 155 | self.assertEqual(response["_index"], 'teste') 156 | self.assertEqual(response["_version"], 2) 157 | 158 | def test_count_specific_index(self): 159 | self.es_connection.count(callback=self.stop, index="outroteste") 160 | response = self._verify_status_code_and_return_response() 161 | self.assertEqual(response["count"], 14) 162 | 163 | def test_count_specific_type(self): 164 | self.es_connection.count(callback=self.stop, type='galeria') 165 | response = self._verify_status_code_and_return_response() 166 | self.assertEqual(response["count"], 2) 167 | 168 | def test_count_specific_query(self): 169 | source = {"query": {"term": {"_id": "171171"}}} 170 | source = self._set_count_query(source) 171 | self.es_connection.count(callback=self.stop, source=source) 172 | response = self._verify_status_code_and_return_response() 173 | self.assertEqual(response["count"], 1) 174 | 175 | def test_count_specific_query_with_illegal_parameters(self): 176 | source = {"query": {"term": {"_id": "171171"}}} 177 | source = self._set_count_query(source) 178 | parameters = {'refresh': True} 179 | self.es_connection.count(callback=self.stop, source=source, parameters=parameters) 180 | response = self.wait() 181 | if self.version[0] < 5: 182 | self.assertTrue(response.code in [200, 201], "Wrong response code: %d." % response.code) 183 | else: 184 | self.assertEqual(response.code, 400) 185 | 186 | def test_count_specific_query_with_many_parameters(self): 187 | parameters = {'df': '_id', 'q': '_id:171171'} 188 | self.es_connection.count(callback=self.stop, parameters=parameters) 189 | response = self.wait() 190 | response_dict = self._verify_response_and_returns_dict(response) 191 | self.assertEqual(response_dict["count"], 1) 192 | self.assertTrue('df=_id' in response.request.url) 193 | 194 | 195 | class TestESConnectionWithTornadoGen(ESConnectionTestBase): 196 | 197 | @gen_test 198 | def test_simple_search(self): 199 | response = yield self.es_connection.get_by_path("/_search?q=_id:http\:\/\/localhost\/noticia\/2\/fast", self.stop) 200 | 201 | response = self._verify_status_code_and_return_response(response) 202 | 203 | self.assertEqual(response["hits"]["total"], 1) 204 | self.assertEqual(response["hits"]["hits"][0]["_id"], u'http://localhost/noticia/2/fast') 205 | 206 | @gen_test 207 | def test_search_for_specific_type_with_query(self): 208 | response = yield self.es_connection.search( 209 | source={"query": {"term": {"ID": "171171"}}}, 210 | type="materia", index="teste" 211 | ) 212 | 213 | response = self._verify_status_code_and_return_response(response) 214 | self.assertEqual(response["hits"]["total"], 1) 215 | self.assertEqual(response["hits"]["hits"][0]["_id"], u'171171') 216 | 217 | @gen_test 218 | def test_search_specific_index(self): 219 | response = yield self.es_connection.search(index="outroteste") 220 | response = self._verify_status_code_and_return_response(response) 221 | self.assertEqual(response["hits"]["total"], 14) 222 | 223 | @gen_test 224 | def test_search_apecific_type(self): 225 | response = yield self.es_connection.search(type='galeria') 226 | response = self._verify_status_code_and_return_response(response) 227 | self.assertEqual(response["hits"]["total"], 2) 228 | 229 | @gen_test 230 | def test_should_access_specific_document_using_tornado_gen(self): 231 | response = yield self.es_connection.get(index="teste", type="materia", uid="171171") 232 | response = response["_source"] 233 | self.assertEqual(response['Portal'], "G1") 234 | self.assertEqual(response['Macrotema'], "Noticias") 235 | 236 | @gen_test 237 | def test_should_make_two_searches(self): 238 | self._make_multisearch() 239 | response = yield self.es_connection.apply_search() 240 | response = self._verify_status_code_and_return_response(response) 241 | 242 | self.assertEqual(response['responses'][0]['hits']['hits'][0]['_id'], "171171") 243 | self.assertFalse("hits" in response['responses'][1]) 244 | 245 | @gen_test 246 | def test_should_clean_search_list_after_search(self): 247 | self._make_multisearch() 248 | response = yield self.es_connection.apply_search() 249 | response = self._verify_status_code_and_return_response(response) 250 | 251 | self.assertListEqual([], self.es_connection.bulk.bulk_list) 252 | 253 | @gen_test 254 | def test_can_put_and_delete_document(self): 255 | try: 256 | doc_id = str(uuid4()) 257 | 258 | response = yield self.es_connection.put("test", "document", doc_id, { 259 | "test": "document", 260 | "other": "property" 261 | }, parameters={'refresh': True}) 262 | 263 | response_dict = self._verify_status_code_and_return_response(response) 264 | self.assertEqual(response_dict['_index'], 'test') 265 | self.assertEqual(response_dict['_type'], 'document') 266 | self.assertEqual(response_dict['_id'], doc_id) 267 | self.assertIn('refresh=true', response.request.url) 268 | finally: 269 | response = yield self.es_connection.delete("test", "document", doc_id, 270 | parameters={'refresh': True}) 271 | response = self._verify_status_code_and_return_response(response) 272 | 273 | self.assertTrue(response['found']) 274 | self.assertEqual(response['_index'], 'test') 275 | self.assertEqual(response['_type'], 'document') 276 | self.assertEqual(response['_id'], doc_id) 277 | 278 | @gen_test 279 | def test_count_specific_index(self): 280 | response = yield self.es_connection.count(index="outroteste") 281 | self.assertCount(response, 14) 282 | 283 | @gen_test 284 | def test_count_specific_type(self): 285 | response = yield self.es_connection.count(type='galeria') 286 | self.assertCount(response, 2) 287 | 288 | @gen_test 289 | def test_count_specific_query(self): 290 | source = {"query": {"term": {"_id": "171171"}}} 291 | source = self._set_count_query(source) 292 | response = yield self.es_connection.count(source=source) 293 | self.assertCount(response, 1) 294 | 295 | @gen_test 296 | def test_count_specific_query_as_parameter_with_additional_parameters(self): 297 | parameters = {'q': '_id:171171', 'df': '_id'} 298 | response = yield self.es_connection.count(callback=self.stop, parameters=parameters) 299 | self.assertCount(response, 1) 300 | self.assertTrue(response.request.url.endswith('_count?' + urlencode(parameters))) 301 | 302 | @gen_test 303 | def test_count_specific_query_with_parameters(self): 304 | source = {"query": {"term": {"_id": "171171"}}} 305 | source = self._set_count_query(source) 306 | parameters = {'terminate_after': 5} 307 | response = yield self.es_connection.count(callback=self.stop, source=source, parameters=parameters) 308 | self.assertCount(response, 1) 309 | self.assertTrue(response.request.url.endswith('_count?' + urlencode(parameters))) 310 | 311 | @gen_test 312 | def test_use_of_custom_http_clients(self): 313 | mocked_http_client = Mock() 314 | mocked_http_client.fetch = Mock() 315 | 316 | es_connection = ESConnection("localhost", 317 | "9200", 318 | self.io_loop, 319 | custom_client=mocked_http_client) 320 | 321 | es_connection.search(callback=self.stop, 322 | source={"query": {"term": {"ID": "171171"}}}, 323 | type="materia", index="teste") 324 | 325 | mocked_http_client.fetch.assert_called() 326 | 327 | @gen_test 328 | def test_initilize_client_from_uri(self): 329 | es_connection = ESConnection.from_uri("https://dummy.server:1234/") 330 | self.assertEqual(es_connection.url, "https://dummy.server:1234") 331 | 332 | @gen_test 333 | def test_initilize_client_from_invalid_uri(self): 334 | with self.assertRaises(ValueError): 335 | ESConnection.from_uri("<