Crash in BSG_KSCrashSentry_CPPException

Describe the bug
App crashes in BSG_KSCrashSentry_CPPException's CPPExceptionTerminate() function. Several lines of the stack trace are also missing.
Steps to reproduce
Unclear, but including stack trace below
Environment

Bugsnag version: 6.1.3
CocoaPods version: 1.9.3
Carthage version (if any): n/a
iOS/tvOS/macOS version(s): 14.0.0
Simulator or physical device: iPhone 6s Plus
XCode version: 11.2.1
Swift version (if appli cable): 5.1

Stack trace

Stack trace:
Crashed: com.apple.main-thread
0  ???                            0x1862f694c (Missing)
1  ???                            0x1862099e8 (Missing)
2  ???                            0x18614a984 (Missing)
3  libc++abi.dylib                0x1862c9cc8 <redacted> + 126
4  libc++abi.dylib                0x1862bbca0 <redacted> + 294
5  libobjc.A.dylib                0x18621651c <redacted> + 124
6  MyApp                           0x101682194 CLSTerminateHandler() +<PHONE_NUMBER>
7  MyApp                           0x1013e14c4 CPPExceptionTerminate() + 191 (BSG_KSCrashSentry_CPPException.mm:191)
8  libc++abi.dylib                0x1862c9154 <redacted> + 16
9  libc++abi.dylib                0x1862c90ec std::terminate() + 44
10 libobjc.A.dylib                0x1862164a0 objc_terminate + 10
11 ???                            0x1861b36ec (Missing)
12 ???                            0x186159854 (Missing)
13 ???                            0x18be8cfac (Missing)
14 ???                            0x18be8cc74 (Missing)
15 ???                            0x18be8d148 (Missing)
16 CoreFoundation                 0x1864737ec <redacted> + 24
17 CoreFoundation                 0x186473734 <redacted> + 172
18 CoreFoundation                 0x186472d90 <redacted> + 228
19 CoreFoundation                 0x18646d750 <redacted> + 772
20 CoreFoundation                 0x18646d030 CFRunLoopRunSpecific + 540
21 ???                            0x191ebe598 (Missing)
22 ???                            0x18ab25570 (Missing)
23 ???                            0x18ab2b330 (Missing)
24 MyApp                           0x100b0eddc main + 63 (AppDelegate.swift:63)
25 ???                            0x1863019d0 (Missing)

Hi @sethfri
The provided stack trace does not show there is any issue in Bugsnag.
Stack frames 9 - 25 show that something (the missing stack frames hide the reason why) in the app has caused
objc_terminate to be called.
/***********************************************************************
* objc_terminate
* Calls std::terminate for clients who don't link to C++ themselves.
* Called by the compiler if an exception is thrown
* from a context where exceptions may not be thrown.
**********************************************************************/
void objc_terminate(void)
{
    std::terminate();
}

This has been called because the app cannot continue - i.e. the app has crashed due to an unhandled exception.
Bugsnag's C++ termination handler CPPExceptionTerminate() has been invoked, finished its work, and then called CLSTerminateHandler() which is Crashlytics's C++ termination handler.
Crashlytics' handler appears to be making some Objective-C calls to record information about the NSException at the point the stack trace was captured, so this may be where the issue lies.
With fewer missing or redacted stack frames it may be possible to determine more specifically why the app has crashed.
Note that if Crashlytics were not installed alongside Bugsnag, BSG_KSCrashSentry_CPPException would not be in the stack trace as execution would have returned to std::terminate.

Thanks @nickdowell. Is it expected to have stack frames missing like this?

It does look like this customer was running iOS 14 beta 1 (build 18A5301v). Thanks for that tip! Since this has only affected 1 customer 1 time so far, I'm fine closing this down for now and reopening if we see this again on a non-beta iOS.


Launch on Firefox 59 on macOS of adafruit target gives these warnings/failures

The Application Cache API (AppCache) is deprecated and will be removed at a future date.  Please consider using ServiceWorker for offline support.
makecode.adafruit.com
Browser: firefox 59.0 on mac
pxtlib.js:1535:13
HTTP “Content-Type” of “application/octet-stream” is not supported. Load of media resource https://pxt.azureedge.net/commit/3ba2527577a84249ec0bd4e73336b075e1cdd170/blockly/media/click.mp3 failed.
makecode.adafruit.com
HTTP “Content-Type” of “application/octet-stream” is not supported. Load of media resource https://pxt.azureedge.net/commit/3ba2527577a84249ec0bd4e73336b075e1cdd170/blockly/media/disconnect.wav failed.
makecode.adafruit.com
HTTP “Content-Type” of “application/octet-stream” is not supported. Load of media resource https://pxt.azureedge.net/commit/3ba2527577a84249ec0bd4e73336b075e1cdd170/blockly/media/delete.mp3 failed.

Did not occur on Chrome 66.

Yeah we'll have to move to service workers some point soon.

Feel free to close in favour of https://github.com/Microsoft/pxt/issues/2824

Closing in favor of https://github.com/Microsoft/pxt/issues/2824


[Feature Request] for Home Assistant Connectivity with BUD-E

Objective: Integrate BUD-E with Home Assistant to enhance smart home automation through advanced AI-driven voice interaction.
Description: This feature request proposes the development of an add-on or plugin that enables BUD-E, an open AI voice assistant, to control and interact with Home Assistant's ecosystem. The integration aims to leverage BUD-E's conversational quality, naturalness, and empathy to provide users with a more intuitive and personalized smart home experience.
Key Features:
Voice Control: Allow users to use natural language voice commands through BUD-E to manage Home Assistant entities like lights, thermostats, and security systems.
Contextual Awareness: Utilize BUD-E's ability to understand complex contexts and previous interactions to offer personalized automation suggestions and actions.
Privacy and Local Processing: Ensure that the integration prioritizes user privacy by processing voice commands locally, in alignment with both BUD-E's and Home Assistant's commitment to data privacy.
Easy Setup and Configuration: Design the integration to be user-friendly, with simple setup procedures for connecting BUD-E with Home Assistant, including a clear interface for linking devices and entities.
Benefits:
Enhanced user experience with more natural and intuitive voice interactions.
Increased personalization and efficiency in smart home automation.
Strengthened privacy through local processing of voice commands.
Request: We invite the development community and Home Assistant contributors to collaborate on this project to bring seamless AI-driven voice control to the Home Assistant platform, enriching the smart home experience for users worldwide.

Hey @Tom-Neverwinter, thanks for your request! We also discussed this topic and it would be super cool to run BUD-E on home assistants or any other portable devices. As you can see in our roadmap we have quite a lot plans for the project and I currently do not have the capacity to work on home assistant connectivity. However if you want to implement something like this, feel free to open a pull request.


media.likes only returns 4 users

A Media object's likes attribute gives me a list of Users that is always length 4 on pictures where the returned like_count is much more
>>> api = InstagramAPI(access_token=access_token)
>>> recent_media, next_ = api.user_recent_media()
>>> media = [p for p in recent_media]
>>> while next_:
        m_media, next_ = api.user_recent_media(with_next_url=next_)
        media.extend(p for p in m_media)
>>> [len(p.likes) for p in media]
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
>>> [p.like_count for p in media]
[9, 11, 12, 11, 10, 11, 8, 7, 15, 12, 8, 13, 6, 11, 16, 12, 11, 4, 10, 20, 10, 7, 19, 11, 15, 25, 6, 11, 11, 26, 13, 17, 12, 21, 15, 7, 28, 29, 12, 10, 19, 20, 18, 7, 11, 22, 19, 23, 7, 11, 10, 10, 24, 20, 19, 14, 11, 11, 19, 25, 21, 29, 19, 26, 31, 36, 18, 36, 17, 22, 12, 15, 16, 13, 18, 8, 29, 29, 31, 13, 43]

See some discussion in #121.
I think this should be documented better, but is a valid API design decision. likes are a separate resource from media and you wouldn't necessarily want to nest all of the likes to be returned with every single media that you request. Returning 1000s of likes for each of the media objects returned would be a ton of extraneous payload if the caller doesn't plan to actually use the likes information. Or imagine if you want to page the likes - having a separate endpoint makes sense so you can return 10, 25, or 100 likes at once instead of 300,000.
That said, the decision to have four likes within the payload of the media response is probably motivated by Instagram's own way of displaying likes, which is to show up to 4 people who have liked the post:

Good points all around -- thanks, David.
On Thu, Mar 5, 2015, 2:23 PM David Tran<EMAIL_ADDRESS>wrote:

See some discussion in #121
https://github.com/Instagram/python-instagram/issues/121.
I think this should be documented better, but is a valid API design
decision. likes are a separate resource from media and you wouldn't
necessarily want to nest all of the likes to be returned with every
single media that you request. Returning 1000s of likes for each of the
media objects returned would be a ton of extraneous payload if the caller
doesn't plan to actually use the likes information. Or imagine if you
want to page the likes - having a separate endpoint makes sense so you
can return 10, 25, or 100 likes at once instead of 300,000.
That said, the decision to have four likes within the payload of the media
response is probably motivated by Instagram's own way of displaying likes,
which is to show up to 4 people who have liked the post:
[image: screenshot 2015-03-05 11 18 47]
https://cloud.githubusercontent.com/assets/177059/6512530/88ae303e-c329-11e4-9374-ad63a06bcd82.png
[image: screenshot 2015-03-05 11 18 03]
https://cloud.githubusercontent.com/assets/177059/6512529/88ac8040-c329-11e4-98f2-9bd9306499ea.png
—
Reply to this email directly or view it on GitHub
https://github.com/Instagram/python-instagram/issues/126#issuecomment-77432458
.

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

it'd be great to see this in the docs somewhere


Add lumo in the Build systems section

Hello folks,
The Clojure community as you probably well know is very keen on the Google Clojure Compiler on the JVM. Some folks like @anmonteiro and myself are very keen on this port because it allows us to work with no JVM whatsoever.
Antonio created lumo for exactly this purpose and I was wondering whether we can add it to the Build system section here in the README.
This might be a little bit of a stretch so in case it is not appropriate we can list it in a transpilers section or something.
In any case, thank you for working on it!

If you want to PR a change to the docs at https://github.com/google/closure-compiler-npm, I'll review it and get it merged.
This repo is being sunset.


Client Allocation Request for: Crypto Times

Client Allocation Questions
Core Information

Name: Crypto Times
Website / Social Media: https://crypto-times.jp/
Region: Asia excl. Greater China
DataCap Requested: 15TiB
Addresses to be Notarized: f1kuludsgydjiy52f5pdemoajdrhqs4pztwbkq7wi
Notary Requested: ozhtdong

@cryptotimes-japan Please subscribe to notifications for this Issue to be aware of updates. Notaries may request additional information on the Issue.

Please apply to your local notary. Thanks.


Ms az

Azure documentation issue guidance
Thanks for opening an issue in the Azure technical documentation repository.
We use GitHub issues as the primary channel for customer and community feedback about the Azure documentation.
Creating an issue
We prefer that you create documentation feedback issues using the Feedback link on the published article - the feedback control on the doc page creates an issue that contains all the article details so you can focus on the feedback part.
You can also create a feedback issue here in the repo. If you do this, please make sure your issue lists:

[ ] The relevant Azure service or technology.
[ ] A link to the published documentation article that you have feedback about.
[ ] Clear, specific feedback that the author can act on.

Pull requests and article contributions
If you know the change that is needed in an article, we encourage you to submit the changes directly using a pull request. If the change is large, or if you want to contribute an entire article, follow these guidelines:

[ ] Don't surprise us with a big pull request or a pull request with a new article! Submit an issue that describes the details of the proposed large change or new article.
[ ] Include the service or technology area.

We'll route the issue to the appropriate content team for review and discussion.
Tech support and product feedback
If you would like to contact Microsoft about other things, such as product feedback or tech support, please review these guidelines:

If you need technical support using Azure, the paid and free support options are described here: https://azure.microsoft.com/support/options/.

Each article in the Azure technical documentation contains a product feedback button - it's best to submit product feedback directly from a relevant article. Otherwise, you can submit product feedback for most Azure products in the following product feedback forum: https://feedback.azure.com/forums/34192--general-feedback.

@usahh It doesn't look like you have a document question, so I'm going to close this.  If there is a document question you need answered, please open a ticket and we'll get back to you promptly.


Build with tensorflow_cc:  tf_trajectories_example, vpnet_test, and alpha_zero_example_test fail

Ubuntu 18.04
cmake version 3.18.4
clang version 10.0.0-4ubuntu1~18.04.2
bazel 2.0.0
Python 3.8.8
Build succeeds when following standard installation instructions (i.e. BUILD_WITH_TENSORFLOW_CC=OFF). Following instructions from alphazero.md and https://github.com/deepmind/open_spiel/issues/172 I installed @mrdaliri 's open_spiel branch of tensorflow_cc and followed installation instructions. Tensorflow_cc built/installed fine, as did the usage examples. After running: BUILD_WITH_TENSORFLOW_CC=ON ./install.sh and CXX=/usr/bin/clang++ BUILD_WITH_TENSORFLOW_CC=ON ./open_spiel/scripts/build_and_run_tests.shc, I noticed that tf_trajectories_example, vpnet_test, and alpha_zero_example_test were each failing with the same error:
tf_trajectories_example:

1/189 Test  #94: tf_trajectories_example ...........................Child aborted***Exception:   0.75 sec
2021-03-17 23:21:02.238356: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-17 23:21:02.357149: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-17 23:21:02.357492: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x24a7d20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-17 23:21:02.357505: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2021-03-17 23:21:02.499277: E tensorflow/core/framework/op_segment.cc:54] Create kernel failed: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
2021-03-17 23:21:02.508800: F /.../open_spiel/open_spiel/contrib/tf_trajectories.cc:114] Non-OK-status: tf_session_->Run({}, {}, {"init_all_vars_op"}, nullptr) status: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[beta1_power]]

vpnet_test:

2021-03-17 23:21:12.672911: E tensorflow/core/framework/op_segment.cc:54] Create kernel failed: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
2021-03-17 23:21:12.697392: F /.../open_spiel/open_spiel/algorithms/alpha_zero/vpnet.cc:92] Non-OK-status: tf_session_->Run({}, {}, {"init_all_vars_op"}, nullptr) status: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[beta1_power]]

alpha_zero_example_test:

2021-03-17 23:21:45.369748: E tensorflow/core/framework/op_segment.cc:54] Create kernel failed: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
2021-03-17 23:21:45.371901: F /.../open_spiel/open_spiel/algorithms/alpha_zero/vpnet.cc:92] Non-OK-status: tf_session_->Run({}, {}, {"init_all_vars_op"}, nullptr) status: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[beta1_power]]

After searching around a little bit, it looks like this is usually caused by a version mismatch between tf and the tf model server, but I haven't seen any dependency on tf model server for open_spiel or tensorflow_cc. I have a feeling there is a simple/key piece I am missing here. Have you seen this error before?

Tagging @mrdaliri, any ideas? Have you run into this?

Small update: I copied the same minimal usage examples from the tensorflow_cc repo to see if building/running within open_spiel would expose any linking (or other) errors. Up running, I got the following warning from cmake:

-- Configuring done
CMake Warning (dev) at CMakeLists.txt:4 (add_executable):
Policy CMP0003 should be set before this line.  Add code such as
if(COMMAND cmake_policy)
  cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)

as early as possible but after the most recent call to
cmake_minimum_required or cmake_policy(VERSION).  This warning appears
because target "example" links to some libraries for which the linker must
search:
dl, pthread

and other libraries with known full path:
/usr/local/lib/libtensorflow_cc.so.2

CMake is adding directories in the second list to the linker search path in
case they are needed to find libraries from the first list (for backwards
compatibility with CMake 2.4).  Set policy CMP0003 to OLD or NEW to enable
or disable this behavior explicitly.  Run "cmake --help-policy CMP0003" for
more information.
This warning is for project developers.  Use -Wno-dev to suppress it.

but the example ran as expected afterwards:

2021-03-23 00:12:59.925127: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-23 00:12:59.951152: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-23 00:12:59.951499: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55aaccca5d20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-23 00:12:59.951528: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
Session successfully created.

After running this example, I got new errors from the 2 of the tests that failed above:
./vpnet_test

TestModelCreation: mlp
WARNING:tensorflow:From /home/niko/anaconda3/envs/spiel/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
W0323 00:14:54.595646<PHONE_NUMBER>88864 deprecation.py:506] From /home/niko/anaconda3/envs/spiel/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *constraint arguments to layers.
2021-03-23 00:14:54.826483: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-03-23 00:14:54.826519: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2021-03-23 00:14:54.826554: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (b-612): /proc/driver/nvidia/version does not exist
2021-03-23 00:14:54.826739: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-23 00:14:54.851159: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-23 00:14:54.851730: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f1850000b20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-23 00:14:54.851766: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
Game: tic_tac_toe()
Model type: mlp(32, 2)
Model size: 4394 variables
Variables:
torso_0_dense/kernel:0: (27, 32)
torso_0_dense/bias:0: (32,)
torso_1_dense/kernel:0: (32, 32)
torso_1_dense/bias:0: (32,)
policy_dense/kernel:0: (32, 32)
policy_dense/bias:0: (32,)
policy/kernel:0: (32, 9)
policy/bias:0: (9,)
value_dense/kernel:0: (32, 32)
value_dense/bias:0: (32,)
value/kernel:0: (32, 1)
value/bias:0: (1,)
2021-03-23 00:14:55.004728: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-23 00:14:55.017015: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-23 00:14:55.017309: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x2cdfd20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-23 00:14:55.017322: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2021-03-23 00:14:55.062097: F /usr/local/include/tensorflow/bazel-bin/tensorflow/include/tensorflow/core/platform/refcount.h:90] Check failed: ref.load() == 0 (1 vs. 0)
Aborted (core dumped)

and ./alpha_zero_example

Logging directory: /tmp/az
Overwriting existing model: /tmp/az/vpnet.pb
WARNING:tensorflow:From /home/niko/anaconda3/envs/spiel/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
W0323 00:16:12.188916<PHONE_NUMBER>64704 deprecation.py:506] From /home/niko/anaconda3/envs/spiel/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
2021-03-23 00:16:12.209343: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-03-23 00:16:12.209378: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2021-03-23 00:16:12.209402: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (b-612): /proc/driver/nvidia/version does not exist
2021-03-23 00:16:15.225238: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-23 00:16:15.247157: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-23 00:16:15.247675: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7f450c000b20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-23 00:16:15.247697: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
Playing game: tic_tac_toe
2021-03-23 00:16:16.168392: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2021-03-23 00:16:16.180859: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency:<PHONE_NUMBER> Hz
2021-03-23 00:16:16.181090: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x38a3d20 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-03-23 00:16:16.181101: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
2021-03-23 00:16:17.362159: F tensorflow/core/framework/tensor.cc:672] Check failed: IsAligned() Aligned and single element
2021-03-23 00:16:17.362160: F tensorflow/core/framework/tensor.cc:672] Check failed: IsAligned() Aligned and single element
2021-03-23 00:16:17.362194: F tensorflow/core/framework/tensor.cc:672] Check failed: IsAligned() Aligned and single element
Aborted (core dumped)

tf_trajectories_example still fails as above and all three fail as above when rebuilding, until I run the example again. These appear to be the same errors that popped up here: https://github.com/deepmind/open_spiel/issues/172#issuecomment-653582904. I thought the BUILD_WITH_TENSORFLOW_CC PR was the fix for this (see here: https://github.com/deepmind/open_spiel/pull/307#issue-454716712), but it looks like the same error is still happening. Is there a step not mentioned in the linked issue/pr that I could be missing?

Hi @ngrupen, did you build with the protobufs tag in this comment: https://github.com/deepmind/open_spiel/issues/172#issuecomment-653705369
It seems based on some discussion that you might have to remove the system's protobufs if you have them installed.

Yes I followed the steps listed in https://github.com/deepmind/open_spiel/issues/172#issuecomment-653705369 to install tensorflow_cc. After rebuilding both tensorflow_cc and open_spiel I am still seeing the errors from the first comment. I also confirmed that system protobufs were uninstalled -- the only one on my machine is the version that is installed with requirements.txt. I also tried installing outside of anaconda to see if the extra wrapper was causing the issue, but got the same errors.
In addition to the errors from the first message, I am seeing errors anytime tensorflow tries to write a graph. For example, here is the output of running python3 open_spiel/contrib/python/export_graph.py:
2021-03-23 12:58:47.034648: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-03-23 12:58:47.034690: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2021-03-23 12:58:47.920939: I tensorflow/compiler/jit/xla_cpu_device.cc:41] Not creating XLA devices, tf_xla_enable_xla_devices not set
2021-03-23 12:58:47.921052: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory
2021-03-23 12:58:47.921061: W tensorflow/stream_executor/cuda/cuda_driver.cc:326] failed call to cuInit: UNKNOWN ERROR (303)
2021-03-23 12:58:47.921074: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (b-612): /proc/driver/nvidia/version does not exist
2021-03-23 12:58:47.921277: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-03-23 12:58:47.921859: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set
/home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/keras/legacy_tf_layers/core.py:171: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.
  warnings.warn('`tf.layers.dense` is deprecated and '
/home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1719: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.
  warnings.warn('`layer.apply` is deprecated and '
WARNING:tensorflow:From open_spiel/contrib/python/export_graph.py:95: all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Please use tf.global_variables instead.
W0323 12:58:48.040002<PHONE_NUMBER>55808 deprecation.py:339] From open_spiel/contrib/python/export_graph.py:95: all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Please use tf.global_variables instead.
WARNING:tensorflow:From /home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/util/tf_should_use.py:247: initialize_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.variables_initializer` instead.
W0323 12:58:48.040196<PHONE_NUMBER>55808 deprecation.py:339] From /home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/util/tf_should_use.py:247: initialize_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.variables_initializer` instead.
Writing file: /tmp/graph.pb
ERROR:tensorflow:==================================
Object was never used (type <class 'tensorflow.python.framework.ops.Operation'>):
<tf.Operation 'init_all_vars_op' type=NoOp>
If you want to mark it as used call its "mark_used()" method.
It was originally created here:
  File "open_spiel/contrib/python/export_graph.py", line 103, in <module>
    app.run(main)  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/absl/app.py", line 322, in run
    raise  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/absl/app.py", line 251, in _run_main
    sys.exit(main(argv))  File "open_spiel/contrib/python/export_graph.py", line 99, in main
    sess.graph_def, FLAGS.dir, FLAGS.filename, as_text=False)  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/util/tf_should_use.py", line 249, in wrapped
    error_in_function=error_in_function)
==================================
E0323 12:58:48.071783<PHONE_NUMBER>55808 tf_should_use.py:90] ==================================
Object was never used (type <class 'tensorflow.python.framework.ops.Operation'>):
<tf.Operation 'init_all_vars_op' type=NoOp>
If you want to mark it as used call its "mark_used()" method.
It was originally created here:
  File "open_spiel/contrib/python/export_graph.py", line 103, in <module>
    app.run(main)  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/absl/app.py", line 322, in run
    raise  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/absl/app.py", line 251, in _run_main
    sys.exit(main(argv))  File "open_spiel/contrib/python/export_graph.py", line 99, in main
    sess.graph_def, FLAGS.dir, FLAGS.filename, as_text=False)  File "/home/niko/Documents/playground/venv/lib/python3.6/site-packages/tensorflow/python/util/tf_should_use.py", line 249, in wrapped
    error_in_function=error_in_function)
==================================

2021-03-23 12:58:47.921052: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory

This is the problem. It is somehow unable to find the CUDA library at runtime. I've seen this before. One super easy thing to try is find where that file lives (let's call it /path/to/dir) and then add it to LD_LIBRARY_PATH. So:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/dir"
python3 open_spiel/contrib/python/export_graph.py

Also can you try running python3 outside of OpenSpiel and just importing tensorflow? Does it work?

Since you compiled TF from scratch it might be somewhere in the build dir (if you didn't run make install)

Hmm I did run make install, but tf is indeed failing to load when I use python3 outside of OpenSpiel. The version loaded by the venv is from its site packages:

import tensorflow as tf
tf.file
'/.../Documents/playground/open_spiel/venv/lib/python3.6/site-packages/tensorflow/init.py'

My issues could stem from this version not being the same as the one installed by tensorflow_cc. You're right, there is a tensorflow directory in the build dir of tensorflow_cc, though I did make install after compiling so this is curious...
As for CUDA, the previous run was on my GPU-less desktop. I saw previous warnings of the same nature, but at least some of them have come with a message saying that it is ok to ignore the warning if you don't have CUDA installed. I am actually compiling tensorflow_cc on a lab machine with CUDA setup now, so I can confirm in a bit if the warning goes away.

Cool, so does the LD_LIBRARY_PATH trick fix it?

If you didn't run sudo make install (i.e., as root, presumably because it's a lab machine) then it will not have been moved to a directory that's a standard load path for dynamic libraries. You'd need to add where it was installed, I guess maybe to both LD_LIBRARY_PATH and PYTHONPATH (maybe just the latter...?)

Two quick updates:

CUDA
When running export_graph.py on lab machine with cuda, I am seeing the following error:

2021-03-23 15:18:35.810662: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: :/usr/local/cuda-10.2/lib64

which is equivalent to the discussion here: https://github.com/deepmind/open_spiel/issues/172#issuecomment-653698293 just with different cuda versions. I thought the steps of installing the custom tf and tf_cc fork were actually to prevent this sort of mismatch, but atleast now I've caught up to them :)

Linking TF build from source
On local machine, TF doesn't seem to like being imported from its source path -- e.g. export_graph.py fails with:

Traceback (most recent call last):
File "export_graph.py", line 28, in
import tensorflow.compat.v1 as tf
File "/home/niko/Documents/playground/tensorflow_cc/tensorflow_cc/build/tensorflow/tensorflow/init.py", line 24, in
from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
File "/home/niko/Documents/playground/tensorflow_cc/tensorflow_cc/build/tensorflow/tensorflow/python/init.py", line 50, in
from tensorflow.python import pywrap_tensorflow
File "/home/niko/Documents/playground/tensorflow_cc/tensorflow_cc/build/tensorflow/tensorflow/python/pywrap_tensorflow.py", line 25, in
from tensorflow.python.platform import self_check
File "/home/niko/Documents/playground/tensorflow_cc/tensorflow_cc/build/tensorflow/tensorflow/python/platform/self_check.py", line 27, in
raise ImportError("Could not import tensorflow. Do not import tensorflow "
ImportError: Could not import tensorflow. Do not import tensorflow from its source directory; change directory to outside the TensorFlow source tree, and relaunch your Python interpreter from there.

Looking into this further.

Another update: after downgrading to TF=2.2 and fixing issues in previous update, I've essentially caught up to the original issue (see: https://github.com/deepmind/open_spiel/issues/172#issuecomment-653582904) on my local (no gpu, no cuda) machine.
**tf_trajectories_example**
Works as expected!
**vpnet_test**

2021-03-23 18:00:29.763857: F /usr/local/include/tensorflow/bazel-bin/tensorflow/include/tensorflow/core/platform/refcount.h:90] Check failed: ref_.load() == 0 (1 vs. 0)
Aborted (core dumped)

**alpha_zero_example**

2021-03-23 18:00:50.037764: F tensorflow/core/framework/tensor.cc:672] Check failed: IsAligned() Aligned and single element
Aborted (core dumped)

The issue hints that this could be due to further mismatches (see last sentence of https://github.com/deepmind/open_spiel/issues/172#issuecomment-653582904) but I haven't found exactly which yet.
On the lab machine (gpu+cuda), alpha_zero_example and vpnet_test behave similarly, but I get this for tf_trajectories_example:

2021-03-23 18:11:38.578086: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.2
2021-03-23 18:11:38.579639: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2021-03-23 18:11:38.581147: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2021-03-23 18:11:38.581388: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2021-03-23 18:11:38.583199: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2021-03-23 18:11:38.584041: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2021-03-23 18:11:38.587469: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2021-03-23 18:11:38.588810: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0
2021-03-23 18:12:40.119304: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2021-03-23 18:12:40.119330: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      0
2021-03-23 18:12:40.119352: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1121] 0:   N
2021-03-23 18:12:40.120813: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 7334 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1070, pci bus id: 0000:04:00.0, compute capability: 6.1)
2021-03-23 18:12:40.122737: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x162d5330 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2021-03-23 18:12:40.122753: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): GeForce GTX 1070, Compute Capability 6.1
2021-03-23 18:12:40.148163: E tensorflow/core/framework/op_segment.cc:54] Create kernel failed: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
2021-03-23 18:12:40.148282: F /home/cornell.edu/nag83/Documents/playground/open_spiel/open_spiel/contrib/tf_trajectories.cc:114] Non-OK-status: tf_session_->Run({}, {}, {"init_all_vars_op"}, nullptr) status: Invalid argument: NodeDef mentions attr 'allowed_devices' not in Op<name=VarHandleOp; signature= -> resource:resource; attr=container:string,default=""; attr=shared_name:string,default=""; attr=dtype:type; attr=shape:shape; is_stateful=true>; NodeDef: {{node beta1_power}}. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[beta1_power]]
Aborted (core dumped)

which is similar to the errors we've seen before above. Have to move to something else to a bit but will keep digging.

One more quick update: export_graph.py fails because it is using deprecated functions that have since been removed. Replacing:
init = tf.initialize_variables(tf.all_variables(), name="init_all_vars_op")
with
init = tf.variables_initializer(tf.global_variables(), name="init_all_vars_op")
does the trick. Using tf.global_variables_initializer() would also work in this case. Either way, it fixes the errors from up here: https://github.com/deepmind/open_spiel/issues/539#issuecomment-805070500

Hmm, I thought we had fixed that last problem.
@mrdaliri @michalsustr judging from going back through the conversations, it seems like those were still outstanding issues? (see https://github.com/deepmind/open_spiel/issues/539#issuecomment-805305939). @mrdaliri I thought you were using it for your research, did you ever manage to get TF AlphaZero fully working?

As a sanity check, I re-installed tensorflow_cc and OpenSpiel from a blank slate. I wanted to try out using @mrdaliri 's open_spiel branch of the tensorflow_cc fork, because I thought it was conspicuous that the link to that repo in the AlphaZero docs went to the open_spiel branch and not the mrdaliri-tf-mirror branch that's listed in the steps we've referenced so far (i.e. https://github.com/deepmind/open_spiel/issues/172#issuecomment-653705369). I was able to get to the same point using the open_spiel branch so, unless I'm mistaken, I think @mrdaliri accounted for the fixes up to this point in that branch, which removes the need to do the steps individually each time.
Anyways, here's what's left to tackle after building with TF=2.2.0 and including everything we've discussed so far:

The following tests FAILED:
23 - vpnet_test (Child aborted)
32 - alpha_zero_example_test (Child aborted)
100 - python_evaluator_test (Child aborted)
101 - python_model_test (Child aborted)
105 - python_deep_cfr_test (Child aborted)
106 - python_deep_cfr_tf2_test (Child aborted)
110 - python_eva_test (Child aborted)
113 - python_exploitability_descent_test (Child aborted)
136 - python_rcfr_test (Child aborted)

vpnet_test and alpha_zero_example_test failed for the reasons discussed above. I think the other failures might be the result of package mismatches (they didn't fail previously and I've only changed the TF version thus far), but I'll look into this more.

@mrdaliri @michalsustr judging from going back through the conversations, it seems like those might still be outstanding issues....

Yes sorry, I gave up on TF and just use libtorch.

@ngrupen I contacted @mrdaliri he confirmed that he never got it fully working. I had mistakenly misunderstood that he had, my apologies for not making that clear. I assume the furthest point he got to is the same place you are now; @mrdaliri can you please confirm?
I will update the documentation to reflect this state of the C++ TF AlphaZero. It would be wonderful if you can find a fix for these last two problems so we can finally get it to work. It's also be great if it was using a more recent version of TF.  I understand if you're not motivated to continue on this. If that's the case, I suggest using the libtorch based C++ AlphaZero. I know this one works, at least one person is using it for their research, and we're about to build a C++ DQN based on the same code as well (which may involve refactoring some of it to make more uses of deep RL via C++ libtorch cleaner).

Hi @lanctot @ngrupen,
Back in the day, I got tf_trajectories_example, vpnet_test and alpha_zero_example compiled successfully but only tf_trajectories_example ran without errors. (see this comment on #172)
However, one of the later releases of OpenSpiel switched to a different data type (from float to a special double or something like that if I remember correctly) which again introduced some linking issues. I couldn't solve that error, and eventually, I ran out of time and had to give up on TF C++.

One more quick update: export_graph.py fails because it is using deprecated functions that have since been removed. Replacing:
init = tf.initialize_variables(tf.all_variables(), name="init_all_vars_op")
with
init = tf.variables_initializer(tf.global_variables(), name="init_all_vars_op")
does the trick. Using tf.global_variables_initializer() would also work in this case. Either way, it fixes the errors from up here: #539 (comment)

Hi @ngrupen, can you submit a small PR for this?

@lanctot Apologies for the delay -- I was tied up at the end of last week / weekend responding to reviewers :-) Anyways, just submitted this PR for the minor fix: https://github.com/deepmind/open_spiel/pull/547#issue-602959881
As for libtorch vs. tensorflow_cc, I am planning to use OpenSpiel for research as well, so I have started using the libtorch version for now just to start making progress. I can try to pickup where we left off with tensorflow_cc if I have an extra moment.


Crud test CreateEntities: Automatic created FeatureOfInterest does not match last Location of that Thing

at line  long automatedFOIId = checkAutomaticInsertionOfFOI(obsId2, locationEntity, -1);
java.lang.AssertionError: ERROR: Automatic created FeatureOfInterest does not match last Location of that Thing.
expected [{"coordinates":[-114.05,51.05],"type":"Point"}]
actual  [{"coordinates":[10,10],"type":"Point"}]

fixed in pr #38


Add CI

Unless it's already been set-up, can we add CI with snapshot deploiyments to Sonatype OSS please?
It would greatly simplify implementing it.

Agree, we need to do this

Looks like we have CI at https://ci.eclipse.org/microprofile/view/Concurrency/ with built modules ending up at this repo: https://repo.eclipse.org/content/repositories/microprofile-snapshots
So it looks like this should be enough.

@FroMage Did you check the PR builds?

No, not yet. But I'm not sure I can trigger them.

Doesn't look like I'm allowed to trigger them.


(0.16.3) Using knexSnakeCaseMappers() with sqlite3 dropColumn() breaks tables

Environment
Knex version: 0.16.3
Database + version: sqlite3 4.0.6
OS: Windows 7 x64
Bug

Explain what kind of behaviour you are getting and how you think it should do

When using Objection's knexSnakeCaseMappers(), if dropColumn() is used, the original table is not deleted/modified, the temporary table _knex_temp_alter3 is not deleted, and subsequent migrations that manipulate the table error out.
Dropping columns should not break the database schema when using knexSnakeCaseMappers

Error message

Varies. If the table is not manipulated after the dropColumn/dropColumns call, no error is produced, but a bogus/incorrect database structure is left behind.
If the table is manipulated in subsequent migrations (or knex.schema promises), various errors are thrown, mostly of type Unhandled rejection Error: SQLITE_ERROR: table _knex_temp_alter3 has no column named column_five

Reduced test code, for example in https://npm.runkit.com/knex or if it needs real
database connection to mysql or postgresql, then single file example which initializes
needed data and demonstrates the problem.

Files required to reproduce (using sqlite3):
knexfile.js
const { knexSnakeCaseMappers } = require('objection');

module.exports = {
  development: {
    client: 'sqlite3',
    connection: {
      filename: './data/development.sqlite3',
    },
    useNullAsDefault: true,
    ...knexSnakeCaseMappers(),
  },
};

migrations/1_one.js
exports.up = function(knex, Promise) {
  return knex.schema.createTable('table_one', table => {
    table.string('column_one');
    table.float('column_two');
  });
};

exports.down = function(knex, Promise) {};

migrations/2_two.js
exports.up = function(knex, Promise) {
  return knex.schema.alterTable('table_one', table => {
    table.dropColumn('column_two');
  });
};

exports.down = function(knex, Promise) {};

migrations/3_three.js
  return knex.schema
    .createTable('table_two', table => {
      table.integer('column_one');
    })
    .table('table_one', table => {
      table.integer('column_three');
    })
};

exports.down = function(knex, Promise) {};

/wh

Does your code work without snakeCaseMappers? Please add generated queries so that we can see where stuff goes wrong.

Hi, thanks your reply. Yes, the code works without the snakeCaseMappers.
When I reduce this to a single file, the outcome a random variant of (so far as I can tell):

table_one is deleted and _knex_temp_alter3 is left over
table_one is NOT deleted and _knex_temp_alter3 is left over

My bad about the single file, here it is. Note that running this without DEBUG=* does not produce a rejected promise (the output is "migrate finished"), but an uncaught Promise rejection error is output nonetheless.
const Knex = require("knex");
const { knexSnakeCaseMappers } = require("objection");

const knex = Knex({
  client: "sqlite3",
  connection: {
    filename: "./test.sqlite3"
  },
  useNullAsDefault: true,
  ...knexSnakeCaseMappers()
});

class MyMigrationSource {
  getMigrations() {
    return Promise.resolve(["migration1", "migration2", "migration3"]);
  }

  getMigrationName(migration) {
    return migration;
  }

  getMigration(migration) {
    switch (migration) {
      case "migration1":
        return {
          up(knex) {
            return knex.schema.createTable("table_one", table => {
              table.string("column_one");
              table.float("column_two");
            });
          },

          down(knex) {}
        };

      case "migration2":
        return {
          up(knex) {
            return knex.schema.alterTable("table_one", table => {
              table.dropColumn("column_two");
            });
          },

          down(knex) {}
        };

      case "migration3":
        return {
          up(knex) {
            return knex.schema
              .createTable("table_two", table => {
                table.integer("column_one");
              })
              .table("table_one", table => {
                table.integer("column_three");
              });
          },

          down(knex) {}
        };
    }
  }
}

knex.migrate.latest({ debug: true, migrationSource: new MyMigrationSource() }).then(
  () => {
    console.log("migrate finished");
    process.exit(0);
  },
  err => {
    console.error("migrate error: ", err);
    process.exit(1);
  }
);

Here's the output of running it:
$ DEBUG=* node index.js
  knex:client acquired connection from pool: __knexUid1 +0ms
  knex:query select * from sqlite_master where type = 'table' and name = ? undefined +0ms
  knex:bindings [ 'knex_migrations' ] undefined +0ms
  knex:client releasing connection to pool: __knexUid1 +12ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query create table `knex_migrations` (`id` integer not null primary key autoincrement, `name` varchar(255), `batch` integer, `migration_time` datetime) undefined +13ms
  knex:bindings [] undefined +14ms
  knex:client releasing connection to pool: __knexUid1 +20ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query select * from sqlite_master where type = 'table' and name = ? undefined +17ms
  knex:bindings [ 'knex_migrations_lock' ] undefined +16ms
  knex:client releasing connection to pool: __knexUid1 +2ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query create table `knex_migrations_lock` (`index` integer not null primary key autoincrement, `is_locked` integer) undefined +3ms
  knex:bindings [] undefined +4ms
  knex:client releasing connection to pool: __knexUid1 +15ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query select * from `knex_migrations_lock` undefined +17ms
  knex:bindings [] undefined +17ms
  knex:client releasing connection to pool: __knexUid1 +4ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query insert into `knex_migrations_lock` (`is_locked`) values (?) undefined +4ms
  knex:bindings [ 0 ] undefined +4ms
  knex:client releasing connection to pool: __knexUid1 +16ms
  knex:client acquired connection from pool: __knexUid1 +1ms
  knex:query select `name` from `knex_migrations` order by `id` asc undefined +18ms
  knex:bindings [] undefined +17ms
  knex:client releasing connection to pool: __knexUid1 +3ms
  knex:tx trx2: Starting top level transaction +0ms
  knex:client acquired connection from pool: __knexUid1 +4ms
  knex:query BEGIN; trx2 +6ms
  knex:bindings undefined trx2 +6ms
  knex:query select * from `knex_migrations_lock` trx2 +4ms
  knex:bindings [] trx2 +4ms
  knex:query update `knex_migrations_lock` set `is_locked` = ? trx2 +3ms
  knex:bindings [ 1 ] trx2 +3ms
  knex:query select * from sqlite_master where type = 'table' and name = ? trx2 +3ms
  knex:bindings [ 'knex_migrations' ] trx2 +4ms
  knex:query select * from sqlite_master where type = 'table' and name = ? trx2 +2ms
  knex:bindings [ 'knex_migrations_lock' ] trx2 +2ms
  knex:query select * from `knex_migrations_lock` trx2 +3ms
  knex:bindings [] trx2 +3ms
  knex:query select `name` from `knex_migrations` order by `id` asc trx2 +2ms
  knex:bindings [] trx2 +2ms
  knex:query select max(`batch`) as `max_batch` from `knex_migrations` trx2 +3ms
  knex:bindings [] trx2 +3ms
  knex:query create table `table_one` (`column_one` varchar(255), `column_two` float) trx2 +4ms
  knex:bindings [] trx2 +4ms
  knex:query insert into `knex_migrations` (`batch`, `migration_time`, `name`) values (?, ?, ?) trx2 +3ms
  knex:bindings [ 1, 2019-02-06T08:54:35.474Z, 'migration1' ] trx2 +2ms
  knex:query PRAGMA table_info(`table_one`) trx2 +4ms
  knex:bindings [] trx2 +5ms
  knex:tx trx4: Starting top level transaction +35ms
  knex:query SAVEPOINT trx4; trx4 +4ms
  knex:bindings undefined trx4 +3ms
  knex:query insert into `knex_migrations` (`batch`, `migration_time`, `name`) values (?, ?, ?) trx4 +2ms
  knex:bindings [ 1, 2019-02-06T08:54:35.484Z, 'migration2' ] trx4 +3ms
  knex:query SELECT name, sql FROM sqlite_master WHERE type="table" AND name="table_one" trx4 +4ms
  knex:bindings [] trx4 +4ms
  knex:query create table `table_two` (`column_one` integer) trx4 +3ms
  knex:bindings [] trx4 +2ms
  knex:query CREATE TABLE `_knex_temp_alter3` (`column_one` varchar(255), `column_two` float) trx4 +3ms
  knex:bindings [] trx4 +4ms
  knex:query alter table `table_one` add column `column_three` integer trx4 +3ms
  knex:bindings [] trx4 +2ms
  knex:query SELECT * FROM "table_one" trx4 +2ms
  knex:bindings [] trx4 +3ms
  knex:query insert into `knex_migrations` (`batch`, `migration_time`, `name`) values (?, ?, ?) trx4 +2ms
  knex:bindings [ 1, 2019-02-06T08:54:35.501Z, 'migration3' ] trx4 +2ms
  knex:query DROP TABLE "table_one" trx4 +3ms
  knex:bindings [] trx4 +3ms
  knex:query update `knex_migrations_lock` set `is_locked` = ? trx4 +2ms
  knex:bindings [ 0 ] trx4 +2ms
  knex:query COMMIT; trx4 +3ms
  knex:bindings undefined trx4 +2ms
  knex:query CREATE TABLE `table_one` (`column_one` varchar(255)) trx4 +1ms
  knex:bindings [] trx4 +2ms
  knex:tx trx2: releasing connection +59ms
  knex:client releasing connection to pool: __knexUid1 +94ms
migrate finished

I've uploaded all this to a Git repo: https://gitlab.elunic.software/whefter/knex-snakecasemappers-demo

From queries, looks like some sqlite3 schema methods are still not using wrapIdentifiers for quoting identifiers correctly.

@elhigu  I managed to track it down, I believe.  The runner, when querying, doesn't await the return value of client.processResponse(). Together with the special structure returned by TableCompiler_SQLite3.prototype.dropColumn and  renameColumn - an object with the special output property which returns a Promise, this resulted in the Promise itself being handed to client.postProcessResponse(), instead of the awaited value.
The knexSnakeCaseMappers then mangled the Promise object's property names. I'm assuming that meant the Promise was not recognized as such.
The proposed solution (see PR) is to simply await the return value of client.processResponse(). This should be a risk-free change, since any non-promise value will simply be returned.
Let me know what you think! We're looking forward to having this in production very soon, as we currently have some projects that depend on ugly fixes to work around this.

In theory change indeed did seem harmless, but I'm not sure if that postprocess response is meant to allow to return promise or not. If not, then the real problem is elsewhere. If yes, we need to check other dialects too if they have the same bug.

After getting more errors, I dug deeper and indeed found that that dropColumn and renameColumn have an identifier mapping problem. These:

https://github.com/tgriesser/knex/blob/master/src/dialects/sqlite3/schema/ddl.js#L229
https://github.com/tgriesser/knex/blob/master/src/dialects/sqlite3/schema/ddl.js#L264

use the unmapped identifier (in this case, snake_case), whereas the rows returned and passed to the iterator in reinsertData (row) have been processed by postProcessResponse, and might be camelCase.
I've added code to make sure the modifications to row are done with the correctly processed keys.
It does look like it was originally not meant to return a promise, and then the whole output() thing was added afterwards. Regardless, it works for both cases and does fix this issue. Other dialects would have the same bug if they use the same construct with output() returning a process (I didn't check).

Fixed in 0.16.4-next2


Don't segfault; and don't shuffle for objects

Fixes #172
Now you can choose to ignore exceptions (with a warning) or go into pdb.

This still just embeds strings in the output, rather than considering the other string possibilities that have been mentioned; it also does not consider complex data types, where we probably can't do better than to pass through the obfuscated string IDs.


Update deployment names and labels

What is the purpose of this commit? Why do we create separate deployments for baseline and canary?
when I commit code to canary  it become
samepleapp-canary-baseline
samepleapp-canary-canary


current.json is missing from codebase

LVpro will not startup using download of latest code.

also looks like there is a Kivy error on startup.

Code corrected to look for settings.json if current.json does not exist. More improvements for robustness to come.


Bootstrap Vue @charset issue

Description
I have an issue on build (not dev) with Bootstrap Vue, shows error on the /dist/bootstrap-vue.css file
@charset UTF8 etc, similar to what Ive seen elsewhere, but cant find how to fic this, any ideas at all.
Its the same theme as this demo at https://priceless-nobel-a7290d.netlify.com/
but with Vuetify and Bootstrap Vue added. Wordks fine in dev mode.
Steps to reproduce
Clear steps describing how to reproduce the issue. Please please please link to a demo project if possible, this makes your issue much easier to diagnose (seriously).
Expected result
Build to dist folder
Actual result
Throws error on /dist/bootstrap-vue.css over the @charset UTF import
Environment

Libs:
- gridsome version: Latest
- @gridsome/cli version: Latest

Browser:
- [ ] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX

For Tooling issues:
- Node version: Latest
- Platform:  Linux

Others:

Could you try use bootstrap-vue.scss?


[GLUTEN-1632][CH]Daily Update Clickhouse Version (20240324)

Auto commit by gluten daily build, please check the build status and merge it if it's green.

Run Gluten Clickhouse CI

Run Gluten Clickhouse CI


Define a method which adds the standard trio of object methods

Define a ClassMaker.addObjectsMethod(boolean deep)  method which defines the equals, hashCode, and toString methods according to the rules for records. The method should only examine fields that have been defined thus far, and it should only add methods that haven't been defined yet. When the deep parameter is true, arrays are deeply examined.
When possible, delegate to java.lang.runtime.ObjectMethods for generating the code, but it cannot be used when:

The runtime version is less than 16.
The class is external (because the runtime after compilation might not be Java 16).
The deep parameter is true and any fields are arrays.
The class isn't final (an instanceof check is unsafe).

If the class has a superclass which overrides the default implementation, then the method isn't guaranteed to cascade properly. This means that the addObjectsMethod only really works predictably for records which have no superclass. This feature isn't powerful enough to be added to the core API.


Variable in UDP output 'host' property causes crash

Version: logstash 2.3.2
OS: RHEL 6.7
Relevant config parts (filter.conf):
ruby { code => "event['lcp1'] = '(FQDN removed)'; event['lcp2'] = '(FQDN removed)';" }

(output.conf):
if [lcp1] and [lcp2] {
	udp {
		host => "%{lcp1}"
		port => 514
		codec => plain { format => "%{message}" } }
	udp {
		host => "%{lcp2}"
		port => 514
		codec => plain { format => "%{message}" } }
}

Crash message:
SocketError: send: name or service not known
                  send at org/jruby/ext/socket/RubyUDPSocket.java:315
              register at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-udp-2.0.4/lib/logstash/outputs/udp.rb:24
                  call at org/jruby/RubyProc.java:281
                encode at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-codec-plain-2.0.4/lib/logstash/codecs/plain.rb:41
               receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-output-udp-2.0.4/lib/logstash/outputs/udp.rb:31
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/outputs/base.rb:83
                  each at org/jruby/RubyArray.java:1613
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/outputs/base.rb:83
  worker_multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/output_delegator.rb:130
         multi_receive at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/output_delegator.rb:114
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:301
                  each at org/jruby/RubyHash.java:1342
          output_batch at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:301
           worker_loop at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:232
         start_workers at /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:201`

**Info from strace**:
`22466 recvfrom(14, "<13> P0222738 05/16/2016 11:43:3"..., 8192, 0, {sa_family=AF_INET6, sin6_port=htons(46032), inet_pton(AF_INET6, "::ffff:<IP_ADDRESS>", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]$
22459 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7f3187167780} ---
22470 socket(PF_NETLINK, SOCK_RAW, 0)   = 27
22470 bind(27, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
22470 getsockname(27, {sa_family=AF_NETLINK, pid=22432, groups=00000000}, [12]) = 0
22470 sendto(27, "\24\0\0\0\26\0\1\3\272\3709W\0\0\0\0\0\0\0\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
22470 recvmsg(27, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\272\3709W\240W\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1"..., 4096}], msg_controllen=0, msg_fl$
22470 recvmsg(27, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}<EMAIL_ADDRESS>4096}], msg_controllen=0, msg_fla$
22470 recvmsg(27, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\272\3709W\240W\0\0\0\0\0\0", 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
22470 socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 27
22470 connect(27, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
22470 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 27
22470 connect(27, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("<IP_ADDRESS>")}, 16) = 0
22470 sendto(27, "\274w\1\0\0\1\0\0\0\0\0\0\7%{lcp1}\tdomain\3c"..., 39, MSG_NOSIGNAL, NULL, 0) = 39
22470 sendto(27<EMAIL_ADDRESS>39, MSG_NOSIGNAL, NULL, 0) = 39
22470 recvfrom(27, "\274w\205\203\0\1\0\0\0\1\0\0\7%{lcp1}\tdomain\3c"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("<IP_ADDRESS>")}, [16]) = 121
22470 recvfrom(27<EMAIL_ADDRESS>65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("<IP_ADDRESS>")}, [16]) = 121

(Edited to make more readable)

More context:

In filter.conf, I assign two FQDNs where each message should be forwarded as new fields. (This is working as expected.)
In output.conf, if both fields are present on the message, I attempt to send the message to both FQDNs.
In strace, there is a subsequent request to a DNS server for '%{lcp1}\tdomain\3c...', where domain is the company name. Logstash crashes immediately after this request fails to resolve.

There are probably two issues here:

The UDP output plugin is not resolving variables in the 'host' property
DNS failures in the UDP output plugin cause a crash, rather than an error message written to logstash.err or something similar

Out of curiosity, why are you using the ruby filter, instead of mutate { add_field => {} }?

The ruby also does a number of other things -- extracts the correct hostname, identifies the device's building number and type, and then selects the correct FQDNs based on a combination of those factors. I stripped out the other 47 lines of it for clarity. :)

Has this improvement to allow variables for the host field been considered?  It seems to be a limitation in Syslog and tcp output plugins as well.  I am trying to do a similar task utilizing logstash to ship certain logs to the IP identified in a field.  If it is not planned as improvement, is there any recommendation on how else this task can be done?
I do not have experience in plugin development but if there are some resources that can point me in the right direction to try and do it myself, i am all ears :)

Apologies that this was not mentioned sooner, but this cannot be done easily for reasons which follow.
The problem with using variables in some of the outputs (network [tcp, udp, etc.], Elasticsearch, others), is that there are elements which need to be known at the time the plugin is registered. For the purposes of this discussion, that is the host setting, which is an instance variable called @host in the code:
  def register
    @socket = UDPSocket.new
    @codec.on_event do |event, payload|
      @socket.send(payload, 0, @host, @port)
    end
  end

The register block has to have all values known when the plugin is instantiated. How can Logstash create a network socket to ship to if it doesn't know where it's shipping? Using a variable for host means that when @socket.send(payload, 0, @host, @port) is registered when the plugin is initiated, the only value available for @host is what you put there, a string that is the variable. You can clearly see this in the output submitted by the original poster:
22470 sendto(27, "\274w\1\0\0\1\0\0\0\0\0\0\7%{lcp1}\

The %{lcp1} is right there. It is for this reason that variables cannot be used for plugins which depend on sockets being created once at launch time.
For Logstash to be able to support what you are asking, it would have to be able to create new sockets on the fly. This is not a null operation, and would dramatically slow the flow of information as the entire pipeline would have to wait for Logstash to open a socket and send the event to that socket for each message.
While the potential exists for someone to write a plugin which can handle creating and destroying sockets on the fly in a less taxing way (e.g., not destroy a socket until no messages had flowed through it for n seconds, limit the total number of open sockets, protections, etc.), it would still cause a significant increase in load to the system. Such a plugin would almost certainly have to be isolated from the rest of the main pipeline (think pipeline-to-pipeline communication), and be behind persistent queues (spool up these messages so they can be shipped as fast as possible, but not dropped, and not bog-down the rest of the pipelines) so it could do its thing with a single worker-thread, so as not to hinder the rest of the pipelines.
As a result, it is highly unlikely that this feature will be added to the UDP plugin. If the number of potential targets (the host in the udp output block) is not huge (no more than a dozen, for instance), it would be much less harmful to performance to pre-figure all potential target/destination hostnames/IPs and use if conditionals to route them to the appropriate udp output block (explicitly configured with said host directives). If the combination of potential outputs is a large number, then this approach is not great, as each output will need at least a single worker thread, and you will have a bloated configuration which will also slow down the pipeline.
Probably not the news you were hoping for, but hopefully this provides context on why changing the plugin to suit this isn't just a done deal.

@untergeek Thank you for the explanation!  It really helps me with understanding the underlying architecture of logstash.  The thought of doing a if conditionals was something I considered but with 90 endpoints, that doesn't seem practical as you stated.  My next thought is likely to write to file and utilize rsyslog or something similar to send message.
Thank you again for the writeup!


Task Grouping Is Forced

Grouping Tasks with the same name and project is forced, and is completely ruining my experience of using the Toggl Desktop Client. In the screenshot above I went to sleep twice, and had downtime 5 times in this day. I simply wish to see these in the order they took place in.
E.g: Sleep -> Downtime -> Gaming -> Downtime -> Cycle -> Work -> Downtime -> Work -> Cycle -> Downtime -> Sleep
Instead this shows as:
Sleep (2), Downtime (4), Cycle(2), Work(2), Gaming
Please make this an option in the preferences, I simply wish to see what I did at a glance in order, and the forced grouping is honestly making me not want to use the Desktop Client any longer.

This feature is configurable from the webapp "profile settings" page. Just change the setting from web and log out from desktop app and then login again.
Untick this setting.

@IndrekV thank you, that worked.
However, any editable config settings which effect how the application works should be editable in the application itself.


Matrix Build

Takes a little bit longer (like another 30 minutes.......)
Pros:

More split out
Only the dependencies required for an adapter are installed
Easier control of what tests are and arent ran
Cleaner output of tests

Cons:

Considerably slower

(PR squashed)

:+1:


Trades being reported as halted for non-thorchain chains

Overview
When trading from a thorchain-swapper-compatible chain to a non-thorchain-swapper-compatible chain, the swapper reports that trades are temporarily halted for the unsupported chain.
References and additional details

Acceptance Criteria
Swapper should only report a chain as halted when it is actually halted.
Need By Date
No response
Screenshots/Mockups
No response
Estimated effort
No response

closed by https://github.com/shapeshift/web/pull/6236


Channel API

This set provides a channel-based API that should make much simpler the normal usage.
TODO:

[x] Basic encoding API

[x] Works
[x] Produces the same output for the same input

[ ] Multipass encoding API

[x] Single pass
[ ] Second pass

[ ] Produces the same output for the same input

[ ] Multipass

Open questions:

Fit a last-error inside the ReceiverPacket abstraction and a mean to retrieve it
For multipass the api can be a single function and use the Config rc information to decide if it has to be multipass/firstpass/secondpass/normal

Solves: #689
(apparently github got some consistency issue with #2118 so I ended up opening this)

Coverage decreased (-2.1%) to 79.822% when pulling dbe4217486f21321ad3470f0993f5d688414ffda on rust-av:channel-api into ed4d6781416a0a51db7eb54e555515abdf40e38c on xiph:master.

Now with the commits collapsed without the interims :)


remove deleting layers

This was done but needs an sdk release

See: https://github.com/GeoNode/viewer/commit/659b334f2164804e2dc15fe09ad138421ae3cc8b

Done with https://github.com/GeoNode/viewer/pull/42/commits/810c4611758292e6c0bdcd18eed3fc9d61e9dedd


Correction for raw affiliation SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier

Correction needed for raw affiliation SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier
raw_affiliation_name: SPO, Univ Montpellier, INRAE, Institut Agro, Montpellier
new_rors: 051escj72;003vg9w96;03rnk6m14;04w07sc25
previous_rors: 051escj72;003vg9w96;03rnk6m14
works_examples: W4392231740
contact: c19fef93137adbd9f1f967afc2ae8bc3:52f11a063bedaf04ede396e2eea8d36c871d @ inrae.fr

This issue was accepted and ingested by the OpenAlex team on 2024-11-18. The new affiliations should be visible within the next 7 days.


Test file in the main folder

When fixing this isse I used this project as an example.
I noticed that there is a test file in the main folder:
htmx-spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc.imports
This file can be moved to the test folder and this way the production code is cleaner.
Example: https://github.com/BoukeNijhuis/dynamic-version-url/blob/main/src/test/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc.imports
Thanks again for taking the time to create an issue on my project.

I think this needs to remain in the main part of the project so it is exposed for projects that want to leverage it in their own tests.

@checketts is right. By having this, when you write a @WebMvcTest, then the autoconfiguration is automatically also applied. So I think it would be good to also add this to your dynamic-version-url project so the web tests also automatically have the correct configuration.

Thank you for your replies and for showing how autoconfiguration works. It really improved my project.
Just to be sure: my point is that this file should be in the TEST folder and not in MAIN folder, because it is used for tests. You should not need it for production. In my project I put it in the test folder and it still works properly.
@checketts thinks it is on purpose in the MAIN folder. If this is the case, please close this issue.

It is in the MAIN folder so it get included in final jar. That mean in my project that pulls in htmx-spring-boot as a dependency can leverage the auto configuration in my project's tests.
If it is in the TEST folder, then it won't be included in the htmx-spring-boot jar and my project won't be able to leverage it.
There could be a separate htmx-spring-boot-testing module for this purpose, but I don't think it would be worth adding the potential complexity/confusion for users.

In my project I put it in the test folder and it still works properly

Did you try to build a JAR of your library and then write an @WebMvcTest in a separate project that imports the library via Maven or Gradle? Was the autoconfiguration picked up running the test? Normally, as far as I know it will not.

Totally clear why the test file is in the main folder. Thanks for explaining. I am closing this issue.


Amend warning on AbilityUseDialog for pact slots

When a spell is set to "pact," a warning is always shown despite there being pact slots available if the actor has no regular slots of the spell's level.
This changes it so warnings are not shown for spells set to "pact" if there are slots of the spell's level or there are pact slots available.

LGTM.

I've done this globally rather than for just the single 'error'. This makes sense to me since none of them are actually errors.


Changes made to description

Hope it will be better displayed in game. Can you take a look and merge them together? Thank you

You seem to have copied the file as well as made changes to the original file.
Please remove the extra file and only leave the changes to the original file.

You seem to have copied the file as well as made changes to the original file.
Please remove the extra file and only leave the changes to the original file.

Idk how that is possible but I guess I did something wrong and thought I could not change when having it the same name

Thanks, should be added in 48d2dd1


Include Instructor in Awesome Pydantic

I recently gave a talk on the topic if you're curious: https://www.youtube.com/watch?v=yj-wSRJwrrc
But generally this library allows pydantic to control and prompt openai's gpt, not sure if thats utilities or machine learning.
from openai import OpenAI
import instructor

# Enables `response_model`
client = instructor.patch(OpenAI())

class UserDetail(BaseModel):
    name: str
    age: int

user = client.chat.completions.create(
    model="gpt-3.5-turbo",
    response_model=UserDetail,
    messages=[
        {"role": "user", "content": "Extract Jason is 25 years old"},
    ]
)

assert isinstance(user, UserDetail)
assert user.name == "Jason"
assert user.age == 25

Thanks!


Alpha biased toward white

The -A flag in st should set the alpha. However, when running st -A 0.0, the terminal's background is actually tinted white, instead of being transparent. This is not present with vanilla st + alpha patch, so it's possible that some patches are conflicting.

This issue also occurs if you set alpha via XResources.
Reproduce:
1: write *.alpha=0.0 into ~/.Xresources
2: run xrdb ~/.Xresources
3: launch the terminal
4: observe that the terminal isn't entirely transparent, and is still tinted

This seems to be because of the background color, setting st.background = #000000 fixes the problem.
This is also present in vanilla st when you change the background color, it just happens that vanilla st has a black background.


Internal Server Error: comparison of String with :rack failed. No helpful stack trace

I'm just getting started with Middleman and Middleman-Blog, and I'm loving it. However, I've just run into an issue that I'm having trouble resolving.
When I try to go to a tag archive or year archive page on my site, the page just says:

Internal Server Error
comparison of String with :rack failed

When I look at my running server, there is no output. If I build with bundle exec middleman build --verbose, I see this stacktrace:
       error  build/2012/01.html
comparison of Symbol with String failed
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/tilt-2.0.5/lib/tilt/template.rb:162:in `sort!'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/tilt-2.0.5/lib/tilt/template.rb:162:in `evaluate'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/tilt-2.0.5/lib/tilt/template.rb:102:in `render'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/file_renderer.rb:79:in `render'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/template_renderer.rb:184:in `_render_with_all_renderers'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/template_renderer.rb:147:in `block in render'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/notifications.rb:166:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/util.rb:21:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/template_renderer.rb:146:in `render'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/sitemap/resource.rb:154:in `render'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/rack.rb:112:in `process_request'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/rack.rb:66:in `block in call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/rack.rb:65:in `catch'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/rack.rb:65:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/urlmap.rb:68:in `block in call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `each'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-autoprefixer-2.7.1/lib/middleman-autoprefixer/extension.rb:48:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/head.rb:12:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/lint.rb:49:in `_call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/lint.rb:37:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/builder.rb:153:in `call'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/mock.rb:74:in `request'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/rack-2.0.1/lib/rack/mock.rb:56:in `get'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:230:in `block in output_resource'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/notifications.rb:166:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/util.rb:21:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:223:in `output_resource'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:462:in `call_with_index'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:433:in `process_incoming_jobs'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:415:in `block in worker'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:406:in `fork'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:406:in `worker'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:397:in `block in create_workers'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:396:in `each'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:396:in `each_with_index'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:396:in `create_workers'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:338:in `work_in_processes'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/parallel-1.10.0/lib/parallel.rb:252:in `map'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:135:in `output_resources'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:129:in `output_files'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:71:in `block in run!'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/notifications.rb:166:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/util.rb:21:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/builder.rb:70:in `run!'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-cli-4.1.14/lib/middleman-cli/build.rb:80:in `block in build'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/activesupport-<IP_ADDRESS>/lib/active_support/notifications.rb:166:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-core-4.1.14/lib/middleman-core/util.rb:21:in `instrument'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-cli-4.1.14/lib/middleman-cli/build.rb:79:in `build'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/command.rb:27:in `run'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:126:in `invoke_command'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:133:in `block in invoke_all'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:133:in `each'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:133:in `map'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:133:in `invoke_all'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/group.rb:232:in `dispatch'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:115:in `invoke'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor.rb:40:in `block in register'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/command.rb:27:in `run'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/invocation.rb:126:in `invoke_command'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor.rb:369:in `dispatch'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/thor-0.19.4/lib/thor/base.rb:444:in `start'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/gems/middleman-cli-4.1.14/bin/middleman:70:in `<top (required)>'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/bin/middleman:17:in `load'
/Users/shanson/dev/gh/stevehanson/shanson/vendor/bundle/bin/middleman:17:in `<top (required)>'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli/exec.rb:74:in `load'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli/exec.rb:74:in `kernel_load'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli/exec.rb:27:in `run'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli.rb:332:in `exec'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli.rb:20:in `dispatch'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/cli.rb:11:in `start'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/exe/bundle:34:in `block in <top (required)>'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/lib/bundler/friendly_errors.rb:100:in `with_friendly_errors'
/Users/shanson/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.6/exe/bundle:26:in `<top (required)>'
/Users/shanson/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
/Users/shanson/.rbenv/versions/2.3.1/bin/bundle:23:in `'

This stack trace is unfortunately not very helpful to me (a newbie with Middleman), since I don't see any reference to any of my own code. Would someone be able to help me figure out where to go from here to get my blog back up and running?
I'm on Middleman 4.1.14, Middleman Blog 4.0.1, Ruby 2.3.1, Mac OS 10.12.1.
My config.rb looks like this:
page '/*.xml', layout: false
page '/*.json', layout: false
page '/*.txt', layout: false

set :markdown_engine, :redcarpet
set :markdown, :fenced_code_blocks => true, :smartypants => true

activate :autoprefixer

activate :blog do |blog|
  blog.permalink = "{title}"
  blog.layout = "post"
  blog.tag_template = "tag.html"
  blog.calendar_template = "calendar.html"
end

I've also tried replacing source/tag.html.erb and source/calendar.html.erb with bare-bones files:
---
pageable: true
per_page: 12
---

Hello

and I'm still getting the error.
Thanks!

Update: It seems this had something to do with redcarpet. When I commented out the following line:
set :markdown_engine, :redcarpet

I'm now able to access my tags and calendar archive pages. I kept the following line:
set :markdown, :fenced_code_blocks => true, :smartypants => true

and everything seems to be working fine with Markdown, I guess using Kramdown, now.
Is there anything special I need to do to get redcarpet to work with Middleman Blog? I have the gem installed and it works fine on regular posts and pages, just was causing that error on the tags and calendar pages.

Rack 1 supported Red Carpet 1 and 2. I think Rack 2 (which we moved to recently), supports only Red Carpet 2 ... but ... Middleman probably still trying to work with both and may be doing something incorrectly.
We have tests for redcarpet, but maybe not the most recent version.
Can you post your Gemfile.lock from when redcarpet was included?

Thanks for the reply @tdreyno.

I'm running into this, too! You're right that dropping Redcarpet seems to fix tag pages, but now my Rouge syntax highlighting is broken. Will respond back if I find anything.

So it turns out that when I remove the check for sortable symbol hashes in Tilt, this works again.
https://github.com/rtomayko/tilt/blob/master/lib/tilt/template.rb#L161-L165
Modifying the evaluate method to this "fixes" the problem:
    def evaluate(scope, locals, &block)
      locals_keys = locals.keys
      locals_keys.sort!{|x, y| x.to_s <=> y.to_s}
      method = compiled_method(locals_keys)
      method.bind(scope).call(locals, &block)
    end

It turns out locals has mixed string and symbol elements and Ruby was unable to sort them, despite the Tilt codebase assuming otherwise.
Let me see if it's a problem with our Ruby version. There's a key in Tilt which determines how it'll sort the keys:
SYMBOL_ARRAY_SORTABLE = RUBY_VERSION >= '1.9

The commit that added that constant was made over a year ago, which makes me think perhaps it's the inputs into locals that is the culprit. If I inspect locals.keys, I get this:
["page_type", "tagname", "articles", "blog_controller", :rack, :current_path]

Everything but :rack and :current_path are strings.
Ha, I'm shooting in the dark on this not understanding the internals, but hopefully these details help!

And ... if you want an extremely brittle yet functional short-term solution, here's a fork of tilt with those lines removed. Using it in my project now until a more reasonable solution surfaces!
https://github.com/teejayvanslyke/tilt

U could also try using KramDown as a markdown engine - I have never had any issues with this.
So I am seeing that this is an issue outside of the blog / middleman remit. Please re-open if this is not the case.


Relative links throw "Uncaught (in promise) Error" and prevent all link clicks from working

Description
If a relative link () exists on a page, the following error is thrown and all links stop functioning.
Uncaught (in promise) Error<EMAIL_ADDRESS>You stumbled upon a bug in Vike's source code. Go to https://github.com/vikejs/vike/issues/new and copy-paste this error; a maintainer will fix the bug (usually under 24 hours).
    at createErrorWithCleanStackTrace (createErrorWithCleanStackTrace.js?v=0c1175f8:8:15)
    at assert (assert.js?v=0c1175f8:52:27)
    at parseUrl (parseUrl.js?v=0c1175f8:60:5)
    at hasBaseServer (skipLink.js?v=0c1175f8:59:31)
    at skipLink (skipLink.js?v=0c1175f8:19:10)
    at prefetch.js?v=0c1175f8:50:13
    at Array.forEach (<anonymous>)
    at addLinkPrefetchHandlers (prefetch.js?v=0c1175f8:45:14)
    at useClientRouter.js?v=0c1175f8:252:13
    at async fetchAndRender (useClientRouter.js?v=0c1175f8:254:9)
createErrorWithCleanStackTrace @ createErrorWithCleanStackTrace.js?v=0c1175f8:8
assert @ assert.js?v=0c1175f8:52
parseUrl @ parseUrl.js?v=0c1175f8:60
hasBaseServer @ skipLink.js?v=0c1175f8:59
skipLink @ skipLink.js?v=0c1175f8:19
(anonymous) @ prefetch.js?v=0c1175f8:50
addLinkPrefetchHandlers @ prefetch.js?v=0c1175f8:45
(anonymous) @ useClientRouter.js?v=0c1175f8:252
await in (anonymous) (async)
(anonymous) @ useClientRouter.js?v=0c1175f8:42
onClick @ useClientRouter.js?v=0c1175f8:293

I narrowed it down! The issue occurs when a relative link is used on a page like this:
This triggers the error

Indeed I could reproduce, let me have a look.

Fix pre-released in 0.4.142-commit-937cb3b.

Btw. would you company be up for sponsoring?

Thanks! This project has been great to work with. I'll talk to the powers that be about sponsoring.

Thanks 🙏 keep me updated how it goes - even if it's a no.


Fix: Allow for non-default neurite_types

@adrien-berchet , can you approve this quick? thanks!

faster than lucky luke!


Build Array from Permutation

I want to add a solution to the leetcode question  in Java

Go ahead @SayantaniDeb
follow me for more such repo to contribute.


Please add sum_ support to table plugin

a proposal is in #179 (it is my first python code, so feel free to tell me if I do something wrong)

Commented on your PR.