[jira] [Created] (ARROW-6558) [C++] Refactor Iterator to a type erased handle

2019-09-13 Thread Benjamin Kietzman (Jira)
Benjamin Kietzman created ARROW-6558:


 Summary: [C++] Refactor Iterator to a type erased handle
 Key: ARROW-6558
 URL: https://issues.apache.org/jira/browse/ARROW-6558
 Project: Apache Arrow
  Issue Type: Improvement
  Components: C++
Reporter: Benjamin Kietzman
Assignee: Benjamin Kietzman


Since {{Iterator}} is used as a base class for exported classes and is 
instantiated in both arrow.dll and arrow_dataset.dll we get multiple definition 
errors. The solution taken by MSVC's stl implementation in the similar case of 
{{std::function}} is type erasure. Since it's not a base class MSVC doesn't 
force public visibility of its members. 



--
This message was sent by Atlassian Jira
(v8.3.2#803003)


Re: [RESULT] [VOTE] Alter Arrow binary protocol to address 8-byte Flatbuffer alignment requirements (2nd vote)

2019-09-13 Thread Neal Richardson
Nice work!

On Fri, Sep 13, 2019 at 10:43 AM Wes McKinney  wrote:
>
> Integration tests are passing:
>
> https://travis-ci.org/apache/arrow/jobs/584361357
>
> I'm merging the feature branch into master. Thanks all
>
> On Thu, Sep 12, 2019 at 6:15 PM Wes McKinney  wrote:
> >
> > Thanks all!
> >
> > It looks like all the changes are in, so we need to see if the
> > integration tests pass before we can merge these changes into master
> >
> > On Thu, Sep 12, 2019 at 7:19 AM Sebastien Binet  wrote:
> > >
> > > hi there,
> > >
> > > On Thu, Sep 12, 2019 at 12:45 AM Wes McKinney  wrote:
> > >
> > > > Thanks Bryan.
> > > >
> > > > I merged the Java patch with the EOS change and submitted a C++ patch
> > > > which also updates the specification
> > > >
> > > > https://github.com/apache/arrow/pull/5361
> > > >
> > > > Let me know when the JS or C# patches are ready to go and I can merge
> > > > those.
> > > >
> > > > I updated https://issues.apache.org/jira/browse/ARROW-6545 to track
> > > > the Go change corresponding to this
> > > >
> > >
> > > done. (I think)
> > >
> > > -s


Re: [Java] CI test failures

2019-09-13 Thread Wes McKinney
I just merged the patch disabling the Gandiva JNI tests and have
renamed ARROW-6509 to cover addressing the issue in Travis CI. CI
builds on master should be passing again

https://issues.apache.org/jira/browse/ARROW-6509

On Fri, Sep 13, 2019 at 9:32 AM Wes McKinney  wrote:
>
> In https://travis-ci.org/apache/arrow/jobs/584463540#L6703
>
> it seems that the Gandiva JNI tests are core dumping. In the interest
> of getting passing CI builds (which have been failing for days) I
> suggest that we disable these unit tests until the issue can be fixed
>
> On Thu, Sep 12, 2019 at 5:23 PM Wes McKinney  wrote:
> >
> > I was able to get the underlying errors to pop out on Travis CI
> >
> > https://github.com/apache/arrow/pull/5370#issuecomment-531029711
> >
> > This looks like a VM resource poverty issue. You may have to disable
> > these tests in Travis CI
> >
> > On Thu, Sep 12, 2019 at 9:25 AM Wes McKinney  wrote:
> > >
> > > Does upgrading maven-surefire-plugin help?
> > >
> > > On Thu, Sep 12, 2019 at 8:29 AM Fan Liya  wrote:
> > > >
> > > > I have tried many times locally, with different values of forkCount, but
> > > > failed to reproduce the error.
> > > >
> > > > Best,
> > > > Liya Fan
> > > >
> > > > On Thu, Sep 12, 2019 at 4:21 PM Fan Liya  wrote:
> > > >
> > > > > It seems the problem occurred when the sure-fire plugin forks:
> > > > >
> > > > > [ERROR] Caused by:
> > > > > org.apache.maven.surefire.booter.SurefireBooterForkException: Error
> > > > > occurred in starting fork, check output in log
> > > > >
> > > > > So we need to adjust the forkCount parameter in the pom.xml file?
> > > > >
> > > > > Best,
> > > > > Liya Fan
> > > > >
> > > > > On Thu, Sep 12, 2019 at 3:10 PM Micah Kornfield 
> > > > > 
> > > > > wrote:
> > > > >
> > > > >> I did not make much progress, I will spend some more time tomorrow, 
> > > > >> if no
> > > > >> one picks it up by then.
> > > > >>
> > > > >> On Wed, Sep 11, 2019 at 10:48 PM Micah Kornfield 
> > > > >> 
> > > > >> wrote:
> > > > >>
> > > > >> > I will try to take look the next couple of hours to see if I can 
> > > > >> > fix it
> > > > >> > quickly.
> > > > >> >
> > > > >> > On Wed, Sep 11, 2019 at 4:54 AM Antoine Pitrou 
> > > > >> wrote:
> > > > >> >
> > > > >> >>
> > > > >> >> Hello,
> > > > >> >>
> > > > >> >> Some Travis-CI builds are failing because of Java issues.  It 
> > > > >> >> would be
> > > > >> >> good if a Java contributor or maintainer could take a look ASAP.
> > > > >> >> https://issues.apache.org/jira/browse/ARROW-6509
> > > > >> >>
> > > > >> >> Thanks
> > > > >> >>
> > > > >> >> Antoine.
> > > > >> >>
> > > > >> >
> > > > >>
> > > > >


Re: [RESULT] [VOTE] Alter Arrow binary protocol to address 8-byte Flatbuffer alignment requirements (2nd vote)

2019-09-13 Thread Wes McKinney
Integration tests are passing:

https://travis-ci.org/apache/arrow/jobs/584361357

I'm merging the feature branch into master. Thanks all

On Thu, Sep 12, 2019 at 6:15 PM Wes McKinney  wrote:
>
> Thanks all!
>
> It looks like all the changes are in, so we need to see if the
> integration tests pass before we can merge these changes into master
>
> On Thu, Sep 12, 2019 at 7:19 AM Sebastien Binet  wrote:
> >
> > hi there,
> >
> > On Thu, Sep 12, 2019 at 12:45 AM Wes McKinney  wrote:
> >
> > > Thanks Bryan.
> > >
> > > I merged the Java patch with the EOS change and submitted a C++ patch
> > > which also updates the specification
> > >
> > > https://github.com/apache/arrow/pull/5361
> > >
> > > Let me know when the JS or C# patches are ready to go and I can merge
> > > those.
> > >
> > > I updated https://issues.apache.org/jira/browse/ARROW-6545 to track
> > > the Go change corresponding to this
> > >
> >
> > done. (I think)
> >
> > -s


Re: [NIGHTLY] Arrow Build Report for Job nightly-2019-09-13-0

2019-09-13 Thread Wes McKinney
* The dask-integration test fixed was just fixed downstream so that
should be passing tomorrow
* My patch https://github.com/apache/arrow/pull/5373 fixes some of the
Spark failures but there are some others that are unrelated to that
patch, so will merge that today and leave further fixing for follow up
* The pandas-master failure seems to be a build problem with pandas
* The ubuntu-cosmic failure seems to be transient, but we should keep
an eye on it

On Fri, Sep 13, 2019 at 7:01 AM Crossbow  wrote:
>
>
> Arrow Build Report for Job nightly-2019-09-13-0
>
> All tasks: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0
>
> Failed Tasks:
> - docker-dask-integration:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-dask-integration
> - docker-spark-integration:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-spark-integration
> - docker-pandas-master:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-pandas-master
> - ubuntu-cosmic:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-ubuntu-cosmic
>
> Succeeded Tasks:
> - docker-js:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-js
> - debian-stretch:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-stretch
> - debian-buster:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-buster
> - docker-python-3.6-nopandas:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.6-nopandas
> - docker-python-3.7:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.7
> - docker-cpp-fuzzit:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp-fuzzit
> - wheel-manylinux2010-cp27m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp27m
> - wheel-manylinux2010-cp35m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp35m
> - wheel-manylinux2010-cp36m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp36m
> - docker-python-3.6:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.6
> - debian-stretch-arm64:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-stretch-arm64
> - wheel-win-cp35m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-appveyor-wheel-win-cp35m
> - conda-win-vs2015-py37:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-conda-win-vs2015-py37
> - docker-go:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-go
> - docker-r-conda:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-r-conda
> - docker-cpp-cmake32:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp-cmake32
> - wheel-osx-cp36m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-osx-cp36m
> - docker-docs:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-docs
> - centos-7:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-centos-7
> - wheel-manylinux1-cp36m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp36m
> - docker-cpp:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp
> - wheel-win-cp37m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-appveyor-wheel-win-cp37m
> - wheel-manylinux1-cp27m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp27m
> - wheel-manylinux1-cp35m:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp35m
> - conda-linux-gcc-py37:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-conda-linux-gcc-py37
> - ubuntu-xenial:
>   URL: 
> https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-ubuntu-xenial
> - conda-linux-gcc-py27:
>   URL: 
> 

Re: [Java] CI test failures

2019-09-13 Thread Wes McKinney
In https://travis-ci.org/apache/arrow/jobs/584463540#L6703

it seems that the Gandiva JNI tests are core dumping. In the interest
of getting passing CI builds (which have been failing for days) I
suggest that we disable these unit tests until the issue can be fixed

On Thu, Sep 12, 2019 at 5:23 PM Wes McKinney  wrote:
>
> I was able to get the underlying errors to pop out on Travis CI
>
> https://github.com/apache/arrow/pull/5370#issuecomment-531029711
>
> This looks like a VM resource poverty issue. You may have to disable
> these tests in Travis CI
>
> On Thu, Sep 12, 2019 at 9:25 AM Wes McKinney  wrote:
> >
> > Does upgrading maven-surefire-plugin help?
> >
> > On Thu, Sep 12, 2019 at 8:29 AM Fan Liya  wrote:
> > >
> > > I have tried many times locally, with different values of forkCount, but
> > > failed to reproduce the error.
> > >
> > > Best,
> > > Liya Fan
> > >
> > > On Thu, Sep 12, 2019 at 4:21 PM Fan Liya  wrote:
> > >
> > > > It seems the problem occurred when the sure-fire plugin forks:
> > > >
> > > > [ERROR] Caused by:
> > > > org.apache.maven.surefire.booter.SurefireBooterForkException: Error
> > > > occurred in starting fork, check output in log
> > > >
> > > > So we need to adjust the forkCount parameter in the pom.xml file?
> > > >
> > > > Best,
> > > > Liya Fan
> > > >
> > > > On Thu, Sep 12, 2019 at 3:10 PM Micah Kornfield 
> > > > wrote:
> > > >
> > > >> I did not make much progress, I will spend some more time tomorrow, if 
> > > >> no
> > > >> one picks it up by then.
> > > >>
> > > >> On Wed, Sep 11, 2019 at 10:48 PM Micah Kornfield 
> > > >> 
> > > >> wrote:
> > > >>
> > > >> > I will try to take look the next couple of hours to see if I can fix 
> > > >> > it
> > > >> > quickly.
> > > >> >
> > > >> > On Wed, Sep 11, 2019 at 4:54 AM Antoine Pitrou 
> > > >> wrote:
> > > >> >
> > > >> >>
> > > >> >> Hello,
> > > >> >>
> > > >> >> Some Travis-CI builds are failing because of Java issues.  It would 
> > > >> >> be
> > > >> >> good if a Java contributor or maintainer could take a look ASAP.
> > > >> >> https://issues.apache.org/jira/browse/ARROW-6509
> > > >> >>
> > > >> >> Thanks
> > > >> >>
> > > >> >> Antoine.
> > > >> >>
> > > >> >
> > > >>
> > > >


[NIGHTLY] Arrow Build Report for Job nightly-2019-09-13-0

2019-09-13 Thread Crossbow


Arrow Build Report for Job nightly-2019-09-13-0

All tasks: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0

Failed Tasks:
- docker-dask-integration:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-dask-integration
- docker-spark-integration:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-spark-integration
- docker-pandas-master:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-pandas-master
- ubuntu-cosmic:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-ubuntu-cosmic

Succeeded Tasks:
- docker-js:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-js
- debian-stretch:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-stretch
- debian-buster:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-buster
- docker-python-3.6-nopandas:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.6-nopandas
- docker-python-3.7:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.7
- docker-cpp-fuzzit:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp-fuzzit
- wheel-manylinux2010-cp27m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp27m
- wheel-manylinux2010-cp35m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp35m
- wheel-manylinux2010-cp36m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux2010-cp36m
- docker-python-3.6:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-3.6
- debian-stretch-arm64:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-debian-stretch-arm64
- wheel-win-cp35m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-appveyor-wheel-win-cp35m
- conda-win-vs2015-py37:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-conda-win-vs2015-py37
- docker-go:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-go
- docker-r-conda:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-r-conda
- docker-cpp-cmake32:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp-cmake32
- wheel-osx-cp36m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-osx-cp36m
- docker-docs:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-docs
- centos-7:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-centos-7
- wheel-manylinux1-cp36m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp36m
- docker-cpp:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-cpp
- wheel-win-cp37m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-appveyor-wheel-win-cp37m
- wheel-manylinux1-cp27m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp27m
- wheel-manylinux1-cp35m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp35m
- conda-linux-gcc-py37:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-conda-linux-gcc-py37
- ubuntu-xenial:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-ubuntu-xenial
- conda-linux-gcc-py27:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-conda-linux-gcc-py27
- centos-6:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-azure-centos-6
- wheel-manylinux1-cp37m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-travis-wheel-manylinux1-cp37m
- docker-python-2.7:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-python-2.7
- wheel-win-cp36m:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-appveyor-wheel-win-cp36m
- docker-hdfs-integration:
  URL: 
https://github.com/ursa-labs/crossbow/branches/all?query=nightly-2019-09-13-0-circle-docker-hdfs-integration
- docker-java:
  URL: 

[jira] [Created] (ARROW-6556) [Python] prepare on pandas release without SparseDataFrame

2019-09-13 Thread Joris Van den Bossche (Jira)
Joris Van den Bossche created ARROW-6556:


 Summary: [Python] prepare on pandas release without SparseDataFrame
 Key: ARROW-6556
 URL: https://issues.apache.org/jira/browse/ARROW-6556
 Project: Apache Arrow
  Issue Type: Test
  Components: Python
Reporter: Joris Van den Bossche


We still have a few places where we use SparseDataFrame. An upcoming release of 
pandas will remove this class, so we should already make sure it works for that.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)


Re: [C++] Compilation error when creating a Tuple with optional String

2019-09-13 Thread Prudhvi Porandla
Yes, explicitly creating std::string fixes the problem. This is not needed for 
newer gcc versions(>=6). 

Thanks a lot Ben and Omer.

> On 12-Sep-2019, at 10:57 PM, Omer F. Ozarslan  wrote:
> 
> I'm looking into it. Will submit PR today.
> 
> On Thu, Sep 12, 2019 at 11:32 AM Ben Kietzman  
> wrote:
>> 
>> It looks like a tuple constructor is choking on implicit conversion from 
>> string literal (char[6]) to boost::optional:
>> https://travis-ci.org/ursa-labs/crossbow/builds/582833123#L1161
>> 
>> That constructor in the 4.8.2 release of GCC requires that parameters be 
>> *convertible* to the corresponding element type (and not just that the 
>> element be constructible from the parameter)
>> https://github.com/gcc-mirror/gcc/blob/gcc-4_8_2-release/libstdc++-v3/include/std/tuple#L400-L405
>> 
>> Locally,
>>  // static_assert(std::is_convertible> boost::optional>::value, "FAILS");
>>  static_assert(std::is_convertible> boost::optional>::value, "fine");
>> So I think this can be resolved by wrapping string literal arguments to 
>> tuple constructors with std::string to ensure they are convertible.
>> 
>> I'll create a JIRA
>> 
>> On Thu, Sep 12, 2019 at 8:09 AM Prudhvi Porandla  wrote:
>>> 
>>> Hi,
>>> 
>>> Gandiva trusty 
>>> job(https://travis-ci.org/ursa-labs/crossbow/builds/582833123) is failing 
>>> with this commit (ARROW-6326: [C++] Nullable fields when converting 
>>> std::tuple to Table  
>>> ).
>>> The compilation is successful if the optional string column is removed from 
>>> boost_optional_types_tuple(see line 36 of cpp/src/arrow/stl_test.cc).
>>> 
>>> Could someone help me understand this error?
>>> 
>>> 
>>> Thanks,
>>> Prudhvi
>>> 
>>>