Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python3 #7

Closed
wants to merge 6 commits into from
Closed

Python3 #7

wants to merge 6 commits into from

Conversation

ctrl-z-9000-times
Copy link

This PR makes this repo work for python3

Used 2to3 tool, and then fixed most of the remaining issues.

@ctrl-z-9000-times
Copy link
Author

@breznak,

Please review this. The goal of this PR is to prepare this python code to be merged into the nupic.cpp repo. I recommend reviewing each commit, since the first commit is computer generated and very large & repetitive.

Notes:

  • Capnp is still here
  • I did not test with python2
  • CI is broken with error: /Users/travis/.travis/functions: line 104: virtualenv: command not found

Copy link
Member

@breznak breznak left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work on py2/3 compatibility! Many thanks!

since the first commit is computer generated and very large & repetitive.

reviewed all, but only skimmed through the 1st, I think we can reasonably trust 2to3

Capnp is still here

ok, can remain. It's wrapped with try-import-catch. I'd suggest leaving it there so the diff to numenta's is not necessarily inflated.

I did not test with python2

please do, or I'll after Wed, currently swamped at work.

CI is broken with error: /Users/travis/.travis/functions: line 104: virtualenv: command not found

ditto, I can fix it later. Or fix package install in CI, maybe it'll hint the name of package, or you have to search CI's OS + virtualenv

@dkeeney might know if someone else already also did the py2->3 migration? (CHenning?)

@dkeeney
Copy link

dkeeney commented Feb 18, 2019

yes, @chhenning did the py2->3 migration. There may have been changes to the numenta code since. Also note that Windows cannot do Python2 (cannot create the bindings for it) and @chhenning was a Windows user so he started with both Python2 and 3 but ended up only checking out Python3.

See https://github.com/chhenning/nupic (nupic/src/python/)

@dkeeney
Copy link

dkeeney commented Feb 18, 2019

This is way cool 👍
I think you already did as much or maybe more than @chhenning's repository. But it might be worth the effort to checkout what he did.

@pepedocs
Copy link

This PR makes this repo work for python3

Used 2to3 tool, and then fixed most of the remaining issues.

What are other ways to help you with the migration? By the way how much test coverage do we have for testing nupic, any ideas?

@breznak
Copy link
Member

breznak commented Feb 18, 2019

Hey @pepedocs , you're just in time! We're in the process of

  • moving to py3,
  • merging back the py code to nupic.cpp repo, so as to have more complete test coverage
  • as there were, and are more c++ base cleanups Sparsematrix removal 2 htm.core#169 , we'll need to adapt this repo/the merged py code, to our advances made in the community repo.

...so any help is welcome and will be very needed.
As of this PR,

  • validating it works for you with Py3,
  • checking all still works with py2.7
    and we can merge this.

Then the key focus is on #4
and we'll start pulling pieces of code from this repo into https://github.com/htm-community/nupic.cpp where it'll newly reside with c++.

@ctrl-z-9000-times
Copy link
Author

Sorry everyone, I misunderstood the how the unit tests worked and they weren't all being run. The real error count for the unit tests is off the charts: 288 failed, 384 passed, 56 skipped, 55 warnings, 10 error in 35.84 seconds

I also think I submitted this PR to the wrong repository. For our long term goals, I think a better work-flow would be to:

  • Make a new branch in nupic.cpp
  • Copy this entire repo (nupic.py) into a new folder in the new branch
  • Fixup this python code, as priority dictates
  • Selectively merge peices of this code into mainline
    • First merge commit should be empty directories, CMakeList stubs, and test-infrastructure stubs.
    • After merging a file into mainline, development on the file will commence ONLY on mainline.
    • There will be no merge conflicts because the new branch contains only new files. This branch can live as long as it needs to, for all of it to either get merged into mainline or for us all to agree to get rid of it.

@pepedocs
Copy link

Great job!

I also think I submitted this PR to the wrong repository.

What do you mean by wrong repo, isn't this the right repo?

Have you tried installing this using py2 and py3 and fixed all the install errors?

@ctrl-z-9000-times
Copy link
Author

What do you mean by wrong repo, isn't this the right repo?

My goals is to merge this repository into the nupic.cpp repository. Since these repositories do the same things, it doesn't make sense to split them up. If we merge them, then we can have the python code and the bindings which it relies on all in the same place. It also brings the python test cases into the same place as the C++ algorithms they test. The duplicate code which is implemented in both C++ and pure-Python benefits because we can more easily test that they're the identical. I talked about this here https://discourse.numenta.org/t/survey-features-api-compatibility/5344

@dkeeney
Copy link

dkeeney commented Feb 19, 2019

I propose that all .py code from this repository be placed in a top level folder 'python'.

repo/python/src/nupic

This would be in parallel to the bindings and library code

repo/src/nupic           -- nupic core library
repo/bindings/py         -- interface bindings for python
repo/external            -- C++ prerequisites

repo/python/src/nupic    -- py code from nupic.py
repo/csharp/src/nupic    -- C# code at the same level (future)
repo/cpp/src/nupic       -- C++ applications that use the core library (future)

@ctrl-z-9000-times
Copy link
Author

Nitpick: how about py instead of python ?

@breznak
Copy link
Member

breznak commented Feb 19, 2019

@pepedocs did you have a chance to validate it "works" (the same as master) here in py2, py3? If so, we'll merge this branch.

@pepedocs
Copy link

@pepedocs did you have a chance to validate it "works" (the same as master) here in py2, py3? If so, we'll merge this branch.

Well as a quick acceptance test I tried installing this using py2 and I got syntax errors such as,

SyntaxError: invalid syntax

  File "/usr/local/lib/python2.7/site-packages/nupic-1.0.6.dev0-py2.7.egg/nupic/swarming/ModelRunner.py", line 887
    print("reporter:counter:HypersearchWorker,numRecords,50", file=sys.stderr)

On the other hand for py3 install I found an error that said it cannot find the nupic.bindings which I believe I need to install for py3. Which nupic.bindings is for py3 by the way?

Please mention your test methods if you can so I can try them in my workspace.

@ctrl-z-9000-times
Copy link
Author

@pepedocs

I used the python3 bindings from htm-community/nupic.cpp
Here are some notes about my setup:

  • git clone https://github.com/htm-community/nupic.cpp.git
  • python3 setup.py install --user --force
  • C++ Compile Fastest: mkdir -p build/scripts/ ; cd build/scripts/ ; cmake ../.. -DCMAKE_BUILD_TYPE=Debug && make install -j ; cd ../..

Test Methods for nupic.cpp:

  • python bindings unit tests: python3 setup.py install --user --force test
    • python3 setup.py install --user --force test -a path_to_tests
  • C++ Unit test: example of how to modify to run only the tests in the types directory:
/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
Line: 141:
 
 set(src_executable_gtests
     unit/UnitTestMain.cpp
#    ${algorithm_tests}        <- Commented out
#    ${encoders_tests}         <- Commented out
#    ${engine_tests}         <- Commented out
#    ${math_tests} 
#    ${ntypes_tests} 
#    ${os_tests} 
     ${types_tests}         <- Unit Under Test
#    ${utils_tests} 
 )

@pepedocs
Copy link

@ctrl-z-9000-times @breznak

I'm getting errors when building nupic.cpp using;

  • OSX Mojave
  • Python 3

Errors are in SDR_Metrics*

In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/forward_list:171:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2285:5: error: delete called on
      'nupic::SDR_MetricsHelper_' that is abstract but has non-virtual destructor
      [-Werror,-Wdelete-non-virtual-dtor]
    delete __ptr;
    ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
      'std::__1::default_delete<nupic::SDR_MetricsHelper_>::operator()' requested here
      __ptr_.second()(__tmp);
      ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2552:19: note: in instantiation of member function
      'std::__1::unique_ptr<nupic::SDR_MetricsHelper_, std::__1::default_delete<nupic::SDR_MetricsHelper_>
      >::reset' requested here
  ~unique_ptr() { reset(); }
                  ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1319:40: note:
      in instantiation of member function 'std::__1::unique_ptr<nupic::SDR_MetricsHelper_,
      std::__1::default_delete<nupic::SDR_MetricsHelper_> >::~unique_ptr' requested here
            v_h.holder<holder_type>().~holder_type();
                                       ^

@ctrl-z-9000-times
Copy link
Author

@pepedocs,

I can't reproduce the error but I did some google searching and I think I have a fix. I made a new branch with the fix. When you have the time, please give it a try and tell us if it works.
git clone https://github.com/htm-community/nupic.cpp.git
git checkout virtual-distructors

Thanks for testing out this new repo, and especially thanks for reporting the bugs in it!

@dkeeney
Copy link

dkeeney commented Feb 20, 2019

Here are some notes about my setup:

Perhaps a little explanation of what those commands do would be useful.

  • python3 -m pip install --user --upgrade pip setuptools setuptools-scm wheel This installs some python tools you will need in case you don't already have them installed.
  • git clone https://github.com/htm-community/nupic.cpp.git This gets the repository.
  • cd nupic.cpp run the following commands from the top of the repository.
  • python3 setup.py install --user --force This will build the C++ library and then build and install the python3 version of the bindings for the local user. The python version you run with this command is the version for which the bindings will be built and installed. For example; If you used python2 rather than python3 with this command it will build and install the python2.7 version of the nupic.cpp library. Once installed you should be able to run any python code that imports the nupic.cpp library.
  • python3 setup.py test to run the .py bindings unit test using the python3 bindings. (optional)
  • ./build/Release/bin/unit_tests This will run the C++ unit tests for the library. (optional)
  • cd build/scripts/ ; cmake ../.. -DCMAKE_BUILD_TYPE=Debug && make install -j ; cd ../.. This is to build a debug version of the C++ library. (optional) Run it with ./build/Debug/bin/unit_tests and your favorite debugger.

The python bindings that are made available for import are

  • nupic.bindings.algorithms
  • nupic.bindings.engine_internal
  • nupic.bindings.math

This should all be covered in the README.md. If you have problems with any of this please let me know, even if minor, since you are some of the first to try out the new installation procedures.

@breznak
Copy link
Member

breznak commented Feb 20, 2019

Thanks everyone for the wonderful community support! <3

@pepedocs
Copy link

@ctrl-z-9000-times

Checked out branch virtual-distructors built it and got new errors I guess.

Do we have a CI for nupic.cpp? Let me know if you need more testing.

In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/common.h:140:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/forward_list:171:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2285:5: error: delete called on non-final
      'nupic::SDR_MetricsHelper_' that has virtual functions but non-virtual destructor
      [-Werror,-Wdelete-non-virtual-dtor]
    delete __ptr;
    ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
      'std::__1::default_delete<nupic::SDR_MetricsHelper_>::operator()' requested here
      __ptr_.second()(__tmp);
      ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2552:19: note: in instantiation of member function
      'std::__1::unique_ptr<nupic::SDR_MetricsHelper_, std::__1::default_delete<nupic::SDR_MetricsHelper_>
      >::reset' requested here
  ~unique_ptr() { reset(); }
                  ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1319:40: note:
      in instantiation of member function 'std::__1::unique_ptr<nupic::SDR_MetricsHelper_,
      std::__1::default_delete<nupic::SDR_MetricsHelper_> >::~unique_ptr' requested here
            v_h.holder<holder_type>().~holder_type();
                                       ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1054:26: note:
      in instantiation of member function 'pybind11::class_<nupic::SDR_MetricsHelper_>::dealloc' requested here
        record.dealloc = dealloc;
                         ^
/Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:36:40: note: in
      instantiation of function template specialization 'pybind11::class_<nupic::SDR_MetricsHelper_>::class_<>'
      requested here
        py::class_<SDR_MetricsHelper_> py_Helper(m, "SDR_MetricsHelper_");
                                       ^
In file included from /Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:22:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:43:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../attr.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/cast.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../pytypes.h:12:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/common.h:140:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/forward_list:171:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2285:5: error: delete called on non-final
      'nupic::SDR_Sparsity' that has virtual functions but non-virtual destructor
      [-Werror,-Wdelete-non-virtual-dtor]
    delete __ptr;
    ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
      'std::__1::default_delete<nupic::SDR_Sparsity>::operator()' requested here
      __ptr_.second()(__tmp);
      ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2552:19: note: in instantiation of member function
      'std::__1::unique_ptr<nupic::SDR_Sparsity, std::__1::default_delete<nupic::SDR_Sparsity> >::reset'
      requested here
  ~unique_ptr() { reset(); }
                  ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1319:40: note:
      in instantiation of member function 'std::__1::unique_ptr<nupic::SDR_Sparsity,
      std::__1::default_delete<nupic::SDR_Sparsity> >::~unique_ptr' requested here
            v_h.holder<holder_type>().~holder_type();
                                       ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1054:26: note:
      in instantiation of member function 'pybind11::class_<nupic::SDR_Sparsity,
      nupic::SDR_MetricsHelper_>::dealloc' requested here
        record.dealloc = dealloc;
                         ^
/Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:52:54: note: in
      instantiation of function template specialization 'pybind11::class_<nupic::SDR_Sparsity,
      nupic::SDR_MetricsHelper_>::class_<char [490]>' requested here
        py::class_<SDR_Sparsity, SDR_MetricsHelper_> py_Sparsity(m, "SDR_Sparsity",
                                                     ^
In file included from /Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:22:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:43:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../attr.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/cast.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../pytypes.h:12:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/common.h:140:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/forward_list:171:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2285:5: error: delete called on non-final
      'nupic::SDR_ActivationFrequency' that has virtual functions but non-virtual destructor
      [-Werror,-Wdelete-non-virtual-dtor]
    delete __ptr;
    ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
      'std::__1::default_delete<nupic::SDR_ActivationFrequency>::operator()' requested here
      __ptr_.second()(__tmp);
      ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2552:19: note: in instantiation of member function
      'std::__1::unique_ptr<nupic::SDR_ActivationFrequency,
      std::__1::default_delete<nupic::SDR_ActivationFrequency> >::reset' requested here
  ~unique_ptr() { reset(); }
                  ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1319:40: note:
      in instantiation of member function 'std::__1::unique_ptr<nupic::SDR_ActivationFrequency,
      std::__1::default_delete<nupic::SDR_ActivationFrequency> >::~unique_ptr' requested here
            v_h.holder<holder_type>().~holder_type();
                                       ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1054:26: note:
      in instantiation of member function 'pybind11::class_<nupic::SDR_ActivationFrequency,
      nupic::SDR_MetricsHelper_>::dealloc' requested here
        record.dealloc = dealloc;
                         ^
/Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:95:13: note: in
      instantiation of function template specialization 'pybind11::class_<nupic::SDR_ActivationFrequency,
      nupic::SDR_MetricsHelper_>::class_<char [731]>' requested here
            py_ActivationFrequency(m, "SDR_ActivationFrequency",
            ^
In file included from /Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:22:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:43:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../attr.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/cast.h:13:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/../pytypes.h:12:
In file included from /Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/detail/common.h:140:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/forward_list:171:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2285:5: error: delete called on non-final
      'nupic::SDR_Overlap' that has virtual functions but non-virtual destructor
      [-Werror,-Wdelete-non-virtual-dtor]
    delete __ptr;
    ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
      'std::__1::default_delete<nupic::SDR_Overlap>::operator()' requested here
      __ptr_.second()(__tmp);
      ^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:2552:19: note: in instantiation of member function
      'std::__1::unique_ptr<nupic::SDR_Overlap, std::__1::default_delete<nupic::SDR_Overlap> >::reset' requested
      here
  ~unique_ptr() { reset(); }
                  ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1319:40: note:
      in instantiation of member function 'std::__1::unique_ptr<nupic::SDR_Overlap,
      std::__1::default_delete<nupic::SDR_Overlap> >::~unique_ptr' requested here
            v_h.holder<holder_type>().~holder_type();
                                       ^
/Users/admin/mlearn/nupic.cpp/build/ThirdParty/pybind11/pybind11-src/include/pybind11/pybind11.h:1054:26: note:
      in instantiation of member function 'pybind11::class_<nupic::SDR_Overlap,
      nupic::SDR_MetricsHelper_>::dealloc' requested here
        record.dealloc = dealloc;
                         ^
/Users/admin/mlearn/nupic.cpp/bindings/py/cpp_src/bindings/algorithms/py_SDR_Metrics.cpp:154:53: note: in
      instantiation of function template specialization 'pybind11::class_<nupic::SDR_Overlap,
      nupic::SDR_MetricsHelper_>::class_<char [704]>' requested here
        py::class_<SDR_Overlap, SDR_MetricsHelper_> py_Overlap(m, "SDR_Overlap",
                                                    ^
4 errors generated.
make[2]: *** [bindings/py/cpp_src/CMakeFiles/algorithms.dir/bindings/algorithms/py_SDR_Metrics.cpp.o] Error 1
make[1]: *** [bindings/py/cpp_src/CMakeFiles/algorithms.dir/all] Error 2

@breznak
Copy link
Member

breznak commented Feb 21, 2019

moving the build issue discussion to htm-community/htm.core#274, please follow up only there.

@pepedocs
Copy link

pepedocs commented Feb 22, 2019

I'll start with builds/install then proceed to code changes when possible.

For this PR, I can confirm that nupic.py installed without errors with nupic.cpp 1.0.7.dev0.
I've also seen some py2 install errors which I think are just py2/py3 incompatibilities.

Do we need to support py2?

@breznak
Copy link
Member

breznak commented Feb 22, 2019

I've also seen some py2 install errors which I think are just py2/py3 incompatibilities.
Do we need to support py2?

Great, thanks for testing.
Could you please also verify with py2 and/or report/fix those errors?
Unfortunately yes, lot of the py user codebases is in py2, so we'll probably have to support it until it's EOL.

@pepedocs
Copy link

pepedocs commented Feb 25, 2019

I've also seen some py2 install errors which I think are just py2/py3 incompatibilities.
Do we need to support py2?

Great, thanks for testing.
Could you please also verify with py2 and/or report/fix those errors?
Unfortunately yes, lot of the py user codebases is in py2, so we'll probably have to support it until it's EOL.

Ok so I've fixed the syntax errors both for py2/3. Now I'm still seeing other kinds of test errors. If any of you are interested at fixing these errors by continuing what I've started please let me know so I will commit my changes for this PR.

I will continue fixing the errors but I'll be slow as I'm only doing this on my spare time.

@breznak
Copy link
Member

breznak commented Feb 25, 2019

If any of you are interested at fixing these errors by continuing what I've started please let me know so I will commit my changes for this PR.

please do commit your changes continuously and update the PR, so if anyone picks up, no work is lost.

Now I'm still seeing other kinds of test errors.

if those errors are caused by the broken tests, and not the py2->3 migration, we'll merge this PR.

@pepedocs
Copy link

please do commit your changes continuously and update the PR, so if anyone picks up, no work is lost.

I don't think I have rights to update/push changes to this PR.

@breznak
Copy link
Member

breznak commented Feb 25, 2019

please make your fork of this repo (or numenta/nupic), push the local changes and then open a PR to this branch, I'll merge it.

@ctrl-z-9000-times
Copy link
Author

open a PR to this branch

Clarification: Please open a PR to htm-community:master not the source of this which is ctrl-z-9000-times:python3

@pepedocs
Copy link

@ctrl-z-9000-times My changes are on top of yours, did you mean I have to create a new PR with your changes plus mine? Sorry I'm a bit confused.

@breznak
Copy link
Member

breznak commented Feb 26, 2019

@pepedocs I've opened the PR, #8
@ctrl-z-9000-times I would have opend the PR to your branch (this PR), but somehow I cannot find your repo across the forks on GH. So #8 contains both yours and Jose's changes. I just breaks the line of conversation. SO this PR is deprecated by #8.

@breznak breznak closed this Feb 26, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants