Progress bar doesn't show enough digits

The error of my problem is around or below 0.01. As I am using mean_squared_error, the progress bar is on longer showing enough digits after the 2nd epoch as example below:
Epoch 1/20
819007/819007 [==============================] - 123s - loss: 0.0002 - val_loss: 0.0001
Epoch 2/20
819007/819007 [==============================] - 127s - loss: 0.0001 - val_loss: 0.0001
Epoch 3/20
819007/819007 [==============================] - 126s - loss: 0.0001 - val_loss: 0.0001
Epoch 4/20
819007/819007 [==============================] - 127s - loss: 0.0001 - val_loss: 0.0001

You can for example create a callback for on_epoch_end and print the loss yourself.

Yes indeed. Still it would be good that the progress bar can automatically use scientific notation or other way to show the extra digits in this case.

Another trivial solution is to increase your loss by an arbitrary factor
(e.g. x1000), by using a custom loss:
loss = lambda y_true, y_pred: 1000 * mse(y_true, y_pred)
On 7 December 2015 at 11:56, Cheng Guo<EMAIL_ADDRESS>wrote:

Yes indeed. Still it would be good that the progress bar can automatically
use scientific notation or other way to show the extra digits in this case.
—
Reply to this email directly or view it on GitHub
https://github.com/fchollet/keras/issues/1203#issuecomment-162641440.

I agree with @entron. What's the benefit of showing this useless output by default? Sure, it's easy to find a workaround for it, but I think that misses the point. I'd also go with scientific notation. Don't make common use cases harder than they really are.

Thanks a lot for the answers and the quick fix! I am really amazed by the Keras community!


Tv remote not working

the tv remote feature used to work but it no longer works and the xbox does not respond to any of the buttons i press on the phone

If you also experience this issue, change the ip adress save it, and then change it back and it should work


Resnet50 fails on TensorFlow-gpu

The Resnet50 example fails on TensorFlow-GPU. The example works well on the non GPU TensorFlow.
It fails on load_weights. Parts of the traceback:
File "C:/Users/gslab/Downloads/resnet50.py", line 251, in ResNet50
model.load_weights(weights_path)
File "C:\Program Files\Anaconda3\lib\site-packages\keras\engine\topology.py", line 2495, in load_weights
load_weights_from_hdf5_group(f, self.layers)
File "C:\Program Files\Anaconda3\lib\site-packages\keras\engine\topology.py", line 2908, in load_weights_from_hdf5_group
K.batch_set_value(weight_value_tuples)
<<<< --- long list of calls in tensorflow_backend.py --->>
File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 420, in init
self._assert_fetchable(graph, fetch)
File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 437, in _assert_fetchable
'Operation %r has been marked as not fetchable.' % op.name)
ValueError: Operation 'init_2' has been marked as not fetchable.

is resnet 50 example available in tiny dnn?


access to resource not allowed within the assigned scope

Split out from https://github.com/pondersource/sciencemesh-php/issues/219#issuecomment-1594493502

I'll dig into the code and provide some more error logs and stack traces

can you check which is the path of the resource you requested and the path returned by the nextcloud storage driver?

What does DismantleToken do? Should it be trying to dismantle a token if it has already done GetShareByToken?

Trying now with acceptedUser.Id.Type = userpb.UserType_USER_TYPE_FEDERATED

****** REQUEST &ocmv1beta1.GetOCMShareRequest{Opaque:nil, Ref:&ocmv1beta1.ShareReference{Spec:&ocmv1beta1.ShareReference_Token{Token:"JUHqmYallcf9iu0OSD2bmjbANsubTkUu"}, XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}, XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}
****** scope map[string]&providerv1beta1.Scope{"ocmshare:4":&providerv1beta1.Scope{Resource:&typesv1beta1.OpaqueEntry{Decoder:"json", Value:[]uint8{123, 125}, XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}, Role:providerv1beta1.Role(0), XXX_NoUnkeyedLiteral:struct {}{}, XXX_unrecognized:[]uint8(nil), XXX_sizecache:0}}
2023-06-19 09:32:34.365 INF ../reva/internal/grpc/interceptors/auth/scope.go:93 > Token scope is not ok pid=377455 pkg=rgrpc traceid=1e4cb5aed5395e1ed301400f562748e9

Decoder:"json", Value:[]uint8{123, 125}

The JSON is "{}"

Fixed in Reva and in NC. Todo: fix in OC-10


Storyboard Support?

Can't seem to get it to work with storyboards.
Always getting Unknown class PlotView in Interface Builder file at path/.....

I was using Carthage. And although it didn't autofill 'Plotkit', still worked. Thanks! You might wanna add that to the README. Hold on, I'll make a PR.


Search by patient last name in e2e

Related Issue or Background Info

Fixes e2e tests

Changes Proposed

Previously, the e2e test was searching for users using "Lastname, Firstname" in the search box. This is not supported in the new backend search implementation (it's also arbitrary to expect this behavior). This PR changes the e2e search to just look for a patient's last name.

@ClydeDroid do you have any issue with this change to the e2e tests? Seems arbitrary to expect the search to function by entering "Lastname, Firstname", so instead I changed it to just search for the patient's last name.


LITE-18627 Added prefetch count for RabbitMQ

Codecov Report

Merging #39 (13e9bbe) into master (e73f923) will decrease coverage by 0.03%.
The diff coverage is 83.33%.

@@            Coverage Diff             @@
##           master      #39      +/-   ##
==========================================
- Coverage   95.63%   95.59%   -0.04%
==========================================
  Files          31       31
  Lines        1649     1658       +9
==========================================
+ Hits         1577     1585       +8
- Misses         72       73       +1

Impacted Files
Coverage Δ

dj_cqrs/transport/rabbit_mq.py
85.83% <71.42%> (+0.06%)
:arrow_up:

dj_cqrs/utils.py
93.54% <87.50%> (-6.46%)
:arrow_down:

dj_cqrs/constants.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e73f923...13e9bbe. Read the comment docs.

Tests are passed - some issues with uploading coverage

Hey,
I've found that this Pull Request is breaking cqrs_dead_letters retry command.
_get_consumer_settings used to return 2 arguments and with this change it start to return tuple of 3,
which is breaking init_broker method in above mentioned command.
Exact line:
queue_name, dead_letter_queue_name = RabbitMQTransportService.get_consumer_settings()

is raising ValueError: too many values to unpack (expected 2)

@Szejdi thank you very much. We will fix that!

@Szejdi fixed in 1.13.2


Update README.md

Jim's initial additions.

I think these have now been reflected in the updated text, if not, please feel free to reopen.


Moved an object out of the package... and still... no PULL nor STAGE available

Hello,
I moved a function group to another package. Now I get a list of red warnings saying:

Package and path does not match for object, FUGR .....

I'd expect I'd be able to somehow edit the repository and remove the object from there. But in order to be able to do it I had to make an insignificant change to a data element description to make the STAGE button show up.

guess this issue is related: https://github.com/larshp/abapGit/issues/514 lets keep both open in case it is not the same code fix

I think this is solved with https://github.com/larshp/abapGit/issues/1378


wxee

You should add wxee as well

@Daniel-Trung-Nguyen Thanks for the suggestion. wxee has been added to the list. @aazuspan

Thanks @Daniel-Trung-Nguyen and @giswqs!


Weird stuff with multi-commit reports

Example; probably caused by indistinct commits being counted when checking if a separate report is needed.

Fixed!


oh-my-posh: 8.37.1 -> 9.0.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/jandedobbeleer/oh-my-posh/releases.
meta.description for oh-my-posh is: "A prompt theme engine for any shell"
meta.homepage for oh-my-posh is: "https://ohmyposh.dev"
meta.changelog for oh-my-posh is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 9.0.0 with grep in /nix/store/z7w7xa98130grm63qjsb8pymj556zl3p-oh-my-posh-9.0.0
found 9.0.0 in filename of file in /nix/store/z7w7xa98130grm63qjsb8pymj556zl3p-oh-my-posh-9.0.0

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
oh-my-posh

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/z7w7xa98130grm63qjsb8pymj556zl3p-oh-my-posh-9.0.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A oh-my-posh https://github.com/r-ryantm/nixpkgs/archive/119c5535875167201278d5c34fe3ff75db5a393f.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/z7w7xa98130grm63qjsb8pymj556zl3p-oh-my-posh-9.0.0
ls -la /nix/store/z7w7xa98130grm63qjsb8pymj556zl3p-oh-my-posh-9.0.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

oh-my-posh

Maintainer pings
cc @lucperkins for testing.

Result of nixpkgs-review pr 190376 run on x86_64-linux 1

1 package built:

oh-my-posh


User lists used in testsuite are not deleted

User lists used in testsuite are not deleted after running command tests.

Issue is invalid. User lists are correctly deleted after running command tests, but files are created after PR from github


WIP: Scala 2.12.0-RC1

This yak is way hairier than I anticipated. Dependent projects include http4s and a lot of Scala.js stuff.

The fetch-js, web, and http-server could be compiled only for 2.11, if they're a problem. Like cli should already be.

I might be able to get fastparse out for 2.12, but beyond that, no promises :smile:

@larsrh I prepared build.sbt a bit more here. With fastparse and https://github.com/scala-js/scala-js-jquery (you were already on the latter too it seems :-), that should be good for 2.12.0-RC2.

OK, closing this in favour of #368.


Disable hardening the stackprotector for spl/zfs.

Linux 4.16 introduces a stackprotector detection script that returns
different results for the kernel compilation run and the spl/zfs
compilation run, when we disable hardening for the kernel compilation
run, but don't for the spl/zfs compilation run. This results in a
broken ABI between spl/zfs and the compiled kernel, breaking ZFS.
Motivation for this change
https://github.com/NixOS/nixpkgs/issues/39225
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[X] Tested via one or more NixOS test(s) if existing and applicable for the change:
nix-build -A stable nixos/tests/zfs.nix
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

@Mic92 Please have a look.
I think that we should not allow different gcc hardening settings for out-of-tree module compilations and for the kernel. I would have this setting passed through from the kernel derivation so that we can ensure that the ABI matches with the module. This is something for a followup PR, probably going through all the packages in "linuxPackagesFor".

This works with Linux 4.16.17 and ZFS on my system.

While "master" seems not to care, cherry-picking into release-18.03 doesn't give working spl/zfs modules unless I also disable the "fortify" hardening for the spl/zfs compilation branch.
I updated the PR with that, so we cherry-pick into 18.03


Error in setup.py

Thank you for your great working.
I get this error messge when i run setup.py
running build_ext
building 'im2mesh.utils.libkdtree.pykdtree.kdtree' extension
Emitting ninja build file /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/build.ninja...
Compiling objects...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/1] c++ -MMD -MF /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o.d -pthread -B /home/hongza/.conda/envs/dvr/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/hongza/.conda/envs/dvr/lib/python3.8/site-packages/numpy/core/include -I/home/hongza/.conda/envs/dvr/include/python3.8 -c -c /home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c -o /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0
FAILED: /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o
c++ -MMD -MF /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o.d -pthread -B /home/hongza/.conda/envs/dvr/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/hongza/.conda/envs/dvr/lib/python3.8/site-packages/numpy/core/include -I/home/hongza/.conda/envs/dvr/include/python3.8 -c -c /home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c -o /home/hongza/lab/differentiable_volumetric_rendering/build/temp.linux-x86_64-3.8/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.o -std=c99 -O3 -fopenmp -DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=kdtree -D_GLIBCXX_USE_CXX11_ABI=0
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
cc1plus: warning: command line option ‘-std=c99’ is valid for C/ObjC but not for C++
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:49:3: error: conflicting declaration ‘typedef struct Node_float Node_float’
 } Node_float;
   ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: previous declaration as ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:70:3: error: conflicting declaration ‘typedef struct Node_double Node_double’
 } Node_double;
   ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: previous declaration as ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:95:40: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:97:45: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float_mask(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:119:42: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                          ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:121:47: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double_mask(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_float* construct_subtree_float(float*, uint32_t*, int8_t, uint32_t, uint32_t, uint32_t, float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:346:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_dim = -1;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:355:17: error: invalid use of incomplete type ‘struct Node_float’
             root->cut_dim = -1;
                 ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:358:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_val = cut_val;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:359:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_dim = cut_dim;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:366:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_bounds_lv = lv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:367:13: error: invalid use of incomplete type ‘struct Node_float’
         root->cut_bounds_hv = hv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:371:13: error: invalid use of incomplete type ‘struct Node_float’
         root->left_child = (struct Node_float *)construct_subtree_float(pa, pidx, no_dims, start_idx, n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:376:13: error: invalid use of incomplete type ‘struct Node_float’
         root->right_child = (struct Node_float *)construct_subtree_float(pa, pidx, no_dims, start_idx + n_lo, n - n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_float* create_node_float(uint32_t, uint32_t, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:433:58: error: invalid application of ‘sizeof’ to incomplete type ‘Node_float’
         new_node = (Node_float *)malloc(sizeof(Node_float) - 2 * sizeof(Node_float *));
                                                          ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:437:58: error: invalid application of ‘sizeof’ to incomplete type ‘Node_float’
         new_node = (Node_float *)malloc(sizeof(Node_float));
                                                          ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:439:13: error: invalid use of incomplete type ‘struct Node_float’
     new_node->n = n;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:440:13: error: invalid use of incomplete type ‘struct Node_float’
     new_node->start_idx = start_idx;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void delete_subtree_float(Node_float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:451:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:453:48: error: invalid use of incomplete type ‘struct Node_float’
         delete_subtree_float((Node_float *)root->left_child);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:454:48: error: invalid use of incomplete type ‘struct Node_float’
         delete_subtree_float((Node_float *)root->right_child);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void print_tree_float(Node_float*, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:482:48: error: invalid use of incomplete type ‘struct Node_float’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:482:63: error: invalid use of incomplete type ‘struct Node_float’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:483:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:484:44: error: invalid use of incomplete type ‘struct Node_float’
         print_tree_float((Node_float *)root->left_child, level + 1);
                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:485:13: error: invalid use of incomplete type ‘struct Node_float’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:486:44: error: invalid use of incomplete type ‘struct Node_float’
         print_tree_float((Node_float *)root->right_child, level + 1);
                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:569:40: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_float(float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:575:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:40: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:40: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:578:59: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                                           ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:580:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:582:32: error: ‘closest_idx’ was not declared in this scope
             insert_point_float(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:601:45: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_float_mask(float *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, float *restrict point_coord,
                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_float_mask(float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:607:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:13: error: ‘mask’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
             ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:18: error: ‘pidx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                  ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:18: note: suggested alternative: ‘pid_t’
         if (mask[pidx[start_idx + i]])
                  ^~~~
                  pid_t
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:23: error: ‘start_idx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:610:23: note: suggested alternative: ‘strtold’
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
                       strtold
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:37: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                     ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:40: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:40: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                        ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:615:59: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_float(&PA(start_idx + i, 0), point_coord, no_dims);
                                                           ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:617:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:619:32: error: ‘closest_idx’ was not declared in this scope
             insert_point_float(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_splitnode_float(Node_float*, float*, uint32_t*, int8_t, float*, float, uint32_t, float, float, uint8_t*, uint32_t*, float*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:652:15: error: invalid use of incomplete type ‘struct Node_float’
     dim = root->cut_dim;
               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:659:59: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:659:76: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:663:54: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:663:71: error: invalid use of incomplete type ‘struct Node_float’
             search_leaf_float(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                                       ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:669:41: error: invalid use of incomplete type ‘struct Node_float’
     new_offset = point_coord[dim] - root->cut_val;
                                         ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:678:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:684:24: error: invalid use of incomplete type ‘struct Node_float’
         box_diff = root->cut_bounds_lv - point_coord[dim];
                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:693:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:703:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:709:43: error: invalid use of incomplete type ‘struct Node_float’
         box_diff = point_coord[dim] - root->cut_bounds_hv;
                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:718:54: error: invalid use of incomplete type ‘struct Node_float’
             search_splitnode_float((Node_float *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:47:12: note: forward declaration of ‘struct Node_float’
     struct Node_float *left_child;
            ^~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_double* construct_subtree_double(double*, uint32_t*, int8_t, uint32_t, uint32_t, uint32_t, double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:990:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_dim = -1;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:999:17: error: invalid use of incomplete type ‘struct Node_double’
             root->cut_dim = -1;
                 ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1002:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_val = cut_val;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1003:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_dim = cut_dim;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1010:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_bounds_lv = lv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1011:13: error: invalid use of incomplete type ‘struct Node_double’
         root->cut_bounds_hv = hv;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1015:13: error: invalid use of incomplete type ‘struct Node_double’
         root->left_child = (struct Node_double *)construct_subtree_double(pa, pidx, no_dims, start_idx, n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1020:13: error: invalid use of incomplete type ‘struct Node_double’
         root->right_child = (struct Node_double *)construct_subtree_double(pa, pidx, no_dims, start_idx + n_lo, n - n_lo, bsp, bbox);
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘Node_double* create_node_double(uint32_t, uint32_t, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1077:60: error: invalid application of ‘sizeof’ to incomplete type ‘Node_double’
         new_node = (Node_double *)malloc(sizeof(Node_double) - 2 * sizeof(Node_double *));
                                                            ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1081:60: error: invalid application of ‘sizeof’ to incomplete type ‘Node_double’
         new_node = (Node_double *)malloc(sizeof(Node_double));
                                                            ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1083:13: error: invalid use of incomplete type ‘struct Node_double’
     new_node->n = n;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1084:13: error: invalid use of incomplete type ‘struct Node_double’
     new_node->start_idx = start_idx;
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void delete_subtree_double(Node_double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1095:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1097:50: error: invalid use of incomplete type ‘struct Node_double’
         delete_subtree_double((Node_double *)root->left_child);
                                                  ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1098:50: error: invalid use of incomplete type ‘struct Node_double’
         delete_subtree_double((Node_double *)root->right_child);
                                                  ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void print_tree_double(Node_double*, int)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1126:48: error: invalid use of incomplete type ‘struct Node_double’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1126:63: error: invalid use of incomplete type ‘struct Node_double’
     printf("(cut_val: %f, cut_dim: %i)\n", root->cut_val, root->cut_dim);
                                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1127:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1128:46: error: invalid use of incomplete type ‘struct Node_double’
         print_tree_double((Node_double *)root->left_child, level + 1);
                                              ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1129:13: error: invalid use of incomplete type ‘struct Node_double’
     if (root->cut_dim != -1)
             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1130:46: error: invalid use of incomplete type ‘struct Node_double’
         print_tree_double((Node_double *)root->right_child, level + 1);
                                              ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1213:42: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                          ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_double(double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1219:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:41: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:41: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1222:60: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                                            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1224:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1226:33: error: ‘closest_idx’ was not declared in this scope
             insert_point_double(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                 ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: At global scope:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1245:47: error: expected ‘,’ or ‘...’ before ‘pa’
 void search_leaf_double_mask(double *restrict pa, uint32_t *restrict pidx, int8_t no_dims, uint32_t start_idx, uint32_t n, double *restrict point_coord,
                                               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_leaf_double_mask(double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1251:21: error: ‘n’ was not declared in this scope
     for (i = 0; i < n; i++)
                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:13: error: ‘mask’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
             ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:18: error: ‘pidx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                  ^~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:18: note: suggested alternative: ‘pid_t’
         if (mask[pidx[start_idx + i]])
                  ^~~~
                  pid_t
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:23: error: ‘start_idx’ was not declared in this scope
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1254:23: note: suggested alternative: ‘strtold’
         if (mask[pidx[start_idx + i]])
                       ^~~~~~~~~
                       strtold
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:20: error: ‘pa’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                    ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:23: error: ‘no_dims’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                       ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: error: ‘pidx’ was not declared in this scope
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:33: note: suggested alternative: ‘pid_t’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                 ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:38: note: in expansion of macro ‘PA’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                      ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:41: error: ‘start_idx’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:41: note: suggested alternative: ‘strtold’
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                         ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:31:38: note: in definition of macro ‘PA’
 #define PA(i,d)   (pa[no_dims * pidx[i] + d])
                                      ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1259:60: error: ‘point_coord’ was not declared in this scope
         cur_dist = calc_dist_double(&PA(start_idx + i, 0), point_coord, no_dims);
                                                            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:24: error: ‘closest_dist’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:24: note: suggested alternative: ‘cur_dist’
         if (cur_dist < closest_dist[k - 1])
                        ^~~~~~~~~~~~
                        cur_dist
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1261:37: error: ‘k’ was not declared in this scope
         if (cur_dist < closest_dist[k - 1])
                                     ^
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1263:33: error: ‘closest_idx’ was not declared in this scope
             insert_point_double(closest_idx, closest_dist, pidx[start_idx + i], cur_dist, k);
                                 ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c: In function ‘void search_splitnode_double(Node_double*, double*, uint32_t*, int8_t, double*, double, uint32_t, double, double, uint8_t*, uint32_t*, double*)’:
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1296:15: error: invalid use of incomplete type ‘struct Node_double’
     dim = root->cut_dim;
               ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1303:60: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                            ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1303:77: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double_mask(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, mask, closest_idx, closest_dist);
                                                                             ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1307:55: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                       ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1307:72: error: invalid use of incomplete type ‘struct Node_double’
             search_leaf_double(pa, pidx, no_dims, root->start_idx, root->n, point_coord, k, closest_idx, closest_dist);
                                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1313:41: error: invalid use of incomplete type ‘struct Node_double’
     new_offset = point_coord[dim] - root->cut_val;
                                         ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1322:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1328:24: error: invalid use of incomplete type ‘struct Node_double’
         box_diff = root->cut_bounds_lv - point_coord[dim];
                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1337:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1347:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->right_child, pa, pidx, no_dims, point_coord, dist_right, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1353:43: error: invalid use of incomplete type ‘struct Node_double’
         box_diff = point_coord[dim] - root->cut_bounds_hv;
                                           ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:1362:56: error: invalid use of incomplete type ‘struct Node_double’
             search_splitnode_double((Node_double *)root->left_child, pa, pidx, no_dims, point_coord, dist_left, k, distance_upper_bound, eps_fac, mask, closest_idx, closest_dist);
                                                        ^~
/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/_kdtree_core.c:68:12: note: forward declaration of ‘struct Node_double’
     struct Node_double *left_child;
            ^~~~~~~~~~~
ninja: build stopped: subcommand failed.

I use conda and my envirnment is below.
OS: ubuntu 18.04
GPU: RTX2080
CUDA: 10.0

When I remove all "restrict" keyword in kd tree code.c, setup.py working well.
But I have new error in generate.py
Traceback (most recent call last):
  File "generate.py", line 11, in <module>
    from im2mesh import config
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/config.py", line 3, in <module>
    from im2mesh import dvr
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/dvr/__init__.py", line 1, in <module>
    from im2mesh.dvr import (
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/dvr/config.py", line 3, in <module>
    from im2mesh.encoder import encoder_dict
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/encoder/__init__.py", line 1, in <module>
    from im2mesh.encoder import conv
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/encoder/conv.py", line 3, in <module>
    from im2mesh.common import normalize_imagenet
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/common.py", line 2, in <module>
    from im2mesh.utils.libkdtree import KDTree
  File "/home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/__init__.py", line 1, in <module>
    from .pykdtree.kdtree import KDTree
ImportError: /home/hongza/lab/differentiable_volumetric_rendering/im2mesh/utils/libkdtree/pykdtree/kdtree.cpython-38-x86_64-linux-gnu.so: undefined symbol: construct_tree_double

And I also edit name of struct in _kdtree_core.c
{
...
} Node_float;

to
typedef struct Node_float
{
...
} Node_float;

Hi, have you in the meantime found a way to solve this issue?

Hi, have you in the meantime found a way to solve this issue?

No I don't yet

Pytorch tries to use c++ compiler to compile a c project.
an easy hack for this is to set your CXX to gcc
CC=gcc CXX=gcc python setup.py build_ext --inplace
of course, this may cause errors on other modules. try to compile them separately.
i.e. comment out pykdtree first and run
python setup.py build_ext --inplace,
then comment out all others except pykdtree and run again with
CC=gcc CXX=gcc python setup.py build_ext --inplace


Support command snippet and quick command

When some common commands are used, some command fragments can be cached and quickly invoked by shortcut keys or buttons. This function is similar to the Xshell's quick command set.

Lately sendInput was added to fix #3799. It should help you do what you want to some extent.

ok, got it, thx


OOP features like intelliJ Idea

When working with OOP intelliJ idea edges over vs code.
Mainly because of the reasons it is easier to create packages, classes, constructors.
Just make it more simple to build new classes and constructors so we don't have to do it manually or navigate

/needsMoreInfo
What language are you talking about?
If it's about Java you should make this request in Java's extension repo

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


howto convert data to .splat

When using official or unofficial implementations of GS, we oftentimes face different output formats (.ply/ .pth). How can we convert these to a compatible .splat format to be used with the splat viewer?
EDIT: I've just found @antimatter15 's comment on HF that the viewer includes loading/converting ply files by drag & drop (:tada:). Now the question remains for .pth, for instance what are covA & covB in regards to the below tensors ouputted by GS. I have read and understood https://aras-p.info/blog/2023/09/27/Making-Gaussian-Splats-more-smaller/ in order to implement the modifications for harmonics, but my .pth contains these parameters
pos Parameter containing:
tensor([[  5.0673,   1.7162,  -0.9826],
        [  0.1911,   1.3876,   0.9792],
        [ -9.8617,   3.5298,  -0.3479],
        ...,
        [  6.4754,  -3.8457,  10.0087],
        [ 16.5495,  -2.7652,   5.3437],
        [-23.1924,   5.1664, -22.5956]], requires_grad=True)
torch.Size([2343916, 3])

---

opa Parameter containing:
tensor([-1.5113,  0.0913, -1.3439,  ..., -1.3203, -0.5817,  1.5417],
       requires_grad=True)
torch.Size([2343916])

---

rgb Parameter containing:
tensor([[-2.4656, -2.3031, -4.8237],
        [ 2.6902,  2.3385,  2.1804],
        [-3.1468, -2.8764, -5.7947],
        ...,
        [-0.9470, -0.3932, -2.3646],
        [ 0.6052,  0.3275,  0.0064],
        [ 3.0144,  2.5221,  2.2051]], requires_grad=True)
torch.Size([2343916, 3])

---

quat Parameter containing:
tensor([[ 0.9926,  0.0380,  0.0197, -0.0843],
        [ 0.9234,  0.1039, -0.0125, -0.0669],
        [ 0.9791, -0.1035,  0.0311,  0.0491],
        ...,
        [ 0.7490,  0.0689,  0.3366,  0.1390],
        [ 0.9451, -0.0781, -0.0727, -0.0671],
        [ 0.9289, -0.0628,  0.1582,  0.0740]], requires_grad=True)
torch.Size([2343916, 4])

---

scale Parameter containing:
tensor([[ 0.0078,  0.0111,  0.0099],
        [ 0.0139,  0.0042,  0.0240],
        [ 0.0778, -0.0222,  0.0062],
        ...,
        [ 0.0230,  0.0305,  0.0215],
        [ 0.0384,  0.0154,  0.0258],
        [ 0.0132,  0.0224,  0.0190]], requires_grad=True)
torch.Size([2343916, 3])
``

Once you have dragged-dropped the .ply, is it possible to save the .splat again ?

Can we also do this conversion in Python or via command line utility? Thanks for great work by the way!

Does the conversion from. ply to. splat affect the quality of rendering？

I've just found @antimatter15 's comment on HF

Do you have a link to that?

I've added a convert.py which enables offline format conversions


Add XATA_DB_URL environment variable

The preferred way to bootstrap the SDK is via the workspace URL.

In the TS SDK we use XATA_DATABASE_URL too if it helps for reference.


Update community addressing items in the default.htm

App is Moving to Mature Support. No Action Required.


Fix dependency on batch size by making image_min a parameter

Using background values in #435 leads to performance degradation on the m2 cluster. Effectively, using the minimum value of the image is like a batch normalization. This is an alternative change that forces the user to pass the image min to the "forward()" method when in eval mode.

Closing in favor of the other approach in #435


Low-influence epoch beacon

Overview / Motivation (from paper)
The Spacemesh protocol uses three, slightly different, types of “random beacons”. Our requirements
from the beacons all share one important property: they don’t have to be provable. This means it’s
enough that honest parties agree on the beacon value; we don’t care if the adversary “lies” about it.
Provable beacons are much more difficult to achieve; this relaxation makes implementing the beacons
simpler and more robust.
low-influence epoch beacon:
The beacon for epoch z, is denoted echz (see section 3.4.1 for an explanation of epochs). All honest parties must agree on echz, must be both unpredictable and hard to influence: (1) before the start of epoch z, no adversary can predict echz with more than negligible probability. (2) For any (efficiently-computable) function f and any value y in its range, the probability that Pr[f(echz)] = y< 2^(−k)· Pr[f(U) = y]. That is, the adversary can only increase the probability of a given outcome that depends only on the beacon by a factor of 2−k. We will require k on the order of (TBD)
The Task
We can use a combination of the coin-flip and a modified version
of the tortoise protocol itself to implement this beacon. The basic idea is to sample identities in
epoch z − 1 using the VRF output (e.g., check if the VRF output passed a “difficulty threshold”),
such that on average 3k identities are sampled. The parties then XOR the VRF outputs from the
selected identities to compose the beacon value. Since the adversary can’t control the value of
the unique signature, only whether or not it appears, it has one bit of influence for every selected
ATX. If q < 1/3, this means on average it has less than k bits of influence. This isn’t quite
sufficient since honest parties might disagree on which ids were sampled (e.g., if the adversary
delays sending a “successful” identity proof). To overcome this, the parties use epoch z to reach
consensus about which ATXs actually passed the threshold, by voting for them using the tortoise
protocol’s self-healing mechanism (we use a modified version of the protocol that ignores the
votes from “heavy” layers, in order make grinding on the previous epoch’s beacon ineffective).

Implemented in https://github.com/spacemeshos/go-spacemesh/pull/2267


Safari BUG

I get the following error in Safari 10.1.1 on Mac Sierra:
Your browser does not have the necessary WebGL support to display this panorama.
Version: 2.3.2

After a bit of research i found out, that i had WebGL 2.0 activated as a feature in Safari. After deactivation it works. As this is just an experimental feature it should not worry anyone 👍


highlight.js dependency EOL

According to the depreciated message during installation, highlight.js@9 is at EOL. Example output from a recent npm install:
$ npm install
...
><EMAIL_ADDRESS>postinstall /home/brad/OpenSource/rescript-lang.org/node_modules/highlight.js
> node deprecated.js

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

  Verion 9 of Highlight.js has reached EOL.  It will no longer
  be supported or receive security updates in the future.
  Please upgrade to version 10 or encourage your indirect
  dependencies to do so.

  For more info:

  https://github.com/highlightjs/highlight.js/issues/2877
  https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Upgrade guide can be found here:
https://github.com/highlightjs/highlight.js/blob/master/VERSION_10_UPGRADE.md

I think that this might still be a legit issue, but I misunderstood that this project uses yarn and not npm. Got confused! Example might be a bit misleading.

I think that this might still be a legit issue, but I misunderstood that this project uses yarn and not npm. Got confused! Example might be a bit misleading.

wanna give it a shot and try to upgrade it? 😄
Our hljs usage is pretty self sustained (grammars are located in the plugins folder), so shouldn't be too hard to raise the dependency.

wanna give it a shot and try to upgrade it? 😄
Our hljs usage is pretty self sustained (grammars are located in the plugins folder), so shouldn't be too hard to raise the dependency.

Yeah, I can take this on when I have some time!

Yeah, I can take this on when I have some time!


[5.0] [Associated type inference] De-duplicate solutions as early as possible.

Associated type inference can end up visiting a large number of potential
solution states, which it ends up having to deduplicate. Perform the
de-duplication step earlier, before we do extensive checking of the
solution itself, to eliminate a bunch of extra work.
Addresses the compile-time regression in rdar://problem/37165620.

@swift-ci please smoke test and merge


AlwaysSucceeds example instantiates nami wallet twice

We should just be able to replace
https://github.com/Plutonomicon/cardano-transaction-lib/blob/c5883ebaf400556f9e5ac973d5a0b1c30011e082/examples/AlwaysSucceeds.purs#L34-L35
with
 cfg <-traceContractConfig

as traceContractConfig by default uses the Nami wallet

I think traceContractConfig should be removed. We can't provide meaningful defaults when choosing between apples and oranges, let's ask users to explicitly initialize wallets and services, even if it's done just by providing default configs.
The reason is: it's easier to change a config when it's explicitly passed. Otherwise one needs to copy-paste a huge amount of code to change one parameter.

Closed by #543


Agent not reading properties from elasticapm.properties

apm-agent-java is not reading properties from the file and I get the following log message
2018-04-16 07:19:05.387  WARN 65971 --- [ost-startStop-1] c.e.apm.impl.ElasticApmTracerBuilder     : Missing required value for configuration option service_name
Below is my elasticapm.properties
elastic.apm.service_name=Elastic-Apm-Demo
SpringBoot 2.0.1
JDK 1.8
APM-AGENT-JAVA 0.1.2

Gotcha! Thanks, I believe I misunderstood the docs and added prefix


Feature Enhancement: publish keyspace as part of plugin help

Make it possible for the sdk to communicate the keyspace in the help message.
Straw proposal:
override the cobra.command  default HelpFunction  with a custom function that appends a Keyspace usage string into the the help output.

@jspaleta can you provide an example use case for this suggestion?

Straw use case example (slack handler):
Sensu slack handler currently defines a keyspace but its only documented in the readme and not in usage information.
It would be very useful if there was a note in the usage message for all plugins that have a Keyspace defined, indicated what the keyspace is, and if possible which arguments have a keyspace path defined. Not all arguments are keyspaced.
Updated usage for the slack handler would look something like this:
``The Sensu Go Slack handler for notifying a channel
Usage:
sensu-slack-handler [flags]
sensu-slack-handler [command]
Available Commands:
help        Help about any command
version     Print the version number of this plugin
Flags:
-c, --channel string                The channel to post messages to (default "#general")
-t, --description-template string   The Slack notification output template, in Golang text/template format (default "{{ .Check.Output }}")
-h, --help                          help for sensu-slack-handler
-i, --icon-url string               A URL to an image to use as the user avatar (default "https://www.sensu.io/img/sensu-logo.png")
-u, --username string               The username that messages will be sent as (default "sensu")
-w, --webhook-url string            The webhook url to send messages to
Annotation Keyspace:  "sensu.io/plugins/slack/config/"
Keyspace active for the following parameters:
webHookURL,
channel,
username,
iconURL,
descriptionTemplate
Use "sensu-slack-handler [command] --help" for more information about a command.
`


Revert "[Security] Move ownership of tsi_ssl_client_handshaker_factory to grpc_ssl_credentials, version 2."

Reverts grpc/grpc#34408

Related issue: #34672 (internal b/305226499)


Installing trough cocoapods is not working

I'm trying to install ProcedureKit to a new project via cocoapods but there is error:
Analyzing dependencies
Fetching podspec for ProcedureKit from submodules/ProcedureKit
[!] No podspec found for ProcedureKit in submodules/ProcedureKit
Here is my podfile:
target 'Code9' do
platform :ios, '10'
use_frameworks!
pod 'ProcedureKit/All', :path => 'submodules/ProcedureKit'
pod 'ProcedureKit/Mobile', :path => 'submodules/ProcedureKit'
end

Hi @myexec
Did you update/checkout or otherwise prepare the source in submodules/ProcedureKit e.g.

$ cd submodules/ProcedureKit
$ git fetch origin
$ git checkout 4.4.0
HEAD is now at 30d6781... 4.4.0 (#805)
$ cd ../..
$ bundle exec pod update
Update all pods
Updating local specs repositories
Analyzing dependencies
Fetching podspec for ProcedureKit from submodules/ProcedureKit
Fetching podspec for TestingProcedureKit from submodules/ProcedureKit
Downloading dependencies
Installing ProcedureKit 4.4.0 (was 4.0.0)
Installing TestingProcedureKit 4.4.0 (was 4.0.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 3 dependencies from the Podfile and 2 total pods installed.
$

Closing as no response.


[Bug] test case TC-OO-2.4. no close frame received or sent

Describe the bug
Running test TC-OO-2.3 and TC-OO-2.4 (Semi-automated) with On-Off Cluster Test Plan. When executing TC-OO-2.4 Step 1 Commission DUT to TH, It throw an exception Test Step Error: Error occurred during execution of test case TC-OO-2.4. no close frame received or sent

Steps to reproduce the behavior

Upload PICS file
Only Select Test case TC-OO-2.3 and TC-OO-2.4
Run TH

Expected behavior
TC-OO-2.4 test case will pass
Log files
Lighting_23_24_2024_06_17_07_35_23.log
PICS file
On-Off Cluster Test Plan-Server.xml.txt
Screenshots

Environment
TH Version: 2.10+spring2024
Additional Information
No response

@xiaojianjian92 is it possible to attach the DUT logs?


Updating code to Promises to comply with 4.0

Hello,
I am a bit new to Promises and I am struggling to update my code for the future version of alexa-app. Here is an intent I would like to update for example. I am currently use alexa-app 3.2.0. Could you share your input to help me on this? Thanks a lot!
app.launch(function(request, response) {
	var accessTokenReceived = request.sessionDetails.accessToken;
	async.waterfall([
		// STEP 1: check the accessToken
		function(callback) {
			if (accessTokenReceived === undefined) {
				callback('no_access_token');
			}else{
				user.getUserFromAccessTokenPromise(accessTokenReceived).then(function(user) {
					callback(null,user);
				}, function(err){
					var obj = {};
					callback("not_good_access_token");
				});
			}
		},
		//STEP 2 : check stuff
		function(user,  callback) {
			stuff.getStuffFromUserPromise(user).then(function(stuff){
				callback(null, stuff, user, userId);
			},function(err){
				callback("no_stuff");
			});
		},
		function(stuff, user, userId, callback) {
			helper.getStaffUserIdPromise(userId).then(function(staff){
				if (numberOfStaff !== 0) {
					response.say(config.dialog.onLaunchIntent.case13.say);
					response.reprompt(config.dialog.onLaunchIntent.case13.reprompt);
					response.card(config.dialog.onLaunchIntent.case13.cardTitle, config.dialog.onLaunchIntent.case12.card);
					response.shouldEndSession(config.dialog.onLaunchIntent.case13.end);
					response.send();
					callback(null, stuff, user, userId, staff);
				} else {
					callback("no_staff");
				}
			}, function(err){
				callback("error_retrieving_staff");
			});
		},
	], function (err, stuff, user, userId, staff) {
		if(err){
			switch (err) {
				case "no_access_token":
				response.say(config.dialog.onLaunchIntent.case10.say);
				response.reprompt(config.dialog.onLaunchIntent.case10.reprompt);
				response.linkAccount();
				response.shouldEndSession(config.dialog.onLaunchIntent.end);
				response.send();
				break;
				case "not_good_access_token":
				response.say(config.dialog.onLaunchIntent.case10.say);
				response.reprompt(config.dialog.onLaunchIntent.case10.reprompt);
				response.linkAccount();
				response.shouldEndSession(config.dialog.onLaunchIntent.case10.end);
				response.send();
				break;
				case "no_stuff":
				response.say(config.dialog.onLaunchIntent.case11.say);
				response.reprompt(config.dialog.onLaunchIntent.case11.reprompt);
				response.card(config.dialog.onLaunchIntent.case11.cardTitle, config.dialog.onLaunchIntent.case11.card);
				response.shouldEndSession(config.dialog.onLaunchIntent.case11.end);
				response.send();
				break;
				case "no_staff":
				response.say(config.dialog.onLaunchIntent.case12.say);
				response.reprompt(config.dialog.onLaunchIntent.case12.reprompt);
				response.card(config.dialog.onLaunchIntent.case12.cardTitle, config.dialog.onLaunchIntent.case12.card);
				response.shouldEndSession(config.dialog.onLaunchIntent.case12.end);
				response.send();
				break;
				default:
				response.say(config.dialog.onLaunchIntent.case6.say);
				response.reprompt(config.dialog.onLaunchIntent.case6.reprompt);
				response.card(config.dialog.onLaunchIntent.case6.cardTitle, config.dialog.onLaunchIntent.case6.card);
				response.shouldEndSession(config.dialog.onLaunchIntent.case6.end);
				response.send();
			}
		}
	});
	return false;
});

Do you have the project up? With tests?

Hey Daniel,
I can share the project with you.
Here is what I ended up doing. I don't if it the cleanest way to do.
`app.launch((request, response) => {
return launchIntent(request).then((dialog) => {
response.say(dialog.say)
response.reprompt(dialog.reprompt)
response.card(dialog.cardTitle, dialog.card);
response.shouldEndSession(dialog.end);
response.send();
}).catch((error) => {
console.log("error", error)
})
})
var launchIntent = (request) => {
return new Promise((resolve,reject) => {
var accessTokenReceived = request.sessionDetails.accessToken;
if (accessTokenReceived === null) {
resolve(config.dialog.onLaunchIntent.case13)
} else {
return user.getUserFromAccessTokenPromise(accessTokenReceived).then(function(user) {
if (!user) {
resolve(config.dialog.onLaunchIntent.case10.xp1.var1)
} else {
var userId = user.id;
return contactList.getStuffFromUserIdPromise(userId).then(function(Stuff){
if (!Stuff){
resolve(config.dialog.onLaunchIntent.case11.xp.var1)
} else {
return helper.getStaffFromUserIdPromise(userId).then(function(Staff){
if (Staff === 0){
resolve(config.dialog.onLaunchIntent.case12)
} else {
resolve(config.dialog.onLaunchIntent.case13)
}
})
}
})
}
})
}
})
}`

I think that you may want to stick with using 3.2 as updating your current style will be quite a bit of refactoring. There are some issues in your code (probably just a result of copy/pasting) so this won't work out of the box, but it is a close analog. The point of promises is to try to keep things to a single chain.
Ideally you would only need one catch and you could derive the actual error from the caught value, i.e. the error you get from getUserFromAccessTokenPromise or getStuffFromUserPromise would be different and you could look at that value in the error in the final catch rather than catching each individual error returned by that promise and then throwing a separate error. If these errors exist throughout your app, consider using app.error to handle them as well as it is also part of the app's promise chain.
Note that using response.send() is not needed since it gets called automatically when the promise chain resolves.
Example that should work with your existing code: https://gist.github.com/ajcrites/3dbb77998f33ef9f0700bd4f5f748b07
Ideal example (your promise functions throw corresponding error messages): https://gist.github.com/ajcrites/323dc219b588ca7f76c24afe95d03078

@QuentinDela if this helps can we close this issue? Would you recommend any more updates to the documentation to make this clearer?

Hey @ajcrites
Thanks a lot for your help, your answer was awesome.
If anyone is using your template, there is a token to remove at the end of the first line.

Do you know what would be the way to build tests for alexa-app intents?

Most of our tests look like this:
chai = require('chai');
expect = chai.expect;
chai.use(require('chai-string'));
chai.use(require('chai-http'));

var server = require('../server');

describe('artsy alexa', function() {
    it('tells me about Norman Rockwell', function(done) {
        var aboutIntentRequest = require('./AboutIntentRequest.json');
        chai.request(server)
            .post('/alexa/artsy')
            .send(aboutIntentRequest)
            .end(function(err, res) {
                expect(res.status).to.equal(200);
                var data = JSON.parse(res.text);
                expect(data.response.outputSpeech.type).to.equal('SSML')
                var ssml = data.response.outputSpeech.ssml;
              expect(ssml).to.startWith('<speak>American artist Norman Rockwell ');
              done();
            });
    });
});


Gradient Doc Changed for v2

Fixes #35628.
I have raised PR #36206 which has modified gradients() function but at that time I forgot to modify gradients_v2() which is the latest function used in 2.1. So, this PR modifies gradient_v2().
@alextp, Please review this PR too.

Changes have been merged into master by commit 97b900a. So closing the PR.


Added feature to package individual extension

Looks good.
BTW, I hope you are tracking build/test for individual extension as well.