[MAJOR CHANGE] Layout + general important fixes

Chamge Summary

[x] Major layout change.

Integrated ui-layout for sidebar draggable feature (replaced previous resizer)

Added status bar (footer) with cursor position (later will include some server commands?)
Added placeholder for the tabs component to be integrated into once it will be completed
Changed most SASS files to have a more unified look and theme

[x] Fixed default file sorting

Now, Folder content is ordered in regard to the following rules: directories before files, alphabetically ordered

New sort types can be easily implemented server side by replacing the default compare function

[x] Make all icon libraries local instead of using CDN

This fixed an issue with icons not showing up in the heroku PR demos

[x] Fix general problems with fileTree component

Made the arrow besides folders un-clickable, since it doesn't trigger the on('selected') part of angular-file-tree (or whatever it's called :smile: )

Made file colors more versatile and made directories' icon colorful

Finally time to merge this sucker! woot woot!


chore(main): release 1.0.0

:robot: I have created a release beep boop
1.0.0 (2024-05-19)
Features

finish example and update docs (#2) (c2dff85)
npm publish action (#4) (ff9f7c0)
v1 implementation (#1) (6a241ee)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/morozj01/react-native-ntag-424/releases/tag/v1.0.0 :sunflower:


Godot Crashes When Switching Scenes (3.1.stable)

Godot version: 3.1-stable_X11.64

OS/device including version: Solus 3.9999 Gnome Nvidia GTX 1050TI

Issue description:

Randomly when I switch between scenes Godot crashes, the only thing on the terminal when this happens is:
ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: _get_modified_time: Failed to get modified time for:
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.
malloc(): smallbin double linked list corrupted

I am using GLES2
Minimal reproduction project:

It's not minimal but can give enough context
mooncheeser source.zip

Well I just got it again, and now I have more detail. Before the crash the scene I was like this (print below)

The terminal dumped this:
OpenGL ES 3.0 Renderer: GeForce GTX 1050 Ti/PCIe/SSE2
Editing project: /home/henrique/Documents/projects/001 - Moon Cheeser/repo/source (::home::henrique::Documents::projects::001 - Moon Cheeser::repo::source)
OpenGL ES 2.0 Renderer: GeForce GTX 1050 Ti/PCIe/SSE2
henrique@pigdev ~ $ ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: _get_modified_time: Failed to get modified time for:
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /usr/lib/haswell/libc.so.6(+0x40560) [0x7ff318850560] (??:0)
[2] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x213bb83] (??:?)
[3] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2149e3a] (??:?)
[4] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x1c925d8] (<artificial>:?)
[5] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x1c93c76] (??:?)
[6] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x10225f9] (??:?)
[7] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xae689d] (??:?)
[8] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[9] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24400dd] (<artificial>:?)
[10] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24753e0] (??:?)
[11] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x24754e0] (??:?)
[12] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xfa47dc] (??:?)
[13] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xae689d] (??:?)
[14] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[15] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x21e4e02] (??:?)
[16] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x21e5e40] (??:?)
[17] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x182eb91] (??:?)
[18] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x182f5d5] (<artificial>:?)
[19] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x9ef656] (??:?)
[20] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174ad5] (??:?)
[21] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x212f911] (??:?)
[22] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16b4648] (<artificial>:?)
[23] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16d9c36] (<artificial>:?)
[24] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16dcc84] (??:?)
[25] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16dcdee] (<artificial>:?)
[26] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x9ef656] (??:?)
[27] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x2174733] (??:?)
[28] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x212f995] (??:?)
[29] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16541c3] (??:?)
[30] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x16b3957] (??:?)
[31] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xa7a851] (??:?)
[32] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xa77d4d] (<artificial>:?)
[33] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0xb39c9b] (<artificial>:?)
[34] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x7b28dc] (??:?)
[35] /usr/lib/haswell/libc.so.6(__libc_start_main+0xeb) [0x7ff318833bdb] (??:0)
[36] /home/henrique/Desktop/Godot_v3.1-stable_x11.64() [0x7bfc4e] (??:?)
-- END OF BACKTRACE --

I think I can reproduce it consistently now:

Open a scene
See it being corrupted
Try to switch to it
Crash

It also happens if I try to close any scene. So if there is a "corrupted scene", even if I close it, or if I try to close a "healthy scene", Godot crashes

Cannot confirm on Arch Linux, Godot 3.1 stable 64 bit. lscpu reports Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz.
Might be nice to have a trace from rr.

Cannot confirm the above on Ubuntu 18.04 too, but I've got this crash after trying to close some as modified marked scene by selecting "Don't Save" in the "Please Confirm" dialogue. It doesn't seems to be reproducible :-/
Terminal dump:
godot3 -h
Godot Engine v3.2.dev.custom_build.06ebf4c - https://godotengine.org

godot3 -e
OpenGL ES 2.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'acheesements' is not declared in the current scope.
   At: res://actors/Astromouse/star_mouse.gd:33.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'acheesements' is not declared in the current scope.
   At: res://interface/helper.gd:28.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
ERROR: load_source_code: Condition ' err ' is true. returned: err
   At: modules/gdscript/gdscript.cpp:813.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:2172.
ERROR: _load: Failed loading resource: res://actors/abstract_gravity_body.gd
   At: core/io/resource_loader.cpp:285.
SCRIPT ERROR: GDScript::reload: Parse Error: Could not load base class: res://actors/abstract_gravity_body.gd
   At: res://objects/Blackhole/blackhole.gd:2.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
SCRIPT ERROR: GDScript::reload: Parse Error: Identifier 'skins' is not declared in the current scope.
   At: res://screens/achievements_screen/skins_handler.gd:6.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.
ERROR: load_source_code: Condition ' err ' is true. returned: err
   At: modules/gdscript/gdscript.cpp:813.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:2172.
ERROR: _load: Failed loading resource: res://screens/abstract_screen.gd
   At: core/io/resource_loader.cpp:285.
SCRIPT ERROR: GDScript::reload: Parse Error: Could not load base class: res://screens/abstract_screen.gd
   At: res://screens/title_screen/title_screen.gd:1.
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:580.

Running: bin/godot.x11.opt.tools.64 --path /issues-prs/i27125-scene-switch/test-project --remote-debug <IP_ADDRESS>:6007 --allow_focus_steal_pid 15178 --position 200,165
OpenGL ES 2.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
WARNING: _update_root_rect: Font oversampling does not work in 'Viewport' stretch mode, only '2D'.
   At: scene/main/scene_tree.cpp:1241.
ERROR: _load: Condition ' !f ' is true. returned: ERR_CANT_OPEN
   At: scene/resources/dynamic_font.cpp:149.
ERROR: get_node: Node not found: ../Level/RightCometSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/RightCometSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/LeftStarSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/LeftStarSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/LeftCometSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/LeftCometSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/RightStarSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/RightStarSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: get_node: Node not found: ../Level/BlackholeSpawner:position
   At: scene/main/node.cpp:1382.
ERROR: _ensure_node_caches: On Animation: 'slide', couldn't resolve track:  '../Level/BlackholeSpawner:position'
   At: scene/animation/animation_player.cpp:243.
ERROR: _get_modified_time: Failed to get modified time for:
   At: drivers/unix/file_access_unix.cpp:292.
ERROR: _load: No loader found for resource: res://
   At: core/io/resource_loader.cpp:285.

handle_crash: Program crashed with signal 11
Dumping the backtrace.
-- END OF BACKTRACE --
Aborted

I think I found the trigger for this crash, can you guys test the following @bojidar-bg and @capnm

Create a new scene, pick any Node type as root
Add a child
Use the interface to connect the child's tree_exited signal to the parent's queue_free method
Save the scene
Open a new scene
Try to switch back

Would be good if someone who can reproduce it can try with a debug build (scons p=x11, don't strip the binary) to have a backtrace.

A reproducible backtrace with your recipe;)
https://github.com/godotengine/godot/issues/27125#issuecomment-473578498
godot3 -e
OpenGL ES 3.0 Renderer: AMD Radeon HD 7700 Series (CAPE VERDE, DRM 3.23.0, 4.15.0-46-generic, LLVM 7.0.0)
ERROR: emit_signal: Error calling method from signal 'node_added': 'CanvasItemEditor::_tree_changed': Cannot convert argument 1 from Object to Object.
   At: core/object.cpp:1238.
ERROR: add_node: Condition ' !p_node->is_inside_tree() ' is true.
   At: editor/editor_data.cpp:994.
handle_crash: Program crashed with signal 11
Dumping the backtrace.
-- END OF BACKTRACE --
Aborted

The problem is that the directly connected object methods are apparently executed after the scene tab is selected. If you connect something less dangerous, you will just get an "interesting" effect:

Hmm, I find this kinda strange, these callbacks shouldn't happen in the editor, the Node isn't set totool so, is kinda strange that these interactions happen.

Maybe all connections with the Save flag on should be completely disabled in the editor, not just swept under the rug by assuming they are connected to placeholder script instances?

I have this backtrace when I try to open all scenes at one time:(it can be easily selected when you search .tscn in grid view in filesystem dock and then select and open all)
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20) [0x7fcf4cc40f20] (??:0)
[2] HashMap<Variant, List<Pair<Variant const*, Variant>, DefaultAllocator>::Element*, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::getptr(Variant const&) const (/home/rafal/Pulpit/godot/./core/hash_map.h:330)
[3] HashMap<Variant, List<Pair<Variant const*, Variant>, DefaultAllocator>::Element*, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::has(Variant const&) const (/home/rafal/Pulpit/godot/./core/hash_map.h:287)
[4] OrderedHashMap<Variant, Variant, VariantHasher, VariantComparator, (unsigned char)3, (unsigned char)8>::has(Variant const&) const (/home/rafal/Pulpit/godot/./core/ordered_hash_map.h:241)
[5] Dictionary::has(Variant const&) const (/home/rafal/Pulpit/godot/core/dictionary.cpp:136)
[6] Object::has_meta(String const&) const (/home/rafal/Pulpit/godot/core/object.cpp:1043)
[7] EditorNode::get_object_icon(Object const*, String const&) const (/home/rafal/Pulpit/godot/editor/editor_node.cpp:3331 (discriminator 1))
[8] EditorNode::_update_scene_tabs() (/home/rafal/Pulpit/godot/editor/editor_node.cpp:142 (discriminator 3))
[9] EditorNode::_notification(int) (/home/rafal/Pulpit/godot/editor/editor_node.cpp:257)
[10] EditorNode::_notificationv(int, bool) (/home/rafal/Pulpit/godot/editor/editor_node.h:100 (discriminator 14))
[11] Object::notification(int, bool) (/home/rafal/Pulpit/godot/core/object.cpp:954)
[12] SceneTree::_notify_group_pause(StringName const&, int) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:969)
[13] SceneTree::idle(float) (/home/rafal/Pulpit/godot/scene/main/scene_tree.cpp:518 (discriminator 3))
[14] Main::iteration() (/home/rafal/Pulpit/godot/main/main.cpp:1886)
[15] OS_X11::run() (/home/rafal/Pulpit/godot/platform/x11/os_x11.cpp:3006)
[16] /usr/bin/godot(main+0xdc) [0x116bbb3] (/home/rafal/Pulpit/godot/platform/x11/godot_x11.cpp:56)
[17] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7fcf4cc23b97] (??:0)
[18] /usr/bin/godot(_start+0x2a) [0x116ba1a] (??:?)

Without an associated script, it is generally not possible to decide whether the signal should be active as tool mode or not. I think this should not be allowed or at least properly documented.

Without an associated script, it is generally not possible to choose whether the signal should be active as tool mode or not. I think this should not be allowed or at least properly documented. (I didn't know that the direct callbacks work, it's actually a surprise to me that Godot 2.1.x has the same issue.)
godot21.zip

I think I reported a similar issue https://github.com/godotengine/godot/issues/13394 and https://github.com/godotengine/godot/issues/13070 is also related

I think I reported a similar issue #13394 and #13070 is also related

Oh, there is already patch for this https://github.com/godotengine/godot/pull/22033
but the CTO for some reason preferred to paper over the issue.


Reduce noise

IMO already well formatted, good job lines are pretty useless, especially on big projects. Currently it's not possible to silence them without some bash magic since all output is printed to stderr. Would it make sense to provide an option to not print these lines?

tl;dr - I don't plan for more fine-grained control over output than what's currently available.
When multiple files (or a directory) are given on the command line, the user wants to know which files matched. This is why Black outputs a line for every file. Whether the file was changed or not is secondary.
If this information is useless for you, you can redirect it to a file. It's always produced on stderr so the "Bash magic" is as simple as black . 2>/tmp/black_last.log. You could even redirect to /dev/null but keeping it in a file instead is helpful in the case when it returns with a non-zero exit code, indicating an internal error. Most integrations (like PyCharm's File Watchers) will do this automatically for you.
If you would like to only know about files that changed, you can grep -v "good job" /tmp/black_last.log. I don't think every small tweak like this should be implemented in every tool.

I agree with you that more configuration options is not ideal, but maybe these "good job" lines are not needed at all?

When multiple files (or a directory) are given on the command line, the user wants to know which files matched.

I very much doubt that people really check if black matched every file in the provided path.
Other tools such as isort and flake8 don't print anything for 'good' files.

I disagree. When you try out Black for the first time and it won't do anything with your file, you'll be wondering if it even works. I think an encouragement saying "hey, I looked at your file and wouldn't change a thing!" is just good user experience.
If you only want to see which files changed, git status or find . -mtime -1m will tell you.
Flake8 is different because it's goal is to produce warnings. No warnings = good. It doesn't modify files. I don't know about isort's standard output, I don't use it.
Sorry that I'm protecting the status quo so stubbornly here but I'm pretty sure the minute I tweaked it, somebody else would open an issue asking for the opposite thing. So I'm going to leave this as is.

I very much respect your decision, but wanted to say that user experience won't be hurt since black prints summary at the very end.
All done! ✨ 🍰 ✨
1 file reformatted, 788 files left unchanged.


API base url 설정

🤔 해결하려는 문제가 무엇인가요?

프로덕션 환경에서 https://api.nalab.me, 이외 환경에서 https://testapi.nalab.me로 요청되도록 설정했어요

Codecov Report
Patch and project coverage have no change.

Comparison is base (c0b2921) 91.90% compared to head (6b6ff84) 91.90%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #201   +/-   ##
=======================================
  Coverage   91.90%   91.90%
=======================================
  Files          38       38
  Lines         284      284
  Branches       52       52
=======================================
  Hits          261      261
  Misses         23       23

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Update dependency to ui-router

Because of change package name in ui-router.
Old name causes warning on npm:
npm WARN<EMAIL_ADDRESS>requires a peer of angular-ui-router@* but none was installed.

Coverage remained the same at 93.91% when pulling d9a87b0164167a9ef338b57904a04b445f81cc49 on nikmodern:master into ec48978b3f5091dd50207063e5ed268d630af051 on Narzerus:master.


Support HMR

close #3
Please try it with this config:

webpack.config.ts

import { resolve } from 'path'
import { Configuration } from 'webpack'
import WebExtensionTarget = require('webpack-target-webextension')
export default function (): Configuration {
    return {
        target: WebExtensionTarget(),
        entry: {
            background: resolve(__dirname, 'src/background.js'),
            content: resolve(__dirname, 'src/content.js'),
            options: resolve(__dirname, 'src/options.js'),
        },
        mode: 'development',
        optimization: {
            // Chrome bug https://bugs.chromium.org/p/chromium/issues/detail?id=1108199
            splitChunks: { automaticNameDelimiter: '-' },
        },
        output: {
            path: resolve(__dirname, 'js/'),
            publicPath: 'js/',
        },
        devServer: {
            // Have to write disk cause plugin cannot be loaded over network
            writeToDisk: true,
            compress: false,
            hot: true,
            hotOnly: true,
            // WDS does not support chrome-extension:// browser-extension://
            disableHostCheck: true,
            injectClient: true,
            injectHot: true,
            headers: {
                // We're doing CORS request for HMR
                'Access-Control-Allow-Origin': '*',
            },
            // If the content script runs in https, webpack will connect https://localhost:HMR_PORT
            https: true,
        },
    }
}

package.json

{
    "dependencies": {
        "@types/webpack": "^4.41.22",
        "@types/webpack-dev-server": "^3.11.0",
        "serve": "^11.3.2",
        "ts-node": "^9.0.0",
        "typescript": "^4.0.3",
        "webpack": "^4.44.2",
        "webpack-dev-server": "^3.11.0",
        "webpack-target-webextension": "^0.1.3"
    },
    "scripts": {
        "start": "webpack-dev-server --mode development"
    }
}

options.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
    </head>
    <body>
        <script src="js/options.js"></script>
    </body>
</html>

background.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
    </head>
    <body>
        <script src="js/background.js"></script>
    </body>
</html>

manifest.json

{
    "name": "Webpack Web Extension HMR",
    "version": "1.0.0",
    "manifest_version": 2,
    "permissions": ["<all_urls>"],
    "background": { "page": "background.html" },
    "options_ui": { "page": "options.html", "open_in_tab": true },
    "web_accessible_resources": ["*.js", "*.json"],
    "content_security_policy": "script-src 'self' blob: filesystem: 'unsafe-eval';",
    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["js/content.js"]
        }
    ]
}

src/background.js

import { log } from './shared'

console.log(log())
if (module.hot) {
    module.hot.accept('./shared', (nextMod) => {
        console.log(log())
    })
}

src/content.js

import { log } from './shared'

console.log(log())

module.hot.accept('./shared', () => {
    console.log(log())
})

src/options.js

import { log } from './shared'

const ele = document.createElement('h1')
document.body.appendChild(ele)
ele.innerText = log()

module.hot.accept('./shared', () => {
    ele.innerText = log()
})

src/shared.js

export function log() {
    return 'version 0'
}

Then run npm run start and change src/shared.js to see how HMR works.

@crimx hi did you try this?

Hi sorry for the delay. I'll take the time to test it later today.

I've integrated the hmr example into the project. Please pull and take a look.

I works well. Thanks for the PR.

Published.

I have another question. Now we require users to manually change their webpack config, is it possible to modify the config in the plugin?

I think this belongs to another layer. In webpack source the default config is modified somewhere else base on the target name.


Planning calendar interval

Hi i implement this feature referring to #3149.
I had to recreate the pull request as I could not reopen the previous one (#3465)
The steps to implement are:

update snapshot calculate
update calculation start date appointment
update documentation PlanningCalendarRow
Open Point:
min-width
add testcase

Hello @salvatorelaspata,
Thank you for your pull request. I've created an internal record DINC0209322. The status of the issue will be updated here in GitHub.
Regards,
Teodor

Hello @salvatorelaspata,
Since a change in the QUnit tests is necessary following this modification, would it be possible to make the change in a single commit? (The automatic acceptance of this change works only if it is a single commit.) After that, I will make the necessary adjustments in the tests. I apologize for the inconvenience caused.
Regards,
Todor

Thanks! The pull request has been merged into the openui5 repository. The change will be in the following UI5 version: 1.128

Implemented with https://github.com/SAP/openui5/commit/8a6159b2d9725df1b27075b9c96c620d01c30899


cmd/go: provide some way to bundle raw JavaScript during wasm compilation

What version of Go are you using (go version)?
Go 1.11
Does this issue reproduce with the latest release?
Yes
What did you expect to see?
GopherJS supports the option to bundle raw JavaScript in the compiled output by including files named *.inc.js in the Go source directory. Go's wasm support doesn't offer anything comparable, as far as I am aware.
What did you see instead?
I would like to see the functional equivalent included when compiling to a wasm target.
I say functionally equivalent, because identical might be dangerous, in that it could make isomorphic GopherJS/GoWASM packages difficult, if there are ever incompatibilities.  It is likely that one might need a particular *.inc.js file for GopherJS support, and a separate one for Go/WASM support. And at least at present, build tags in these files are broken for GopherJS (see https://github.com/gopherjs/gopherjs/issues/468), so unless that is resolved, or some other mutual-exclusion scheme is provided, the simplest path forward may be to use an entirely different convention for Go/WASM.
No doubt, many lessons from CGO can also be applied here, but this is an area where I have no direct experience.

This seems like an area where it would help to see a specific proposal.

Drive-by thought.
Is there some trick that can be performed here using eval in JavaScript? You'd want to avoid any sort of string encoding conversions, i.e. have pre-compiled the correct encoding within the .wasm output, but feels like it would be possible?
That way we could avoid the go tool needing to do anything special; a go generate-r could do the bundling and encoding, with an init()-time function then being responsible for calling eval.

Is there some trick that can be performed here using eval in JavaScript?

If I'm not mistaken, this would require that any such programs be executed with a potentially dangerous content security policy.

@flimzy seems to work unless I'm missing something really obvious?
cd $(mktemp -d)
cat <<EOD > main.go
package main

import (
	"syscall/js"
)

func init() {
	js.Global().Call("eval", "(typeof window !== 'undefined' ? window : global).banana = (function() { console.log(\"hello, world\") })")
}

func main() {
	js.Global().Call("banana")
}
EOD
GOOS=js GOARCH=wasm go build -o main.wasm main.go
$GOROOT/misc/wasm/go_js_wasm_exec main.wasm

gives:
hello, world

(as it does in the browser)

@myitcv: I believe the default CSP is wide-open, allowing eval. But if you tighten down security, you'll typically disallow the unsafe-eval option, which would prohibit that, I believe.

@flimzy got it, thanks. In which case, doesn't think preclude the loading of any JavaScript from within a WASM context?

@myitcv I don't know the answer to that.

I've just read the CGO introduction, to familiarize myself with the approach taken there. Based on that, my more specific proposal would be the following:
A new special import package (akin to import "C") would be added. Name to be determined, but for the purpose of this proposal, let's assume we use import "WASM".
When the Go tool sees this special import is used in a package, then any *.js files in the same directory will be included in the wasm output.  At runtime, this code is to be executed before package initialization (that is to say, the Go code should be able to safely assume that all included *.js files have been successfully executed).
The contents of each *.js file should be wrapped in a context to provide access to a special this variable.  Exmaple:
(function() {
    // Contents of a single *.js file here
}).call(goWASM)

This goWASM variable would then be accessible from Go via the WASM package.
This allows the included *.js files to define variables or functions which can be accessed from Go, without polluting the global namespace.
A simple example:
main.js:
this.a = 123;
this.b = function(x) { console.log(x) };

main.go:
package main

import "WASM"

func main() {
    this := WASM.This // WASM.This is just an instance of js.Value; its contents defined by foo.js above
    a := this.Get("a").Int() // int(123)
    this.Call("b", "some text") // logs "some text" to the console
}

Build constraints for the *.js files ought to be followed, as per usual rules.
A few additional thoughts I haven't fully considered:

The import package name (WASM above) and the single exported symbol (WASM.This) should be considered. No doubt better alternatives for one or both exist.
Execution order of *.js files, when there are multiples, may be important, so should probably be defined.
This could break compatibility with GopherJS (as mentioned in the original issue description above). To resolve this, go could ignore *.inc.js files, as a special case.

The Go compiler generates wasm binaries. The only way to include JavaScript code in a wasm binary is to use eval, but it is incompatible with a secure CSP. If you accept this, then you can use eval right now, there is no extra support necessary in the Go compiler.
I see no simple way on how something like the *.inc.js files of GopherJS can be possible with wasm. The logic you describe above might be possible, but I think it should not be part of the Go compiler itself. The best way would probably be to use require with some existing JS bundler and maybe have this JS bundler scan for .js files in the Go tree.


fix: upgrade goutils to v1.1.1 to address CVE-2021-4238 [v1.6]

What type of PR is this?

Uncomment only one  /kind line, and delete the rest.
For example, > /kind bug would simply become: /kind bug

/kind bug

/kind cleanup
/kind failing-test
/kind enhancement
/kind documentation
/kind code-refactoring

What does this PR do / why we need it:
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes #?
Test acceptance criteria:

[ ] Unit Test
[ ] E2E Test

How to test changes / Special notes to the reviewer:

/retest

/retest

/test v4.10-kuttl-sequential

/approve


Question about Resticker

HI
I was wondering if someone could shed some light on the questions i have
Currently i have working Resticker but there is a few things could not get it working

the mounting seems that its only be able to mount in the container, is it possible to mount the files in the host?

docker-compose exec sftp_backup restic mount  /media/view

The restore part i was able to correctly run it but not sure if this is the correct method

docker-compose down
then i remove the HTML folder
create the html folder
docker-compose up -d
docker-compose exec sftp_backup restic -r sftp:root@<IP_ADDRESS>:/home/new_backup restore d91884a2 --include /tempwp/html --target /

This lets me restore the files into the HTML folder of the host, but using the docker-compose up after created the HTML folder creates an empty backup
i tried to delete the HTML while the restic container are turned on and run the restore but does not restore not sure if i missed something

i see the restic creates logs in each container in .json format is it possible to keep a certain about of logs?

I also configured correctly the SMTP alert but cant seem to get information of the log in the email attaching the docker-compose below

version: "3.3"

services:
  sftp_backup:
    image: mazzolino/restic
    restart: always
    hostname: wpsftp-backup
    privileged: true
    environment:
      RUN_ON_STARTUP: "true"
      PRE_COMMANDS: |-
           sleep 10
           docker exec root_db_1 mysqldump -u root -pthepassword wordpress | restic backup --tag mysqlbackupsft --stdin --stdin-filename wordpress.sql
           docker exec compose_db_1 pg_dump -U postgres -d openproject | restic backup --tag pgsqlbackupsftp --stdin --stdin-filename openproject.sql
           restic unlock
      POST_COMMANDS_FAILURE: |-
        curl -X POST --data "{\"title\": \"Backup failed\", \"body\": \"\"}" http://notify:5000
      POST_COMMANDS_SUCCESS: |-
        curl -X POST --data "{\"title\": \"Backup successfully completed\", \"body\": \"\"}" http://notify:5000
      BACKUP_CRON: "0 30 3 * * *"
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
      RESTIC_BACKUP_SOURCES: /tempwp/html
      RESTIC_BACKUP_ARGS: >-
        --tag docker-volumessft
        --verbose
      RESTIC_FORGET_ARGS: >-
        --keep-last 70
      TZ: America/Bogota
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse
    volumes:
      - /mnt/:/mnt/
      - /tempwp/html/:/tempwp/html/
      - /root/.ssh/:/root/.ssh/
      - /var/run/docker.sock:/var/run/docker.sock
      - /lib/modules:/lib/modules
    networks:
      - notification

  sftp-prune:
    image: mazzolino/restic
    hostname: wpsftp-prune
    environment:
      RUN_ON_STARTUP: "true"
      PRUNE_CRON: "0 0 4 * * *"
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
    volumes:
      - /root/.ssh/:/root/.ssh/

  sftp_check:
    image: mazzolino/restic
    hostname: wpsftp-check
    environment:
      RUN_ON_STARTUP: "false"
      CHECK_CRON: "0 15 5 * * *"
      RESTIC_CHECK_ARGS: >-
        --read-data-subset=10%
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
      TZ: America/Bogota
    volumes:
      - /root/.ssh/:/root/.ssh/

  notify:
    image: mazzolino/apprise-microservice:0.1
    environment:
      NOTIFICATION_URLS: mailtos://sistemas4:mypassword@domain.com.co/sistemas4@domain.com/sistemas2@domain.com?smtp=mail.domain.com.co&port=465&name=Docker%20Backup%20Notification
    networks:
      - notification

networks:
  notification:

Thank you

It might be possible to achieve that if you mount a folder from the host into the container with a volume using a special bind-propagation, see https://docs.docker.com/storage/bind-mounts/. This sounds hairy and I am not proficient in this.
Looks to me like this should work, but I guess I don't understand you exactly. The backup is always empty?
Does it? That is new to me. Everything is logged to stdout/stderr so everything goes straight to the docker logs. So you can use docker-compose logs to get them.
It is currently not possible to send the log output using post commands. I guess it should be possible to implement this in the future though. As a workaround, you might be able to run docker logs sftp_backup in your post commands and use the output, something like this: curl -X POST --data "{\"title\": \"Backup successfully completed\", \"body\": \"$(docker logs sftp_backup)\"}" http://notify:5000. Not sure about this though.

Thanks for the reply,

will check it out and post back
im a bit confused on the restore part what would be the correct procedure to restore?
for example i tried creating a scenario deleting the HTML folder which the restic docker backs it up
as soon as i delete the html
i then try to restore  with this command

   docker-compose exec sftp_backup restic -r sftp:root@<IP_ADDRESS>:/home/new_backup restore 167bcec1 --include /tempwp/html --target /
i then recheck the /tempwp and i don't see the html folder restored
i then try to create the html folder manually and re run the restore command but still does not show no information in the html folder

yeah i was checking the logs in the location
/var/lib/docker/containers/fac437a62fbf7fe8289a970f7f4fac7badfc2810a7c08463494146d781aa13b0# cat fac437a62fbf7fe8289a970f7f4fac7badfc2810a7c08463494146d781aa13b0-json.log
it seems that if the docker restarts or stays on it keeps the logs but if i run docker-compose down it removes that information is there a way i can make the logs persistent?

as for the output it seems that its giving an error

ERROR: yaml.parser.ParserError: while parsing a block mapping
  in "./docker-compose.yml", line 10, column 7
expected <block end>, but found '<block mapping start>'
  in "./docker-compose.yml", line 20, column 9

Thank you again

I also have this problem

I also have this problem

which problem do you have?

@killmasta93

The restore command you posted seems correct to me.  If you have the /tempwp/html volume mounted as shown in your config then this should work. Not sure what is going wrong there.. You might exec into the container and look if the hosts' /tempwp/html folder is really correctly available in there.

it seems that if the docker restarts or stays on it keeps the logs but if i run docker-compose down it removes that information is there a way i can make the logs persistent?

You have a variety of options for configuring logging differently

as for the output it seems that its giving an error

Mhh.. Your config as you showed above seems correct. Did you change anything in your docker-compose.yml in the meantime?

Hi @djmaze thank you so much for the reply,
2.
allright these were the steps that i took which worked
as for the example i deleted the html folder in the location of /tempwp/
it seems that i needed to turn off the wordpress container  first
, then restart the resticker container  then run
 docker-compose exec sftp_backup restic -r sftp:root@<IP_ADDRESS>:/home/new_backup restore 167bcec1 --include /tempwp/html --target /
not sure if this is the correct way

thank you will take alook at it

as for the config same haven't changed it

version: "3.3"

services:
  sftp_backup:
    image: mazzolino/restic
    restart: always
    hostname: wpsftp-backup
    privileged: true
    environment:
      RUN_ON_STARTUP: "true"
      PRE_COMMANDS: |-
           sleep 10
           docker exec root_db_1 mysqldump -u root -pthepassword wordpress | restic backup --tag mysqlbackupsft --stdin --stdin-filename wordpress.sql
           docker exec compose_db_1 pg_dump -U postgres -d openproject | restic backup --tag pgsqlbackupsftp --stdin --stdin-filename openproject.sql
           restic unlock
      POST_COMMANDS_FAILURE: |-
        curl -X POST --data "{\"title\": \"Backup failed\", \"body\": \"\"}" http://notify:5000
      POST_COMMANDS_SUCCESS: |-
#        curl -X POST --data "{\"title\": \"Backup successfully completed\", \"body\": \"\"}" http://notify:5000
        curl -X POST --data "{\"title\": \"Backup successfully completed\", \"body\": \"$(docker logs sftp_backup)\"}" http://notify:5000
      BACKUP_CRON: "0 30 3 * * *"
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
      RESTIC_BACKUP_SOURCES: /tempwp/html
      RESTIC_BACKUP_ARGS: >-
        --tag docker-volumessft
        --verbose
      RESTIC_FORGET_ARGS: >-
        --keep-last 70
      TZ: America/Bogota
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse
    volumes:
      - /mnt/:/mnt/
      - /tempwp/html/:/tempwp/html/
      - /root/.ssh/:/root/.ssh/
      - /var/run/docker.sock:/var/run/docker.sock
      - /lib/modules:/lib/modules
    networks:
      - notification

  sftp-prune:
    image: mazzolino/restic
    hostname: wpsftp-prune
    environment:
      RUN_ON_STARTUP: "true"
      PRUNE_CRON: "0 0 4 * * *"
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
    volumes:
      - /root/.ssh/:/root/.ssh/

  sftp_check:
    image: mazzolino/restic
    hostname: wpsftp-check
    environment:
      RUN_ON_STARTUP: "false"
      CHECK_CRON: "0 15 5 * * *"
      RESTIC_CHECK_ARGS: >-
        --read-data-subset=10%
      RESTIC_REPOSITORY: sftp:root@<IP_ADDRESS>:/home/new_backup
      RESTIC_PASSWORD: MyPassWord
      TZ: America/Bogota
    volumes:
      - /root/.ssh/:/root/.ssh/

  notify:
    image: mazzolino/apprise-microservice:0.1
    environment:
      NOTIFICATION_URLS: mailtos://sistemas4:mypassword@domain.com.co/sistemas4@domain.com/sistemas2@domain.com?smtp=mail.domain.com.co&port=465&name=Docker%20Backup%20Notification
    networks:
      - notification

networks:
  notification:

Thank you


[Fix] Use CUDA 12.4 in the build system so that the current build system stops failing

Very recently, a pull request was merged to add PyTorch 2.5 support (https://github.com/Dao-AILab/flash-attention/pull/1284)
However, this pull request seems to have accidentally broken the build system, which I uncovered when trying to build wheels for PyTorch 2.5.
The problem is that the build system builds with CUDA 12.3, but PyTorch doesn't have any 12.3
releases. See https://github.com/EthanSteinberg/flash-attention/actions/runs/11762473443/job/32765408364#step:8:56 for the failed run.
This PR simply changes the build system to build against 12.4.1 instead.
As an aside, if this PR gets accepted, I would really appreciate if you can do a flash-attention 2.6.4 release that has PyTorch 2.5 support.
I have prepared a cherry pick branch for a 2.6.4 that is the minimal change over 2.6.3 that only has the two commits needed for a PyTorch 2.5 release: https://github.com/EthanSteinberg/flash-attention/tree/cuda_124_rebase
https://github.com/EthanSteinberg/flash-attention/actions/runs/11762648654 is my test run that this appears to build. (Note that it still failed because I don't have permission to upload artifacts. But the wheel did build successfully).

We've built fine with CUDA 12.3 before (e.g. torch 2.4) even though pytorch has never had a release with 12.3.
I'm not sure I understand the problem here.

@tridao
The problem is that https://github.com/Dao-AILab/flash-attention/pull/1284/files#diff-551d1fcf87f78cc3bc18a7b332a4dc5d8773a512062df881c5aba28a6f5c48d7R122 updated the version limits so that the code tries to pull 12.3 even when it doesn't exist.
Previously there was a maximum limit of 12.1, so it would pull 12.1 even when building with 12.3
But that maximum got increased to 12.4 so the code started pulling 12.3.

Ah I see, I understand now. Thanks!

Yes i'm running tests right now to cut a release


Allow the next major version of unexpected

Allow the next major version of unexpected

Coverage remained the same at 94.297% when pulling ac75c94dbc8047c5662f2aaf48424ec1732c15e3 on ssimonsen/unexpected-11.0.0-4 into 2cfbeaaf0f6a45a43dbc6091b6e6860999766ffb on master.

<EMAIL_ADDRESS>


Update setup.sh to test for existing binary.

@ddragosd see if this change adds any benefits; and I can turn off the -e -x as well.

👍 @mrutkows


Customizeable MediaStorage

Hey,
At $dayjob we've encountered an issue where using the temporary storage can fail, since we have multiple instances serving requests. When trying to retrieve the file, it might not be in that instance's file system.
We've found that MediaStorage would be great, except we don't want to upload our files to the public media storage, but to a private S3 bucket.
I've implemented that by subclassing BaseStorage and almost exactly copy & pasting MediaStorage's internals, except that instead of default_storage I'm using our own internal PROTECTED_STORAGE.
After this lengthy introduction, I'd like to ask if you'd be interested in a Pull Request where there's a ConfigurableStorage class, that accepts an instance of storage. MediaStorage would be a subclass of ConfigurableStorage using default_storage. ConfigurableStorage would also be public to allow defining custom storage classes.
If you're interested, let me know, and I'll prepare a PR ✌

The storage classes have had some modest refactoring in recent releases.  I'm now planning release 4.  If there is still any interest in this PR, then aiming for v4 would be great.

Hi @duck-nukem will you be contributing to this? We are encountering this exact issue when we scale to multiple instances.

@Dsujan hey, sorry I don't think I'll have capacity anytime soon to contribute :(

Hi @matthewhegarty, I can see you have tagged this issue for the v4 release. Is this one planned for the fix or somebody has already fixed it ?

No, it's not planned and no-one is working on it.  I don't know if it will go into v4.  Happy to consider any PRs.

It's been some time so not sure I remember all the details, but we basically wanted to have what MediaStorage offers, except we didn't want to store our files in MEDIA_ROOT, but in a custom storage - it happened to be a private S3 bucket.
So we copied the implementation of MediaStorage and customised it like:
+from .storages import PROTECTED_STORAGE  # S3Storage instance

-class MediaStorage(BaseStorage):
+class PrivateStorage(BaseStorage):
-   MEDIA_FOLDER = "django-import-export"

    def __init__(self, **kwargs):
-       # issue 1589 - Ensure that for MediaStorage, we read in binary mode
-       kwargs.update({"read_mode": "rb"})
        super().__init__(**kwargs)

    def save(self, data):
        if not self.name:
            self.name = uuid4().hex
-       default_storage.save(self.get_full_path(), ContentFile(data))
+       PROTECTED_STORAGE.save(self.get_full_path(), ContentFile(data))

    def read(self):
-       with default_storage.open(self.get_full_path(), mode=self.read_mode) as f:
+       with PROTECTED_STORAGE.open(self.get_full_path(), mode=self.read_mode) as f:
            return f.read()

    def remove(self):
-       default_storage.delete(self.get_full_path())
+       PROTECTED_STORAGE.delete(self.get_full_path())

    def get_full_path(self):
-       return os.path.join(self.MEDIA_FOLDER, self.name)
+       return PROTECTED_STORAGE.path(self.name)

once again I'd like to emphasise that this is mostly just pseudo-code as it's been years since I opened this issue and I only vaguely remember the details.
Does this help @matthewhegarty ?

This will be released in the next beta release of v4.


remove specific IDE m2e files

those files are specific to m2e they shouldn;t be stored in the Apache Maven sources!
Following this checklist to help us incorporate your
contribution quickly and easily:

[ ] Make sure there is a JIRA issue filed
for the change (usually before you start working on it).  Trivial changes like typos do not
require a JIRA issue.  Your pull request should address just this issue, without
pulling in other changes.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Format the pull request title like [MENFORCER-XXX] - Fixes bug in ApproximateQuantiles,
where you replace MENFORCER-XXX with the appropriate JIRA issue. Best practice
is to use the JIRA issue title in the pull request title and in the first line of the
commit message.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Run mvn clean verify to make sure basic checks pass. A more thorough check will
be performed on your pull request automatically.
[ ] You have run the integration tests successfully (mvn -Prun-its clean verify).

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

[ ] I hereby declare this contribution to be licenced under the Apache License Version 2.0, January 2004

[ ] In any other case, please file an Apache Individual Contributor License Agreement.

cc @HannesWell @kwin

Hello @olamy
I think this is a regression for all users of Eclipse and maven-enforcer-plugin. We now have a warning in all our pom files because of this change:

It means this change forces all those projects to each find a way to ignore this warning. And for now I have not found a way to do it on my side.
The goal of this META-INF/m2e/lifecycle-mapping-metadata.xml file is just to declare whether it makes sense to run this plugin in Eclipse or not, so that not all projects have to declare it on their side.
Would you consider reverting this change to help all those projects? Especially given there was no maintenance on this file for 8 years in this project, so not really costing this project anything.
Thanks a lot

@vtintillier Please raise an issue with m2e (at  https://github.com/eclipse-m2e/m2e-core/issues) as the action ignore in https://github.com/eclipse-m2e/m2e-core/blob/e3794059b1250729872daecf9c1ff0b35fc75daf/org.eclipse.m2e.core/lifecycle-mapping-metadata.xml#L130 is the culprit.

Hi @kwin
looks like the ignore in the file you linked to has a different behavior than what we had with the META-INF/m2e/lifecycle-mapping-metadata.xml hosted in maven-enforcer-plugin itself. Before this file was removed, there would be no warning at all in Eclipse, and enforcer would not run as part of the Eclipse build.
Now enforcer still don't run, but we have this warning.
I asked about this in m2e too: https://github.com/eclipse-m2e/m2e-core/discussions/1229
But I think the easiest way forward is to add this file again.
Thanks

Sorry for the disagreement but this file should have never been added..
But your problem should be solved by m2e plugin.
Imagine if every single IDE asks to host their configuration file.


Quick iOS 11 compatibility fix

Drop remote UIEvents in favour of MPRemoteCommandCenter
– this move fixes compatibility with iOS 11 – mainly allows the Command Centre and Lock Screen audio widgets to work with the implementing app properly again
– MPRemoteCommandCenter is available since iOS 7.1

I would also recommend bumping the whole project to a deployment version of at least iOS 7.1 as this is probably the most one may get when it comes to back-compatibility offered by Apple. 😉


Refactor add_friend function for readability and efficiency

This pull request refactors the add_friend function to improve readability and efficiency. The main changes include:

Used get_object_or_404: Simplified user and friend retrieval, ensuring a 404 error is raised if the user or friend does not exist.
Default Value for Note: Added a default empty string for the note parameter to avoid None type issues.
Consolidated Checks: Combined checks for existing relationships and object retrieval for better readability.
Used Friends.objects.create(): Simplified the creation of new friend relationships.

Please review the changes and let me know if there are any suggestions or further improvements needed.

On it..


There isn't any text in this issue - did you mean to delete it?

Based on the edit, I guess OP managed to fix things (by updating the dynamicprompts library).


[Example] Change widget app to ui app @open sesame 05/29 20:16

Changes proposed in this PR:

The scaffolding was widget app, but widget has one layout
limitation. This PR ports widget app to ui app.

Minor changes proposed in this PR:

Add handler for 'routes/to' signal.

Self evaluation:

Build test: [X]Passed [ ]Failed [ ]Skipped
Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.4.20191203. Thank you for submitting PR #116. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnsuite.mooo.com/.

To contributor, We have used 'Signed-off-by:' notation by default to handle the license issues, that result from contributors. Note that 'Is there a Signed-off-by line?' is important because lawyers tell us we must have to it to cleanly maintain the open-source license issues even though it has nothing to do with the code itself.

:octocat: cibot: @zhoonit, One of the module of prebuild group is failed. If you want to get a hint to fix this issue, please go to https://github.com/nnstreamer/nntrainer/wiki/.

:octocat: cibot: Oooops. The administrator of CI server must install a debian package to support 'ndk-build' command.

:octocat: cibot: Oooops. The administrator of CI server must install a debian package to support 'ndk-build' command.

:octocat: cibot: @zhoonit, A builder checker could not be completed because one of the checkers is not completed. In order to find out a reason, please go to http://nnsuite.mooo.com/nntrainer/ci/repo-workers/pr-checker/116-202005292044530.40777397155762-7b346c5a3854958afb33175cd5ee530ab20605b4/.

Recently, we updated CI Server. Due to the some changes of CI Server, you have to rebase with recent master. ( Recent update is mainly android related. )

Recently, we updated CI Server. Due to the some changes of CI Server, you have to rebase with recent master. ( Recent update is mainly android related. )

Recently, we updated CI Server. Due to the some changes of CI Server, you have to rebase with recent master. ( Recent update is mainly android related. )

Updated :)


basedpyright: 1.12.4 -> 1.12.5

Description of changes
Diff:
https://github.com/detachhead/basedpyright/compare/v1.12.4...v1.12.5
Changelog:
https://github.com/detachhead/basedpyright/releases/tag/v1.12.5
Other actions:
Import and use pyright's update.sh to update this package.

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

 nix-shell maintainers/scripts/update.nix --argstr package basedpyright

Going to be running update for following packages:
 - basedpyright-1.12.5

Press Enter key to continue...

Running update for:
 - basedpyright-1.12.5: UPDATING ...
 - basedpyright-1.12.5: DONE.

Packages updated!

kiike  …/nixpkgs    pkgs/basedpyright $!? 
 nix shell .#basedpyright -L
warning: Git tree '/home/kiike/projects/nixpkgs' is dirty

kiike  …/nixpkgs    pkgs/basedpyright $!? 
 cat << EOF > test.py; basedpyright --version; basedpyright test.py
import sys

if sys.platform == "win32":
    a = "a" + 1
EOF
basedpyright 1.12.5
based on pyright 1.1.366
/home/kiike/projects/nixpkgs/test.py
  /home/kiike/projects/nixpkgs/test.py:4:9 - error: Operator "+" not supported for types "Literal['a']" and "Literal[1]" (reportOperatorIssue)
1 error, 0 warnings, 0 notes


Extra question re knowledge security and safety researchers

Could we add an extra question under the question about ethical reflection?
Zijn er kwesties rondom kennisveiligheid en/of de veiligheid van de onderzoeker(s)? ja/nee, zo ja, licht toe.

Under the question about ethical reflection?

Right.... Sorry, long day

Discussed in GC meeting: make this two separate questions:

Zijn er kwesties rondom de veiligheid van de onderzoeker(s) en deelnemers? ja/nee, zo ja, licht toe.

Zijn er kwesties rondom kennisveiligheid? ja/nee, zo ja, licht toe.

Helptekst kennisveiligheid:
Kennisveiligheid gaat over het tijdig signaleren en mitigeren van veiligheidsrisico’s bij wetenschappelijk onderzoek. Voor meer informatie, zie https://intranet.uu.nl/kennisbank/kennisveiligheid.
Knowledge security is about the detection and mitigation of security risks in academic research in a timely manner. For more information, see https://intranet.uu.nl/en/knowledgebase/knowledge-security.

I just noticed that at the end of the form, there are already some related questions about risks, misleading etc. I will discuss this issue with the chairs and let you know.

Yes, the two questions should be added as first questions before the question: "Is er binnen dit onderzoekstraject sprake van misleiding van de deelnemer?"

See email of 26 February with attached the revised text and some additional questions.

So, as of PR #625, all these questions are asked on study end, which means researchers are asked these new questions for every study/trajectory. Today we decided this is mostly fine, but that the question about knowledge security should be asked about the entire proposal/application. This could be on the first page, the submit page, or a new page. We still are not 100% sure about this.

I have discussed the location of the following questions with the chairs of the FEtC-H and we agree that these two questions should appear at the end, as questions about the entire research, not just one trajectory:
•	Zijn er kwesties rondom kennisveiligheid? ja/nee/twijfel, (bij ja/twijfel: licht toe).
•	Zijn er kwesties rondom de veiligheid van / risico’s voor de onderzoeker(s) ja/nee/twijfel, (bij ja/twijfel: licht toe).
Should we discuss where exactly these should appear?

So I was thinking:

we rename the page now named "Overzicht" aka study_end to "Overzicht traject".
then we add a page after the study named "afronding trajecten" or "complete trajectories". Here we then ask the questions about knowledge security and researcher safety.

What do you think of that @djhcapel?

Yes, the page that is now entitled "Overzicht en eigen beoordeling van het gehele onderzoek" should be entitled "Overzicht en eigen beoordeling Traject [x]'.
I think the extra page should be added at the end of 'Trajectories', in the menu 'Overzicht gehele onderzoek', so before 'Formulieren'. Is that possible?
And can this page include brief info on the Trajectories as well?

What would you like to see included in the overview?
I guess we could do a small table with:

Trajectory 1 | [title] | [research type(s)]
Trajectory 2 | [title] | [research type(s)]

Maybe add age groups?
Also, do you have an idea for a small text on this page? Right now I have:
"Onderstaande vragen hebben betrekking op het gehele onderzoek."

I think the suggested overview will do. This should not be too long, because otherwise the questions will not get the attention they deserve.
The suggested text is also fine.


Text not rendered at native resolution on HiDPI monitor (Mac)

See screenshot, with correctly rendered text on the left and neovide on the right. neovide's text is noticeably "pixel-y" compared to the HiDPI text on the left.

This is with blank Vim configuration, using neovide pulled from master and built today using the sdl2-sys downgrade to 0.34.2 per this. Happy to follow up with any additional details that might be useful but off the bat I don't know what those might be. Here's some basic-type details for starters.
MacOS 11.1
❯ neovide -v
Neovide version: 0.6.0

❯ nvim -v
NVIM v0.4.4
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/bin/clang -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/tmp/neovim-20200808-89283-1us0ytm/neovim-0.4.4/build/config -I/tmp/neovim-20200808-89283-1us0ytm/neovim-0.4.4/src -I/usr/local/include -I/tmp/neovim-20200808-89283-1us0ytm/neovim-0.4.4/deps-build/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -I/usr/local/opt/gettext/include -I/tmp/neovim-20200808-89283-1us0ytm/neovim-0.4.4/build/src/nvim/auto -I/tmp/neovim-20200808-89283-1us0ytm/neovim-0.4.4/build/include
Compiled by brew@Catalina

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/Cellar/neovim/0.4.4/share/nvim"

Run :checkhealth for more info

I just noticed that the y under the cursor is shown with the correct resolution, which is interesting.

I just noticed that the y under the cursor is shown with the correct resolution, which is interesting.

I'm facing exactly the same problem. I tried to investigate a little bit. As far as I understand in Neovide there is some code handling HiDPI, that relies on the method scale_factor of Sdl2Window from skulpin. This method computes the scaling factor as ratio of logical size to physical size. However, in my case with 4K display and 200% scaling logical size is equal to the physical size instead of being twice smaller.  I've tried to hardcode 0.5 return value for this method and it worked correctly. But I have no idea why physical size is wrong in skulpin and how to fix it...

I'm facing exactly the same problem. I tried to investigate a little bit. As far as I understand in Neovide there is some code handling HiDPI, that relies on the method scale_factor of Sdl2Window from skulpin. This method computes the scaling factor as ratio of logical size to physical size. However, in my case with 4K display and 200% scaling logical size is equal to the physical size instead of being twice smaller.  I've tried to hardcode 0.5 return value for this method and it worked correctly. But I have no idea why physical size is wrong in skulpin and how to fix it...

Was this version built from current source? or downloaded?

Was this version built from current source? or downloaded?

Built from the current source.

Built from the current source.

Same, FWIW.

I am experiencing the same issues.
sdl2-sys downgrade to 0.34.2 in order to compile.
NVIM v0.4.3
Build type: Release
LuaJIT 2.0.5

Hi guys,
I solved this on my local machine, but I am not sure this is a proper fix as I've never worked with Vulkan or SDL before.
Here's how to reproduce my fix:

Clone neovim and skulpin and override the skulpin repository using my local repo as explained here:
https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html

My sdl2-sys crate has been downgraded to 0.34.2 (not in my fork linked below).

There is a discrepancy between the sdl return value for drawable_size() on my retina display and my additional monitor.
I updated skulpin as so. https://github.com/Handfish/skulpin/commit/6f795bde5a868d6c6dc09285d7c61a6dd89a4770

There is also an issue with dragging the editor from my retina display to my monitor, so I made some changes to neovide. https://github.com/Handfish/neovide/commit/be37f2c6efd45f877cfac61f7d070fda0c0bb3ca

This has made the editor text look sharp on both monitors and fixed the rendering issues when dragging the editor from one to another.

This is an issue on Linux as well

MacOS 11.2.3 had the same problem too.

Yeah, the Retina displays are also HiDPI as well.
On 4/13/21 8:45 AM, nayuxuohz wrote:

MacOS 11.2.3 had the same problem too.
截屏2021-04-13 下午8 44 33
https://user-images.githubusercontent.com/4456413/114554237-14555c80-9c99-11eb-9bb5-c01bc4973526.png
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Kethku/neovide/issues/455#issuecomment-818706326,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAFUMAPRECVPRMI222R66TTIQ4GXANCNFSM4WVX23RQ.

Unfortunately I don't have a mac, so I will need somebody else to help fix this.
There is a winit build in main which can be enabled via the winit compile feature, or the opengl branch is built on winit by default. It is possible that those versions will work better as sdl2 handles dpi strangely.

@Kethku this applies to all HiDPI displays.

I'm not sure thats true. On other operating systems it seems to work fine and scale properly.

@Kethku it's an issue on mine.

Can you give some details? What operating system, what is the dpi scale? What direction is the issue? Does it happen on the opengl branch?

Just saw your linux point. Can you try on opengl?

FWIW, I just built on the opengl branch on my Mac, and the resolution issue is fixed. But the cursor and editor behavior are very strange: every time I move the cursor it jumps way down off the bottom of the window and to the right, and some editor actions such as text input don't appear until I hit escape. But perhaps these issues are orthogonal to the rendering issue here so wanted to let you know that the opengl branch fixes that part.

Can confirm what @valrus says

I think this has been fixed in main. Please reopen if you come back to this and the issue remains.

For linux, it's somewhat fixed for x11, but not for wayland.
On the right - x11, h15 looks reasonable, on the right - wayland, same h15 is too small.

But that's still not correct scaling, terminal uses 11.25 font size, and if i set 11.25 in neovide - it would be too small.


useSearchParams() should be wrapped in a suspense boundary

I'm receiving the following error during the static page generation for /, reset-password, and login when running 'docker compose build':
28.83    Generating static pages (0/16) ...
29.55
29.55  ⨯ useSearchParams() should be wrapped in a suspense boundary at page "/reset-password". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout
29.55
29.55 Error occurred prerendering page "/reset-password". Read more: https://nextjs.org/docs/messages/prerender-error
29.55
29.56  ⨯ useSearchParams() should be wrapped in a suspense boundary at page "/". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout
29.56
29.56 Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error
29.56
29.56
   Generating static pages (4/16)
   Generating static pages (8/16)
29.70
29.70  ⨯ useSearchParams() should be wrapped in a suspense boundary at page "/login". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout
29.70
29.70 Error occurred prerendering page "/login". Read more: https://nextjs.org/docs/messages/prerender-error
29.70
   Generating static pages (12/16)
 ✓ Generating static pages (16/16)
30.28
30.28 > Export encountered errors on following paths:
30.28 	/login/page: /login
30.28 	/page: /
30.28 	/reset-password/page: /reset-password
------
failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1

Thanks for opening up this issue @wbleonard. We've gone ahead and filed a JIRA task. Please check here to track the progress of this issue.

Got the same issue, its due to a minor update to one of the dependencies, not sure which one I just locked them all down to the exact versions. Before that I tried wrapping in suspense boundaries but with no joy.


Rename azure-storage-file to azure-storage-fileshare

Just as a note about consistency, we have been using the following pattern where the library name is the plural of the service name:
Azure Blob storage -> azure-storage-blobs
Azure Queue storage -> azure-storage-queues
It would be nice to be consistent about pluralization here too (though I get that the pattern is broken because the service is now just called "Azure Files")

@bsiegel
Currently we have azure-storage-blob and azure-storage-queue because GA versions of these packages already exist.
Would it not be best to remain consistent within our storage packages and use azure-storage-fileshare? Or am I misunderstanding? :)

@annatisch, yep you're right - apologies. My memory of this was from working on the READMEs yesterday, where we refer to the libraries as the "Azure Storage Blobs client library" or "Azure Storage Queues client library"

Hi @johanste - as part of this change - would you prefer the user-agent to display the package name ("file-share") or the namespace ("fileshare")?

file-share.


Creating a honeypot for network security

Formatting and structure checks

[x] Have you used the correct folder and file structure? - see Contribution Guidelines

[x] Is your article properly formatted in Markdown? - see Github Markdown guide

[x] Have you used our preferred heading structure? - H3 (###) and up

[x] Does your article follow any of the suggested structure formats? - see example formats

[x] Is your article over 750 words? - Tool: Wordcounter.net

[x] Is the article you are submitting an in-depth and unique article? Does it go beyond what is in the official docs and what is covered in other blog sites. See these articles as examples.

[x] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.

[x] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.

[x] Have you included a hero image that is 600x400 pixels, under 300KB in size, and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images

Grammar & plagiarism checks

[x] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid - Grammarly
[x] Please place your article through a 3rd party plagiarism checker. We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[x] Have you checked your article for readability? - Tool: Hemmingway
[ ] Have you added sources for quotes and images that aren't yours?

Technical checks

[x] Are your code snippets properly formatted for syntax highlighting - see Syntax guide
[x] Have you checked your code runs correctly and you've highlighted all necessary dependencies for installation?
[x] Are the software programs and packages you're highlighting in your article up to date, using current versions and not deprecated?

Topic suggestion this closes
`This closes #5008

plagiarism check done ✔

@Wanyoike-shift Please re-upload a new hero image with white text instead of the red text. The red text makes your image dull. Besides, work on commit the suggestions brought forward.

hello @wilkistermumbi I am done with the requested changes please check. Thank you

@Wanyoike-shift Please take note of all the commits made in this tutorial.

jumping on this one


helm repo index changing created timestamp

Output of helm version: version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
When I do a helm repo index . it will redo all entries in my index.yaml file (including existing ones) updating the timestamp of the files.
This is an issue because of the recommended build process for using Github pages to host a repo.
When I do a github checkout gh-pages my existing chart package binaries and index.yaml file will get a new timestamp.  So when you do a helm repo index attempting to include a new version of your chart, the created property for each prior chart also gets updated with the new timestamps.
Should helm repo index . not update the created timestamp if no other properties for existing charts have changed or do we need a new command line option to force this behavior?

There is an "ugly" workaround:

put your new chart in its own folder
helm repo index --merge <path/to/existing/index.yaml> .
mv index.yaml <path/to/existing/index.yaml
mv <my-new-chart.tgz> <original/path>
git commit

Hoping there is a cleaner way to do this.

At first glance, this seems intentional. helm repo index generates a new index at the time it is invoked, so it isn't surprising that the created timestamp is being updated.
helm repo index --merge's use case is to merge an existing index into a new one, only modifying what was changed. The stable repository uses the latter to maintain their index. I'd suggest looking at their repo-sync.sh script for ideas.
Let us know how you get along.

I agree that the linked script replicates what my workaround described above.
However, the digest to the previous chart versions doesn't change.  Shouldn't updates to existing chart definitions be predicated on a change to the digest as well?

I was also expecting the behavior where existing entries had the created timestamp preserved while the .generated timestamp and the created timestamps of any new entries would be reflect the current time.
In our case we maintain a simple Helm repository on the file system and just re-run helm repo index . after dropping a new chart into the directory. We can use the workaround here, but it would be nice if existing entries (matched by digest) weren't updated.

closing as stale.


Drastically inconsistent coverage being reported by tests

Despite all builds passing for every tox environment in the configuration, some builds are reporting drastically lower coverage percentages than others.
Reporting on the following environments seems fine (reporting approx 99% coverage):

TOXENV=py36-dj111-wt111
TOXENV=py36-dj111-wt110

But these seem drastically lower percentages (approx 39% coverage):

TOXENV=py27-dj18-wt15
TOXENV=py33-dj18-wt15
TOXENV=py35-dj19-wt15
TOXENV=py35-dj110-wt16
TOXENV=py35-dj110-wt17
TOXENV=py35-dj110-wt18
TOXENV=py36-dj110-wt19

This started happening from Monday 10th July 2017, during development of #144.
Any ideas?

Wow. That took some tracking down, and I'm very surprised that Travis didn't raise any errors during the build, and hasn't been since.
Turns out that this line in a migration is the culprit:
https://github.com/rkhleics/wagtailmenus/commit/55780e70d72825eb49e3a8eb7d3cc336f2c68d01#diff-691f84a27afa12a5b148dc3528775694R12
Will submit a PR to fix immediately


Documenting LLMMetadata

Description
Added Fields with descriptions to LLMMetadata to help me figure out how to implementing Hugging Face Inference API's metadata.
Type of Change

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?

[ ] Added new unit/integration tests
[ ] Added new notebook (that tests end-to-end)
[x] I stared at the code and made sure it makes sense

Thanks! Yeah I myself was not fully understanding these concepts, so it's benefitting me too
PR is ready for review again


cmd/cgo: C.GoStringN should document that it copies the entire length of the buffer

A naive reader of the minimal documentation for C.GoStringN() would be led to believe that it is a bounded version of C.GoString(), ie it copies a null-terminated string but stops after at most N bytes whether or not a null was found. This is not the actual behaviour, which is that GoStringN() always copies N bytes regardless of whether or not the 'C string' is null terminated before then. Since I recently made this mistake myself, I think that the cmd/cgo documentation should be clear about this.
(In an ideal world I think that C.GoStringN()'s first argument would be an unsafe.Pointer instead of a *C.char, but I assume it's far too late to make that change even if people were inclined to do so.)

I don't think changing the type of the first argument to C.GoString/
C.GoStringN would matter much as then you almost always need
to cast a pointer to unsafe.Pointer whereas right now if the input
is really a C string, you already have *C.char. The only case that
it helped is when you have a C void * pointer.

When you say that something takes a *C.char as its argument and describe that as a C string, you are creating the expectation in many readers that it will actually be treated as a C string. C strings are null terminated (and so by definition do not contain nulls). Making an argument an unsafe.Pointer (and not calling it a C string in documentation) makes it clear that it is not being treated as a C string and so nulls do not matter. Contrast the lack of ambiguity in C.GoBytes versus the current ambiguity in C.GoStringN.
I agree that C.GoStringN serves a useful purpose today with its current semantics and anyway, the current behaviour is what it is and people have written code to that behaviour. I just want those semantics to be clear to everyone who reads godoc cmd/cgo.

No, char * in C doesn't necessary represent a C string.
Arbitrary binary data is usually also represented as char *
(or unsigned char *, but sometimes utf-8 strings are
also represented as unsigned char *, e.g. ICU)
I don't think taking a *C.char parameter alone implies
the function is taking a C string.
And in other languages that supports embedded NULs
in string, they also use similar APIs and generally
document it as taking a string and size (length).
e.g.
Lua:
const char *lua_pushlstring (lua_State *L, const char *s, size_t len);
Pushes the string pointed to by s with size len onto the stack.
CPython:
PyObject* PyString_FromStringAndSize(const char *v, Py_ssize_t len)
Return a new string object with a copy of the string v as value and
length len on success, and NULL on failure. If v is NULL, the contents
of the string are uninitialized.

It seems fine to me to change:
// C string, length to Go string
func C.GoStringN(*C.char, C.int) string

// C pointer, length to Go []byte
func C.GoBytes(unsafe.Pointer, C.int) []byte

to say
// C data with explicit length to Go string

// C data with explicit length to Go []byte


Make moduleconfig optional for custom reranker/generative

Codecov Report
Attention: Patch coverage is 71.42857% with 2 lines in your changes missing coverage. Please review.

Project coverage is 94.56%. Comparing base (42fb96c) to head (ffe9afc).
Report is 102 commits behind head on main.

Files
Patch %
Lines

weaviate/collections/classes/config.py
71.42%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1187      +/-   ##
==========================================
- Coverage   94.68%   94.56%   -0.13%
==========================================
  Files         190      193       +3
  Lines       18932    19250     +318
==========================================
+ Hits        17926    18203     +277
- Misses       1006     1047      +41

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Adding support for string conversions

Adding uppercase (:U), lowercase (:L), capitalize (:C) conversions
Adding support for truncate string from end with negative precission

I'm not used to make pull request...
I have pulled this string conversions because I think are useful...


Also support older .net framework

It should be usable in Visual Studio 2008, 2010, 2012, and 2013.

At first I think I should create nuget packages that target to multiple .net framework. But after study and some tries, I'd changed my mind to target to .NET 4.0 framework only (at least for now)
This make it usable in .NET 4.0, .NET 4.5, .NET 4.5.x, and later (Visual Studio 2010 and later)
Is this enough?

Fixed by commit f74c02e


Support for ol.Object.Event

I'm trying to add support for ol.Object.Event, but I'm not sure which route to take:
If I add new Event subclass to ol.Object it will mask every current reference to ol.events.Event in subclasses (which is... almost every class in project :) ). This would be a clean solution, but it requires massive renaming across code base and is error prone.
If I name wrapper something like ObjectEvent, it looks kind of dirty and goes against OL's naming scheme.
Or I'm I just overthinking this?
My primary goal here is to add listeners for change:center, change:resolution and change:rotation to ol.View.

ol.Object.Eventand ol.events.Eventare differents? why are there 2 of them?

The event handling is a little bit confusing at first glance. Dealing with the mentioned change events are already possible but not as Object.Event. There is also already the dirty version with ol.ObjectEvent implemented. Tomorrow I will provide a clean solution. Happy if you could test it.


fix(ONYX-1013): update images and styling

The type of this PR is: Fix

This PR solves ONYX-1013
Description
Update and crop images, refactor spacing and update for mWeb.

Not needed but It might be simpler for your layout to use a full fluid responsive image: https://www.notion.so/artsy/Handling-Images-On-The-Web-In-Force-5c6832bf4b3e431cb4830061ce057399?pvs=4#be9ce98052a0414d80ae5cb1b738bc06


Multilang support

Adds support for adding and editing multiple languages directly into the timeline editor, and to display those languages in the dialog node.
All alternate text is located in the eventdata itself for each event, without the need for complex translation files.
To add languages, see the multilang section in settings.
To change the language in the editor, use the language selector located next to the fold tools.
Need to remember what the original text was when writing a translation? Hover over the textfield for the tooltip.
Langauge has also been added to the dialogic proxy, and that new argument is supported all the way down to the dialog node.
The dialog node handles the alternate language by using a new parser method. DialogicParser - static func parse_langauge
This replaces the translatable parts of the event data for their translated variant in the selected language.
Existing dialog parsers are untouched, and act as if the translated data is the normal data.

To make it clear. This feature can be merged in now, but some testing and polish should be done.
For that reason, I am not making this as a draft.

Haven't tested this yet but overall looks good! I left a couple of comments. Also make sure to update langauge -> language typos.

Thank you @bitbrain
I will have a look at those suggestions soon.

Hi !
I'd like to test @KvaGram's multi-lang feature but i've run into issues:
I could activate the multilang option in settings and add languages as expected, but then in the timeline editor the language selector doesn't seem to be responding when clicking on it.
Can anybody confirm that it is not just on my side ?
I will investigate when I have spare time.
Thanks !

Ah yes. I was putting off fixing that until I got some kind of review or feedback.
Then try to figure out the issue with whoever showed up.
When that didn't happen until now, I just forgot.
There should be a sweet-spot you can hit. It works fine, it's just a large part of the button does not react for unknown reasons.
Maybe you can help figure out why.

Thank you for your answer !
The unclickable bug was fixed by giving a min_size to the lang_selector controller.
I made a pull request to your branch to update it to the last changes in dialogic/main and add 3 new commits.

Well, you know the drill... same as with the other issue. I really appreciate it but I'm also going to close this one as I'm trying to clean the repo to get it prepared to ramp up the 2.0 development.
Cheers!


pathologically bad behaviour on very large tables

While clearly the normal use-case for termtables is "about how many rows might reasonably fit in a terminal window at once, or about as many as it makes sense to send straight out", we should not behave unduly badly when given a table with many many rows.
Given 29215 rows of data (and 261 dividers) across 10 columns, it takes just over 3 minutes for fmt.Fprint(..., t.Render()) using 160% CPU on a 1.2 GHz Intel Core M processor (early 2015 Macbook).

Big improvement in render speed here: https://github.com/apcera/termtables/pull/35
After that if we still wanted to improve it we could add a method that streams the output to a reader that can be copied as desired. The Render code could then just be a wrapper that drains the reader and returns the value.

Closing; this seems to no longer be an issue.
Given the test program:
	testCases := []struct {
		maxRow, maxCol int
		duration       time.Duration
	}{
		{maxRow: 10, maxCol: 10},
		{maxRow: 100, maxCol: 10},
		{maxRow: 1000, maxCol: 10},
		{maxRow: 10000, maxCol: 10},
		{maxRow: 100000, maxCol: 10},
	}

	for i, tc := range testCases {
		t := termtables.CreateTable()
		for r := 0; r < tc.maxRow; r++ {
			row := t.AddRow()
			for c := 0; c < tc.maxCol; c++ {
				row.AddCell("item")
			}
		}
		begin := time.Now()
		fmt.Printf(t.Render())
		testCases[i].duration = time.Now().Sub(begin)
	}

	t := termtables.CreateTable()
	t.AddHeaders("Rows", "Columns", "Time to Render")
	for _, tc := range testCases {
		t.AddRow(tc.maxRow, tc.maxCol, tc.duration)
	}
	fmt.Println(t.Render())

I got the following output (besides all the junk table output; I wanted that to still go to the terminal so that I saw real behavior and not a different speed due to using a plain buffer):
+--------+---------+----------------+
| Rows   | Columns | Time to Render |
+--------+---------+----------------+
| 10     | 10      | 144.002µs      |
| 100    | 10      | 1.250394ms     |
| 1000   | 10      | 32.245872ms    |
| 10000  | 10      | 133.456814ms   |
| 100000 | 10      | 1.470458528s   |
+--------+---------+----------------+

So if I understood your test case (~30,000 rows, 10 columns) it is about 1/2 second.


⚠ Bofrost.de has degraded performance

In af134fd, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1584 ms

Resolved: Bofrost.de performance has improved in 04fc6ca after 33 minutes.


Discrepancy in TensorFlow XLA Compiled Models Due to Different Multiplication Orders with tf.abs on GPU

Issue type
Bug
Have you reproduced the bug with TensorFlow Nightly?
Yes
Source
source
TensorFlow version
2.15.0
Custom code
Yes
OS platform and distribution
Ubuntu 22.04.3 LTS
Mobile device
No response
Python version
3.10
Bazel version
No response
GCC/compiler version
No response
CUDA/cuDNN version
cuda : 12.2 / cudnn 8.9.04
GPU model and memory
Tesla V100S-PCIE-32GB
Current behavior?
In TensorFlow 2.15.0, I've encountered an issue where two mathematically equivalent models yield different results when compiled with XLA. The discrepancy appears to be tied to the order of multiplication operations. This issue is critical as it questions the consistency and reliability of TensorFlow's computation, especially in a compiled environment.
The models yield dramatically different results under XLA compilation, with discrepancies that are far from trivial.
Standalone code to reproduce the issue
import tensorflow as tf
import os
import numpy as np

class Model1(tf.keras.Model):
    @tf.function(jit_compile=True)
    def __call__(self, inp1, inp2, inp3):
        # inp3*(inp2*inp1)*(inp3*(inp2*inp1))
        mul3 = tf.multiply(tf.multiply(inp3, tf.multiply(inp1, inp2)), tf.multiply(inp3, tf.multiply(inp1, inp2)))
        _abs = tf.abs(mul3)
        return mul3, _abs

class Model2(tf.keras.Model):
    @tf.function(jit_compile=True)
    def __call__(self, inp1, inp2, inp3):
        # inp3 * ((inp1*inp2)*(inp3*(inp1*inp2)))
        mul3 = tf.multiply(inp3, tf.multiply(tf.multiply(inp1, inp2), tf.multiply(inp3, tf.multiply(inp1, inp2))))
        _abs = tf.abs(mul3)
        return mul3, _abs

with tf.device(tf.config.list_logical_devices('GPU')[0].name):
    inputs = [
    tf.random.uniform(shape=[3], minval=-100, maxval=100, dtype=tf.int32),
    tf.random.uniform(shape=[], minval=-100, maxval=100, dtype=tf.int32),
    tf.random.uniform(shape=[3], minval=-100, maxval=100, dtype=tf.int32),
    ]
    model1 = Model1()
    model2 = Model2()
    tf.config.run_functions_eagerly(True)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========eager_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_eager does not trigger assertion")
    except AssertionError as e:
        print("XLA_eager triggers assertion")
        print(e)
    tf.config.run_functions_eagerly(False)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========compiled_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_complie does not trigger assertion")
    except AssertionError as e:
        print("XLA_complie triggers assertion")
        print(e)

Relevant log output
2023-11-27 08:25:14.134072: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2023-11-27 08:25:14.134128: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2023-11-27 08:25:14.135901: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
2023-11-27 08:25:14.142938: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-11-27 08:25:14.955654: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
2023-11-27 08:25:25.751708: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 1123 MB memory:  -> device: 0, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:01:00.0, compute capability: 7.0
2023-11-27 08:25:25.754126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:1 with 15774 MB memory:  -> device: 1, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:24:00.0, compute capability: 7.0
2023-11-27 08:25:25.755764: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:2 with 16176 MB memory:  -> device: 2, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:41:00.0, compute capability: 7.0
2023-11-27 08:25:25.757607: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:3 with 17872 MB memory:  -> device: 3, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:61:00.0, compute capability: 7.0
2023-11-27 08:25:25.759556: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:4 with 18494 MB memory:  -> device: 4, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:81:00.0, compute capability: 7.0
2023-11-27 08:25:25.761281: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:5 with 19166 MB memory:  -> device: 5, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:a1:00.0, compute capability: 7.0
2023-11-27 08:25:25.763252: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:6 with 20272 MB memory:  -> device: 6, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:c1:00.0, compute capability: 7.0
2023-11-27 08:25:25.765351: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:7 with 20720 MB memory:  -> device: 7, name: Tesla V100S-PCIE-32GB, pci bus id: 0000:e1:00.0, compute capability: 7.0
=========eager_output(version:2.15.0)================
XLA_eager does not trigger assertion
2023-11-27 08:25:26.220882: I external/local_xla/xla/service/service.cc:168] XLA service 0x555a544232d0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:
2023-11-27 08:25:26.220929: I external/local_xla/xla/service/service.cc:176]   StreamExecutor device (0): Tesla V100S-PCIE-32GB, Compute Capability 7.0
rvice.cc:176]
2023-11-27 08:25:26.226472: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:269] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.
2023-11-27 08:25:26.908888: I external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:454] Loaded cuDNN version 8904
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1701073527.016479  336904 device_compiler.h:186] Compiled cluster using XLA!  This line is logged at most once for the lifetime of the process.
=========compiled_output(version:2.15.0)================
XLA_complie triggers assertion

Not equal to tolerance rtol=0.001, atol=0.001
at checking 1th # indicates error happens after tf.abs
Mismatched elements: 1 / 3 (33.3%)
Max absolute difference:<PHONE_NUMBER>
Max relative difference: 1.68592003
 x: array([-1165236160,   395214400,     1192464], dtype=int32)
 y: array([1165236160,  395214400,    1192464], dtype=int32)

Here is another piece of code that triggers the same error. I hope this assists you in identifying the root cause of the bug
from typing import Dict
import tensorflow as tf
import pickle
import os
import numpy as np

class Model1(tf.keras.Model):
    def __init__(self):
        super().__init__()

    @tf.function(jit_compile=True)
    def __call__(self, inp1, inp2):
        # Forward pass logic using TensorFlow operations
        _abs = tf.abs(tf.multiply(tf.multiply(inp1, inp2), tf.multiply(inp1, inp2)))
        return _abs

class Model2(tf.keras.Model):
    def __init__(self):
        super().__init__()

    @tf.function(jit_compile=True)
    def __call__(self, inp1, inp2):
        # Forward pass logic using TensorFlow operations
        _abs = tf.abs(tf.multiply(inp1, tf.multiply(inp2, tf.multiply(inp1, inp2))))
        return _abs

inputs = [
tf.cast(tf.random.uniform(shape=[11], minval=-128, maxval=128, dtype=tf.int32), tf.int16),
tf.cast(tf.random.uniform(shape=[], minval=-128, maxval=128, dtype=tf.int32), tf.int16),
]
model1 = Model1()
model2 = Model2()
device = "gpu"
with tf.device(device):
    tf.config.run_functions_eagerly(True)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========eager_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_eager does not trigger assertion")
    except AssertionError as e:
        print("XLA_eager triggers assertion")
        print(e)
    tf.config.run_functions_eagerly(False)
    out1 = model1(*inputs)
    out2 = model2(*inputs)
    print(f'=========compiled_output(version:{tf.__version__})================')
    try :
        for i in range(min(len(out1),len(out2))):
            np.testing.assert_allclose(out1[i].numpy(), out2[i].numpy(), rtol=0.001, atol=0.001, err_msg=f'at checking {i}th')
        print("XLA_complie does not trigger assertion")
    except AssertionError as e:
        print("XLA_complie triggers assertion")
        print(e)

and log output :
=========compiled_output(version:2.15.0)================
XLA_complie triggers assertion

Not equal to tolerance rtol=0.001, atol=0.001
at checking 0th
Mismatched elements: 1 / 1 (100%)
Max absolute difference: 1736
Max relative difference: 0.05442006
 x: array(-31900, dtype=int16)
 y: array(31900, dtype=int16)