Confused on conf generated

I am new to WireGuard. I did get WgServerforWindows fully working before and connected from a client, but then it all got hosed and I am relooking at things and trying to understand where I went wrong.
I generated the server and client configurations, but I had a question on these.
If I look at the configurations at %APPDATA%\Roaming\WS4W, I see there are 4 directories. clients_data, clients_wg, server_data, and server_wg. Each directory has 1 conf file each.
I couldn't find anything in this repo explaining the difference between these directories. How are they different from each other and who gets what? There are 4 conf files in total, but my limited understanding is there should only be 2 if there is 1 server and 1 client.
The WgServerforWindows GUI did not update WireGuard, so I am assuming I have to import one of the 4 files into WireGuard server directly as well as the client.

Sorry, duplicate of https://github.com/micahmo/WgServerforWindows/issues/157 . I didn't think to search on the folder names in the issues.


App version breaks cross platform builds

Using circle ci
On 7.6.0
electron-packager . "app" --version=1.3.1 --platform=win32 --arch=ia32 works fine
On 7.7.0 it gives
"Wine is required to use the app-copyright, app-version, build-version, icon, and
version-string parameters for Windows targets."

Per the release notes for 7.7.0, app-version is now inferred from your app's version in package.json. In your CI, you now need to install Wine (unless you remove version from your package.json file).


Add proxy support

Originally reported by @MarkXA
Is your feature request related to a problem? Please describe.
One of my static sites allows users to subscribe to a calendar at /events.ics. This URL is proxied through to https://uglyblobstorage.url/container/events.ics, which is regularly updated by an Azure Function on a timer trigger. It would be good to be able to do this in Static Web Apps.
Describe the solution you'd like
Add a proxies feature to routes.json. Just nick the Azure Functions Proxies code, I'm sure they won't mind ;)
Describe alternatives you've considered
A 302 redirect sort of works for now, but it's possible that if the backend URL changed then it would break people's subscriptions, and anyway you don't always want the ugly URL exposed.
Additional context
This can also be useful for hosting external APIs as a local /api (e.g. non-JS Azure Functions 😱), particularly if you can't configure their CORS.

With BYO API, you can now host your APIs on other Azure services https://docs.microsoft.com/en-us/azure/static-web-apps/apis-overview. Moreover, Azure Functions no longer supports Proxies since Azure Function version 4.
Does your use case still require proxy support?

Update: Functions now supports proxies in Azure Functions v4 - https://learn.microsoft.com/en-us/azure/azure-functions/legacy-proxies#re-enable-proxies-in-functions-v4x
Although it is highly recommended that one sticks to APIM support which is now available in Static Web Apps -https://docs.microsoft.com/en-us/azure/static-web-apps/apis-overview

+1 to this. At minimal, this should be documented in the docs. I wasted hours trying to figure out why my route redirects wouldn't work for something like this. Every other product like Netlify/Vercel/etc can do this with 1 line of code. It would be nice to have a little empathy for the developers who are not using all microsoft services to make their life easier.


Add parser/compiler/eval API for single declarations

For REPL use, it is useful to offer APIs for one-declaration-at-a-time parsing, compilation and evaluation.

Parser API added in PR #257

Compiler API added in PR #263


Is the FlaUI project Still Active?

There have been no updates since April, is this Project Still Active?

What happens to the dotnet core support?

Yes the project in general is active. There are a lot of things going on currently in the .NET world. When .NET Core 3.0 will be released, I will continue with my refactoring to support .NET Core.

Wicked good, Roemer!

The stable version of .NET Core 3.0 is available!

Yes, it is indeed. I actually am starting to work on it. First thing is to split out the interop wrapper (and also generate a new one with the latest features). That is in work here: https://github.com/Roemer/UIAutomation-Interop
Next I will need to define the new assemblys that are needed (I need at least one additional for stuff that is not available in .net core like Accessibility).

@Roemer Can you please respond to issue #259 ?

Please do not use other issues to enforce an answer on an unrelated issue.

I beg you to kindly forgive my unpardonable breach of ettiquette.
Avec mes respectueux hommages, je vous prie d’agréer, Monsieur, l’expression de ma considération la plus distinguée.

No worries :) Just keep in mind that (as most open source) that the software is maintained in free time.


bug: Lazy should clear statusline on floating window close

Did you check docs and existing issues?

[X] I have read all the lazy.nvim docs
[X] I have searched the existing issues of lazy.nvim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
v0.9.5
Operating system/version
6.7.9-zen1-1-zen
Describe the bug
Lazy does not clear the statusline when its floating window is closed. This leads to statusline information such as the cursor position still being displayed in the statusline.

The additional statusline information at the very bottom right is from Lazy.
Steps To Reproduce

Make sure you have laststatus set to 2
Open and close Lazy's window
See lazy's status line information still in the statusline

Expected Behavior
Lazy would clear the statusline. Pressing <C-L> redraws the screen and clears the statusline.
Repro
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")

That's not really something lazy (or any other plugin) should do.
If anything, this might be a Neovim bug, or a bug in the statusline plugin you're using


Unable to apply changes on device: xxxx. Error is: Command xcodebuild failed with exit code 65.

Building project...
Xcode build...
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiver.swift:33:29: error: cannot assign to property: 'direction' is immutable
_rtpTransceiver.direction = newValue.rtcValue
~~~~~~^
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiver.swift:76:25: error: value of type 'RTCRtpTransceiver' has no member 'stop'
_rtpTransceiver.stop()
~~~~~~~~~~~~~~~ ^~
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiverDirection.swift:52:9: error: switch must be exhaustive
switch direction {
^
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiverDirection.swift:52:9: note: do you want to add missing cases?
switch direction {
^
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiver.swift:33:29: error: cannot assign to property: 'direction' is immutable
_rtpTransceiver.direction = newValue.rtcValue
~~~~~~^
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiver.swift:76:25: error: value of type 'RTCRtpTransceiver' has no member 'stop'
_rtpTransceiver.stop()
~~~~~~~~~~~~~~~ ^~
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiverDirection.swift:52:9: error: switch must be exhaustive
switch direction {
^
/Users/admin/angular/apps/my.app/platforms/ios/Pods/FancyWebRTC/Sources/FancyWebRTC/FancyRTCRtpTransceiverDirection.swift:52:9: note: do you want to add missing cases?
switch direction {
^
note: Using new build system
note: Building targets in parallel
note: Using codesigning identity override:
note: Planning build
note: Constructing build description
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'IKEventSource' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'Starscream' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'SAMKeychain' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'NYTPhotoViewer-NYTPhotoViewer' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'MDFInternationalization' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'FLAnimatedImage' from project 'Pods')
warning: MobileCoreServices has been renamed. Use CoreServices instead. (in target 'FLAnimatedImage' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'NYTPhotoViewer' from project 'Pods')
warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.0.99. (in target 'Socket.IO-Client-Swift' from project 'Pods')
Make sure to check the demo app(s) for sample usage
Make sure to check the existing issues in this repository
If the demo apps cannot help and there is no issue for your problem, tell us about it
Please, ensure your title is less than 63 characters long and starts with a capital
letter.
Which platform(s) does your issue occur on?

iOS/Android/Both IOS
iOS/Android versions
emulator or device. What type of device? emulator

Please, provide the following version numbers that your issue occurs with:

CLI: (run tns --version to fetch it) 7.0.11
Cross-platform modules: (check the 'version' attribute in the
node_modules/tns-core-modules/package.json file in your project)
Runtime(s): (look for the "tns-android" and "tns-ios" properties in the package.json file of your project)
Plugin(s): (look for the version numbers in the package.json file of your
project and paste your dependencies and devDependencies here)
"@angular/animations": "^10.1.5",
"@angular/common": "~10.0.9",
"@angular/compiler": "~10.0.9",
"@angular/core": "~10.0.9",
"@angular/forms": "~10.0.9",
"@angular/localize": "~10.0.9",
"@angular/platform-browser": "~10.0.9",
"@angular/platform-browser-dynamic": "~10.0.9",
"@angular/router": "~10.0.9",
"@angular/service-worker": "~10.0.9",
"@nativescript/angular": "~10.1.0",
"@nativescript/camera": "^5.0.2",
"@nativescript/core": "~7.0.0",
"@nativescript/theme": "~2.5.0",
"@ng-bootstrap/ng-bootstrap": "^7.0.0",
"@schoolsquirrel/letter-avatar": "^1.0.0",
"@stomp/ng2-stompjs": "^7.2.0",
"@types/node-rsa": "^1.0.0",
<EMAIL_ADDRESS>"^1.4.33",
"aes-js": "^3.1.2",
"angularx-social-login": "^3.2.1",
"bootstrap": "^4.5.0",
"constants": "0.0.2",
"core-js": "^3.6.5",
"cryptico": "^1.0.2",
"crypto": "^1.0.1",
"crypto-module": "^1.3.19",
"event-source-polyfill": "^1.0.16",
"idb": "^5.0.4",
"mediasoup-client": "^3.6.12",
"moment": "^2.27.0",
"nativescript-oauth2": "^3.0.1",
"nativescript-ui-listview": "^9.0.2",
"nativescript-videoplayer": "^5.0.1",
"nativescript-webrtc-plugin": "^2.0.0-alpha.22",
"ng-gapi": "0.0.93",

Please, tell us how to recreate the issue in as much detail as possible.
Describe the steps to reproduce it.
Is there any code involved?

provide a code example to recreate the problem
(EVEN BETTER) provide a .zip with application or refer to a repository with application where the problem is reproducible.

@triniwiz having the same issue on latest Xcode:


IS that tps is OK?

#Topic                            #Consumer Group                  #Accumulation      #InTPS     #OutTPS   #InMsg24Hour  #OutMsg24Hour
TopicTest                         MQ_CONSUMER                              13                75.42       75.42         118959         118959
Is the value of ROCketMQ TPS for sending and receiving messages at 100 megabytes of bandwidth normal?

Is it normal to rely on many situations.
Issues are generally used for bug reports and feature requests, so if you have any questions about Apache  RocketMQ, it is recommended to discuss it on the mailing list first, the mailing list address. I will close the Issue first, but please feel free to reopen it if you have any other issues.


Create Dockerfile

Added Dockerfile

@md-zubair Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.


BUG: special: autodifferentiation of division operator

Describe your issue.
In gh-21568, we found that the implementation of dual &operator/=(const dual &other) may not be quite right. I thought we should open this so it's not forgotten.
@izaid can you fix this, and @steppi can review?
In any case, we should add a test and a reference so it doesn't come up again.

gh-21711 made changes, but I'll leave this open as a reminder that it could use a reference and test.


[hi] Localize content/en/docs/reference/scheduling/config.md to Hindi

This is a Feature Request
What would you like to be added

We need to localize content/en/docs/reference/scheduling/config.md to Hindi (content/hi/docs/reference/scheduling/config.md)

Why is this needed
This page has not translated in hindi yet
Comments
/language hi
/good-first-issue
/assign

/remove-good-first-issue

Hi @bishal7679 can I work on this issues

Hi @bishal7679 can I work on this issue

/triage accepted

/remove-lifecycle stale


Powerstore, Powermax and their supported modules chart changes for CSM installation Wizard

Is this a new chart?
There are changes in the existing charts and also new charts has been added.
What this PR does / why we need it:
As a part of CSM installation wizard, we need all charts to be placed at one place.
Which issue(s) is this PR associated with:
https://github.com/dell/csm/issues/591
Special notes for your reviewer:
Checklist:
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[ ] Chart Version bumped
[ ] Variables are documented in the chart README.md
[ ] Title of the PR starts with the chart name (e.g. [charts_dir/mychartname]) if applicable

Since these changes affect other helm charts, please get reviews from those teams as well including Novus for Authorization (@shaynafinocchiaro ), Yulan for Observability (@baoy1 ), and Phoenix for Replication (@harshaatdell )


Add parameter for Curve and action for AnimationStatus.completed

Is your feature request related to a problem? Please describe.
This suggested feature would enable customization on the wave animation cycle.
Describe the solution you'd like
An enum for every possible action on AnimationStatus.completed, and an additional parameter to set the animation's Curve.
Describe alternatives you've considered
Add a 'curve' parameter in WaveWidget, 'reverseOnEnd' and 'resetOnEnd'.
Additional context
I've made a fork and a commit at AlvBarros/wave, and was about to create a Pull Request to this plugin.
It's not the best solution, but solved my problem and I thought that I'd share.

Closing this issue since it didn't have any progress at all.


Query params sent when values are undefined

Describe the bug
In the hook useUpsertMutation when we pass in the payload with an object with values undefined the columns are sent to supabase.
Note:
This was working before fine. Its recently that this broke.
To Reproduce
Let me give you my use case.
Given the below schema
model NotificationLog {
  id         String                      @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
  title    String
  }

Notice how the id is autogenerated so it is not mandatory to be sent along in the payload.
So,
When we send
import {
  useUpsertMutation,
} from '@supabase-cache-helpers/postgrest-swr';
const upsert = useUpsertMutation(supabase.from('NotificationLog'), ['id'], 'id');
const result = await upsert.trigger([{id:undefined, title:'Title'}]);

This fails with error  "null value in column \"id\" of relation \"NotificationLog\" violates not-null constraint"
Upon inspection of the network request i noticed that the column id is sent even though in the payload it is undefined.
/rest/v1/NotificationLog?columns=%22id%22,%22title%22&select=id,title

Im not sure why its failing suddenly out of the blue. Maybe something changed in supabase ? I'm not sure if its a bug here and am a little concerned of my usage of this mutation. Please advice

There may be a bigger problem with the library but just so you're aware, the supabase-js client will default to setting values to null when passing an array to upsert. Which can be fixed by setting defaultToNull to false
https://supabase.com/docs/reference/javascript/upsert

Make missing fields default to null. Otherwise, use the default value for the column. This only applies when inserting new rows, not when merging with existing rows under ignoreDuplicates: false. This also only applies when doing bulk upserts.

I dont think this library exposes that capability unfortunately. For example this is how you do it using the js client directly:
            await ctx.supabase.from("CollectionService").upsert(
                services.map(({ id, ...service }, order) => {
                    const form = formatDbFields(service, nullableServiceFields);

                    const serviceId = Math.max(0, id);

                    return {
                        ...(!!serviceId && { id: serviceId }),
                        name: service.name === null ? ServiceName.CUSTOM : service.name,
                        customName: service.name === ServiceName.CUSTOM && !!service.customName ? service.customName : null,
                        collectionId,
                    };
                }),
                { defaultToNull: false }
            );

I dealt with this last week using the js client directly so just wanted to share since it was fresh on my mind and might help with updating the library here :)

oh wait yes you can, that property is exposed in the fourth parameter
    const upsert = useUpsertMutation(supabase.from("Team"), ["id"], "id", {
        defaultToNull: false
    })

Does something like that work?

great! glad that worked. Not quite sure, I started working with Supabase JS in January of this year and its been around since then 🤷


use context.GetLogger to replace logrus in listener

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "notifytype" git@github.com:hopkings2008/distribution.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "notifytype" git@github.com:hopkings2008/distribution.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.


[1.11] Bump Mesos to nightly 1.5.x f38b69c

High-level description
This is a routine bump to the latest Mesos and mesos-modules.
Related JIRA Issues
Checklist for all PRs

[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here:
[x] Read the DC/OS contributing guidelines
[x] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[x] Changelog:
https://github.com/apache/mesos/compare/5f07b10b05f7d58a08735498215bec8bb3a12518...f38b69c2299152b28a2d263d5e6c5af79c78ca49

[ ] Test Results: [link to CI job test results for component]

[ ] Code Coverage (if available): [link to code coverage report]

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label Ready For Review


U03: Shuffle roles according to seeded randomness

Implemented startGame() in SessionManager and getRoles() in PlayerManager that generates the roles corresponding to the rules and then shuffles them with the seededShuffle function.
Question: In the rules it is written that it can have a maximum of 10 Players, what is our take on that?

Great work! haven't tested it but looks good to me.

Regarding your question: I think we can make 11 player the max, as that would be all dwarf cards. Need to implement this limit in the backend when joining a lobby.

Okay, also another thought, we have to check that there is a minimum of 3 players when starting the game

Okay, also another thought, we have to check that there is a minimum of 3 players when starting the game

Regarding your question: I think we can make 11 player the max, as that would be all dwarf cards. Need to implement this limit in the backend when joining a lobby.

Okay, also another thought, we have to check that there is a minimum of 3 players when starting the game

Regarding your question: I think we can make 11 player the max, as that would be all dwarf cards. Need to implement this limit in the backend when joining a lobby.

Okay, also another thought, we have to check that there is a minimum of 3 players when starting the game
(sorry I closed the PR accidentally)

I can make lobbyscreen such that the start button only activates when at least 3 players are in session

Some things don´t really work (for example where is the me getting saved to?). Will discuss this more on monday. But well done :)


[BUG] Execution of examples. Possibly windows specific?

Describe the bug
Examples in readme.md crashes, at least on Windows.
To Reproduce
Steps to reproduce the behavior (Bug template contains spelling error. Behaviour):

Install with pip install pytermgui
Copy any of the two code examples from the readme.md to a python file
Run python path\to\file.py

Expected behavior
Example to display a result like the one presented in readme.md
Actual behaviour
For time display example.
python .\src\app\pytermgui.py
Traceback (most recent call last):
  File "C:\Users\henri\git\private\Company-Admin\src\app\pytermgui.py", line 3, in <module>
    import pytermgui as ptg
  File "C:\Users\henri\git\private\Company-Admin\src\app\pytermgui.py", line 10, in <module>
    ptg.tim.define("!time", macro_time)
    ^^^^^^^
AttributeError: partially initialized module 'pytermgui' has no attribute 'tim' (most likely due to a circular import). Did you mean: 'time'?

For contact form example:
python .\src\app\pytermgui.py
Traceback (most recent call last):
  File "C:\Users\henri\git\private\Company-Admin\src\app\pytermgui.py", line 1, in <module>
    import pytermgui as ptg
  File "C:\Users\henri\git\private\Company-Admin\src\app\pytermgui.py", line 24, in <module>
    with ptg.YamlLoader() as loader:
         ^^^^^^^^^^^^^^
AttributeError: partially initialized module 'pytermgui' has no attribute 'YamlLoader' (most likely due to a circular import)

System information
ptg --version
PyTermGUI version 7.4.0

System details:
    Python version: 3.11.2
    $TERM:          None
    $COLORTERM:     None
    Color support:  ColorSystem.STANDARD
    OS Platform:    Windows-10-10.0.22621-SP0

Possible cause
If you have a hunch on what might be causing this, please add it here.
Possible solution
If you know a way we could fix this, please add it here.

Try the examples but with python 3.10. This could be a bug with 3.11

I get the same result on Python 3.10
ptg --version
PyTermGUI version 7.4.0

System details:
    Python version: 3.10.0
    $TERM:          None
    $COLORTERM:     None
    Color support:  ColorSystem.STANDARD
    OS Platform:    Windows-10-10.0.22621-SP0

(venv) PS C:\path\to\project> python src\app\pytermgui.py
Traceback (most recent call last):
  File "C:\path\to\project\src\app\pytermgui.py", line 1, in <module>
    import pytermgui as ptg
  File "C:\path\to\project\src\app\pytermgui.py", line 24, in <module>
    with ptg.YamlLoader() as loader:
AttributeError: partially initialized module 'pytermgui' has no attribute 'YamlLoader' (most likely due to a circular import)

What exactly is the code you are running? It works just fine for me.

I've found the issue. I've unintentionally created an ambiguous reference with poor choice of filenames... Closing the issue.

Happens to the best of us!


Heroku uploads broken --> add S3 option?

Currently, if you deploy to Heroku and try to upload any files (equipment images, equipment documentation, favicon, etc) using paperclip, the files will be deleted shortly thereafter since they are stored locally and Heroku spins up new VMs for the app as needed. We should offer a configurable option to store files on S3 and remove any hard dependencies on local storage. (inspired by #1016 and #1181)

These will probably help:
https://devcenter.heroku.com/articles/paperclip-s3
https://github.com/thoughtbot/paperclip/wiki/Paperclip-with-Amazon-S3


fix(headers): also populate headers from specified environment variables

Headers can't be set via the environment variables specified in the OTEL SDK configuration documentation. Since headers are often used to affect authentication, using the provided options isn't always desirable or safe.
Which problem is this PR solving?

Closes #98

Short description of the changes
This PR adds the required field tags to the Config struct and documents the existing options as well as the affected environment variables.
How to verify that this has the expected result
Set headers via environment variables and verify that the headers are received by an OTEL collector.

Thanks for this @smoyer64 ! Great catch. Would you be willing to also update the tests to test for these environment variables, testing for both single- and multi- headers?

Sorry about that ... was slammed at work throughout January!


Introduce basic unit tests

We should add some basic unit tests for data transformation, like nodes clustering etc...
Lots of these functions are testable.
Maybe jest would be an option?

@pyatyispyatil  do you have some thought on this?
I would like to add some tests.
Unit tests, maybe even e2e tests.
Would like to work on it if you have some ideas.
I have never really tested canvas, but we can also test individual classes.
Project is very complex and is easy to create regressions.

I think you are right, only clustering and functions close to it are testable. Other places are too hard to cover with e2e and other tests - first we need a mocks for the rendering engine and interaction engine, and then we can write some tests.
It would be a good idea for you to try writing tests for clustering. Later it will be easy to implement span intervals in the flame chart.)
A little later I will describe in more detail in the issue about intervals.

Are you fine with jest, or you prefer some other testing framework?
I am using swc/jest at company and it is very nice and fast transformer.

Jest is good for me, you can include this in the project.)

And yes, we can also try swc. I don't know that many facts about this compiler, but I do know that it's very fast.)

Cool, I will add some of them today
and then we can start building on that


Can't load it in Kong Konnect

Konnect now supports custom plugins. When I load the ddtrace plugin in my Konnect control plane, I get a 404 error after loading and can't do any configuration.
I can load it in the data plane by adding it to my Dockerfile for the data plane, but the plugin won't start unless it is set by the control plane.

I have a PR for this issue https://github.com/DataDog/kong-plugin-ddtrace/pull/17

This is solved, thank you


[MM-T165]: Custom Emojis do not overlap

Summary

Add e2e Test for Custom emojis overlapping
Ticket Link

https://github.com/mattermost/mattermost-server/issues/18158
Related Pull Requests

Has server changes (please link here)
Has mobile changes (please link here)

Screenshots

Release Note

NONE

Will try to auto merge this PR once all tests and checks are passing. This might take up to an hour.

Thanks for participating in Hacktoberfest! You can claim your sticker set here: https://get.printfection.com/hacktober21/4144583267 @bensiauu


FileNode > Skipping Duplicate Path

I started modifying the Forestry Starter
While gridsome develop I copied a markdown file, renamed it and edited it. When saving gridsome crashed.
After that I get the following warning during gridsome develop startup

Initialize - 2.41s
FileNode > Skipping duplicate path for /projects/markdownfile
File Node > Skipping duplicate path for /projects/anothermarkdownfile
Load sources - 0.15s
...

Editing any of the markdown files crashes gridsome again. The error says:

C:\path\to\project\node_modules\gridsome\lib\app\ContentTypeCollection.js:153
      throw new Error(`Could not find node to update with id: ${id}`)
      ^

Error: Could not find node to update with id: 2210c22291bfd6c45a4d50f17237acfd
    at ContentTypeCollection.updateNode (C:\path\to\project\node_modules\gridsome\lib\app\ContentTypeCollection.js:153:13)
    at FSWatcher.watcher.on.file (C:\path\to\project\node_modules\@gridsome\source-filesystem\index.js:112:21)
    at FSWatcher.emit (events.js:189:13)
    at FSWatcher. (C:\path\to\project\node_modules\chokidar\index.js:199:15)
    at FSWatcher._emit (C:\path\to\project\node_modules\chokidar\index.js:241:5)
    at FSWatcher. (C:\path\to\project\node_modules\chokidar\lib\nodefs-handler.js:267:16)
    at FSReqWrap.oncomplete (fs.js:154:5)

perfect, just after opening the issue I found that the problem was caused by gridsome-plugin-remark-youtube which I added to gridsome config and which was also watching the project path for markdown file changes.

@marwie I'm also getting the same issue. How did you get the youtube plugin to play nice?

Hi @RehanSaeed
I'm not entirely sure anymore but I think I ended up not using the plugin but embed youtube via html in markdown.


feature stacked byte schemes :sparkles:

Hey guys I faced some issues when I wanted to implement the mirroring network pattern in dart. I made some changes to writer and reader that fixed this for me. Hope those help you out :)
If you want to reproduce my errors just exchange bebop_dart.dart with the current implementation and run the new test case.
Changes include:

changed bebop writer to allow stacked byte schemes by clearing buffer
fixed bebop reader byte buffer bug
fixed bebop writer guaranteeBufferLength ensuring large enough buffers
added test to validate byte stackability

@lynn any updates on this? :)


AddProjectRequest class is empty

AddProjectRequest class is empty, although there are a lot of request parameters in the documentation for this request(https://developer.crowdin.com/api/v2/#operation/api.projects.post)

Hi @bZverok, this is just a base class for the ProjectForm.cs and EnterpriseProjectForm.cs. The first one is supposed to be used in crowdin.com, and the second one in Crowdin Enterprise.

ProjectFrom.cs has only one property, but there are much more in the non-enterprise version of documentation ((https://developer.crowdin.com/api/v2/#operation/api.projects.post).

@bZverok yes, I just noticed that too, we should definitely add the missing properties

@bZverok yes, I just noticed that too, we should definitely add the missing properties

ProjectForm type is abstract and not supposed to use. Users should use its derived types


Integrating  pdfobject.js to allow quartz to serve PDF files, just like obsidian can do with additional plugins.

Is your feature request related to a problem? Please describe.
Integrating pdfobject or Mozilla's pdf.js is a priority for my quartz installation. This would allow quartz to serve the pdf documents currently being used as reference material on the site. In Hugo such an integration would almost be effortless, but being completely unfamiliar with typescript, the task of integration is enigmatic.
Describe the solution you'd like
Quartz already utilizes CDNs quite effectively, which is why pdfobject appeared to be the easiest means of integrating a pdf viewer into quartz. Implementation would be as easy as dropping in the reference to the library being served by the CDN, and include some additional code to ensure quartz recognizes links to pdf files.
For a vanilla HTML file, the steps would be:

Add the link to the CDN:

Provide a reference in the html:

Add the additional javascript to load the file at the reference:

Describe alternatives you've considered
Integration with mozilla's pdf.js, which pdfobject uses, is another option. Although, it may be more appealing for a more robust and streamlined solution, at first glance, integration appeared more cumbersome and bulky.
Additional context
The desire for this feature arose from discovering the plugins that allow embeding pdf files in obsidian did not translate at all over to quartz, meaning the pdf file and/or link to the pdf file was completely absent from the page. Although full integration with quartz was never assumed, a link to the referenced file was assumed.

You can do this via an iframe or just a media embed. Extra 3P plugins can be added on your own

You can do this via an iframe or just a media embed. Extra 3P plugins can be added on your own

Ahhh... I see now. Yes, you are quite right. Good deal.


Multi arch build

linux/amd64
linux/arm64
linux/386
windows?

I've done it - multiarch, regular releases - https://github.com/lukaszraczylo/tdlib-telegram-bot-api-docker

Thanks, we implement too soon


Shell improvements.

Hey there!
I've added some minor features for working with 'unusual' orbitals, slightly refactored code, so I hope it has better readability.

Thank you!

I'd be happy if you update version on Hackage.
Thank you!

Done.
v 0.9.0


Fixes titles of analysis

This PR separates the titles of the analysis that appear inside the forms (analyses.[ANALYSIS_NAME].title) and the short titles that appear in each analysis item (analyses.[ANALYSIS_NAME].short-title):
  "analyses": {
    "georeference": {
      "title": "Georeference",
      "short-title": "Georeference"
    },

CR: @viddo
CR: @saleiva, please, check specially the names of the short versions that appear at https://github.com/CartoDB/cartodb/blob/a9800e001b25758626d7b95f8304224d6e2e49af/lib/assets/locale/en.json#L23
Closes #8317

👍


toggle power mode

This PR will be included in the 0.4.0 release https://github.com/JoelBesada/activate-power-mode/pull/76. Thank you for your contribution!


Rename Shim to PSF/Fixup

We are officially moving away from using the term Shim to a more appropriate term representing the technology.
The launchers are renamed to PSFLauncher.
Every runtime fix or any other fix, will now be named as Fixup.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: ArianGhotbiMSFT sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Thank you Arian!


Feat request: JSX Support

It would be nice to have out of the box JSX support, this would make using HTMX super simple!

We don't have JSX support by default because it would require react, react-dom, @types/react, and @types/react-dom as dependencies, and it might cause some version conflict with the intent to use React as SSR.
However, you can easily achieve this by using onAfterHandle.
import { Elysia, t } from 'elysia'

import { renderToString } from 'react-dom/server'

// Just copy this to other projects
const jsxPlugin = new Elysia().onAfterHandle(({ set }, response) => {
    if (
        response &&
        typeof response === 'object' &&
        '$$typeof' in response &&
        (response.$$typeof as Symbol) === Symbol.for('react.element')
    )
        return new Response(renderToString(response as any), {
            ...set,
            headers: {
                ...set.headers,
                'Content-Type': 'text/html; charset=utf8'
            }
        })
})

const app = new Elysia()
    .use(jsxPlugin)
    .get('/', () =>
Hello World
)
    .listen(3000)

console.log(
    `🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`
)


Better test fix. Need to obtain raw bytes before reading from buffer.

TBR: @zcstarr

jenkins: test this

lgtm 🐑 it!


Documentation: confused about importc, static statements

Documentation: confused about importc, static statements in:
https://github.com/PMunch/futhark
As a nim newbie I don't understand these parts.

Anything particular you're confused about? You just linked to the entire repository..

Well I had to search for:
importc
https://github.com/PMunch/futhark/blob/875a7f5cf727483bc4c4d394f7d3c23699002aa8/src/futhark.nim#L380
and
static macro seems to mean "run these at compile time"

Oh right. Yes importc is a macro defined by Futhark which is what generates Nim code based on the header files you want to import. static is just a Nim thing that runs code on compile-time, in this case I just use it to write a small C file to link against so that we can statically compile stb instead of having to build a DLL/so out of it.

It would be great to have a more detailed explainer on these parts in the readme - I'm also having to  dig into it a bit more than I expected.
For example, why do you need to repeat
"""
  #define STB_IMAGE_IMPLEMENTATION
  #include "./lib/c/stb_image.h"
  """

in both static and importc (in different forms). More explanation about dlls would also be great.


Parser sanitize

Thanks for taking the time to contibute to this project.
Issues fixed by this PR
Sanitizing parsers #224
What does this implement/fix?
Add parser to sanitize the input text
Any other comments?
Thanks for reviewing this PR. Let me know if there is anything to improve :-)

Coverage decreased (-0.08%) to 97.202% when pulling 5682e6ff5a91c0646858d86cb0c6ac000badf243 on edoffagne:parser-sanitize into 1fb994f196a488669ac732e615730c768dbf61a6 on peterbrittain:master.

Looks good!  Just a couple of things...

On reflection, SanitizeParser isn't a great name...  Maybe ControlCodeParser would be better.
On a related point, could you give an example of what it converts into what format in the comments?

Other than that, feel free to add yourself to credits.py!  I'll happily take it all in the PR.

Thank you ! will do a new PR implementing the comments


Persist schema checks

Display all schema checks in the target's view.

Who triggered it?
What are the differences?
Was it composable / breaking?

Reopening as the UI is still missing.


[FLINK-27794][connectors/jdbc]Fix the bug of wrong primary key in MysqlCatalog

What is the purpose of the change
Use MysqlCatalog to get the PK of tables which have same table name in different databases.
Brief change log
Modify the method parameters for get MySQL primary key.
Verifying this change
This change is a code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)

@flinkbot run azure

seehttps://github.com/apache/flink/pull/19741

cc @leonardBang

@flinkbot run azure

@flinkbot run azure

Thanks @dusukang for the contribution, LGTM


Add Defn::geometry_field_index

[x] I agree to follow the project's code of conduct.
[x] I added an entry to CHANGES.md if knowledge of this change could be valuable to users.

r? @Atreyagaurav

I don't know if I'm qualified to review... It looks like minor changes, looks good to me.
Btw, I see the  Feature::field now takes index, and you use Feature::field_index to get the index, but wouldn't it still be a good idea to have Feature::field_by_name since it used to be present, and geometry_by_name is present.

wouldn't it still be a good idea to have Feature::field_by_name since it used to be present

No, since it can be very slow and it's really easy to use it by mistake. The index-based API takes one more line to use, but it mirrors the GDAL API, and you don't risk making your code 1.5x slower.

geometry_by_name is present

Good point, this.

I meant: keep the function, but use field_index and field internally. Shouldn't be slow, just convenient.

No, because if you have 1M features you can get the index once and reuse it. Otherwise you need to look the field up once for every feature.

Ohk. So basically this API will force people to make hash map if they have to get field index by name in a loop, and it'll be lot faster, makes sense.

Not really. Most of the time you either:

have a relatively small, known set of fields: you can just query them into variables before iterating over the layer
don't know what fields to expect (maybe you're writing ogr2ogr): you might as well query them by index

Updated with a new Feature::geometry_field_index to match Feature::field_index. It's only used in a test and the documentation suggests using the Defn methods instead.

Probably irrelevant, but in case it helps, this is what I had to do previously when I had dynamic fields to write, but they could be null:
for n in nodes {
    // ...
    let feat_fields: Vec<(&str, FieldValue)> = fields
        .iter()
        .filter_map(|(k, (_, func))| Some((k.as_str(), func(n.attr(k)?))))
        .collect();

    let field_names: Vec<&str> = feat_fields.iter().map(|(k, _)| *k).collect();
    let field_vals: Vec<FieldValue> = feat_fields.into_iter().map(|(_, v)| v).collect();
    layer.create_feature_fields(node_geom, &field_names, &field_vals)?;
}

Which will prob become something like this now:
fields_ind: HashMap<&str, usize> = // ...
for n in nodes {
    // ...
    let mut feat = layer.create_feature(node_geom)?;
    let feat_fields: Vec<(&str, FieldValue)> = fields
        .iter()
        .filter_map(|(k, (_, func))| Some((k.as_str(), func(n.attr(k)?))))
        .collect();
    for (field, value) in feat_fields {
        // can do it with a for_each above but separating it to show the difference
        feat.set_field(fields_ind[field], value)?;
    }
}

Where func converts attribute values to FieldValue, but there is no Null on FieldValue enum, so I had to filter fields each time. Would be nice to not have to do that, kinda just create_feature_fields(Geometry, &[Option<FieldValue>])

Which will prob become something like this now:

I don't know how you create the nodes and the fields, but maybe you could create them in the same order, then just do:
for idx in 0..num_attrs {
    feat.set_field(idx, func(n.attr_by_idx(k)))?;
}

If not, you can still build that hashmap (or even an array) once, before iterating over nodes, assuming your nodes have their attributes in the same order.

The features to export to GIS will be a subset of features in the nodes, so even if it's ordered, we can't use their index.
Please ignore this, no need to spend time, I just wanted to show/verify what I think I would I have to do based on this API change, in case it is a use case you hadn't thought of. Caching the fields' indices outside the loop should be a good solution.

But you can still do:
let attrs_to_export = todo!();
for n in nodes {
    // ...
    for (field_idx, attr_idx) in attrs_to_export {
        feat.set_field(field_idx, func(n.attr_by_idx(attr_idx)))?;
    }
}


License - Badge & Notice

WHEN I choose a license for my application from a list of options
THEN a badge for that license is added near the top of the README and a notice is added to the section of the README entitled License that explains which license the application is covered under

Complete


[sc-888] - Chore/Add prefix to bootstrap utility classes

Short summary
Bootstrap adds classes based on component props, such as the Card border , background, and text color classes. These classes are not updated properly when a prefix is added to the component:

The createLocalProps function has been updated to add a prefix to these utility classes.
To add prefixes you should use the bsProps array in the classes object, this array accepts the name of the props:
      classes: {
        base: baseClass,
        prefix: prefix,
        optionals: [
          {
            fields: ['theme'],
            value: 'theme',
          },
        ],
        bsProps: ['bg', 'border', 'text'],
      },

Updated classes:

If you need to remove the default Bootstrap classes you can use the removables array:
    {
      ...
        bsProps: ['bg', 'border', 'text'],
      },
    },
    ['prefix', 'theme', 'appearance', 'bg', 'border', 'text']

And the unused classes will be removed:

[sc-888]


mounter(ticdc): change log level from info to debug for some logs

What problem does this PR solve?

Issue Number: close      https://github.com/pingcap/tiflow/issues/7235
What is changed and how it works?
Change log level from info to debug for some logs to avoid too many logs.
Check List
Tests

No code

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
Change log level from info to debug for some logs to avoid too many logs

Codecov Report

Merging #7245 (0116f4a) into master (d8fff7a) will decrease coverage by 0.0078%.
The diff coverage is 74.0740%.

Additional details and impacted files

Flag
Coverage Δ

cdc
67.1744% <81.1111%> (-0.0412%)
:arrow_down:

dm
51.8526% <ø> (+0.0151%)
:arrow_up:

engine
60.9690% <71.6475%> (+0.1109%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
@@               Coverage Diff                @@
##             master      #7245        +/-   ##
================================================
- Coverage   59.6043%   59.5965%   -0.0079%
================================================
  Files           790        790
  Lines         91089      91012        -77
================================================
- Hits          54293      54240        -53
+ Misses        32051      32031        -20
+ Partials       4745       4741         -4

/merge


Battery Remaining Unavailable

Is there an existing issue for this?

[X] I have searched both the existing open issues & recently closed issues and did not find a duplicate of this issue.

Version of the Tesla component
v3.23.0
Version of the Powerwall Gateway software
24.12.6 3cc46fb9
Model
3
Current Behavior
battery remaining is unavailable.
Expected Behavior
battery percentage shows up
Debug logs
Logger: homeassistant.components.sensor
Source: helpers/entity_platform.py:914
integration: Sensor (documentation, issues)
First occurred: June 12, 2024 at 11:06:25 PM (5 occurrences)
Last logged: 10:46:49 AM

Error adding entity sensor.powerwall_battery_remaining for domain sensor with platform tesla_custom
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 914, in _async_add_entity
    await entity.add_to_platform_finish()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1355, in add_to_platform_finish
    self.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1000, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1126, in _async_write_ha_state
    state, attr, capabilities, shadowed_attr = self.__async_calculate_state()
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1061, in __async_calculate_state
    state = self._stringify_state(available)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1006, in _stringify_state
    if (state := self.state) is None:
                 ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 543, in state
    value = self.native_value
            ^^^^^^^^^^^^^^^^^
  File "/config/custom_components/tesla_custom/sensor.py", line 445, in native_value
    return round(self._energysite.energy_left)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/teslajsonpy/energy.py", line 152, in energy_left
    return round (self._site_config.get("nameplate_energy") * self.percentage_charged / 100 )
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'

Anything else?
No response

Having a similar issue here: Since yesterday I did not get any data from my Model S and I cannot send anything to it. via HA. Possible that the connection to the Tesla servers seem to be interrupted? Anyone else having this issue? For me it looks similar to the API thing at the start of this year.

I have had the same issue just now and performing the same fix here resolved it - perhaps this is a regression: https://github.com/alandtse/tesla/issues/919#issuecomment-2015548967

Similar but subtly different issue. Lots of Task exception was never retrieved (might be nice if the integration catches internal exceptions and sets itself to an error state or similar?), but the traceback is:
...
home-assistant  |   File "/config/custom_components/tesla_custom/sensor.py", line 445, in native_value
home-assistant  |     return round(self._energysite.energy_left)
home-assistant  |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
home-assistant  |   File "/usr/local/lib/python3.12/site-packages/teslajsonpy/energy.py", line 152, in energy_left
home-assistant  |     return round (self._site_config.get("nameplate_energy") * self.percentage_charged / 100 )
home-assistant  |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
home-assistant  | TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'

which I believe means that nameplate_energy is an int, and percentage_charged is None -- whereas in the initial post about this issue, it looked like it was None and float. Could be the exact same issue just different python version/impl reporting differently, but it's odd.

I ended up getting my integration working again by replacing
return round (self._site_config.get("nameplate_energy") * self.percentage_charged / 100 )
with
return round (self._site_config.get("battery_count")*self._site_summary.get("percentage_charged")*13500/100)
in the energy.py of my local copy of teslajsonpy.


In duration class I am unable to add months for the date

I want add 10months after current date but we have only provision upto dates can any one add months  provision also
 _toDate = today.add(new Duration(days: 10));
 const Duration(
      {int days: 0,
      int hours: 0,
      int minutes: 0,
      int seconds: 0,
      int milliseconds: 0,
      int microseconds: 0})
      : this._microseconds(MICROSECONDS_PER_DAY * days +
            MICROSECONDS_PER_HOUR * hours +
            MICROSECONDS_PER_MINUTE * minutes +
            MICROSECONDS_PER_SECOND * seconds +
            MICROSECONDS_PER_MILLISECOND * milliseconds +
            microseconds);

How many seconds does a month last?

This has come up before.  There is some other way to do calendar math in Dart iirc.  I just don't recall what it is.  @kevmoo would know.

Durations don't have months, because a duration is independent of the location and moment-in-time. However, the length of a month is dependent on exactly that (adding a month in february is shorter than adding one in January. Similarly, adding a month while there is a leap-year or daylight saving change makes a difference).
There is currently no easy way to add one month to a specific date. It's one of the big changes to the core libraries for dart 2.0.
In the meantime the safest is to build a new DateTime with all the arguments passed in, but adding 1 to the month: new DateTime(other.year, other.month + 1, other.day, other.hour, ...).
Even then you still need to pay attention, though: what should it mean to add a month to the 31st of March? With the simple approach above, you would end up at May 1st.
If that's not what you want, you have to clamp the months. That requires a bit more code (including knowing when there are leap years).

The last comment above pretty much covers everything there is to say about this, I think.

Yes it says all and that Dart should add new methods to date and time. Moment js did a pretty good job with date&time


Split the compiler and runtime into separate artifacts.

Coalescing #103, #182, and #191.

Hi Jake, Any fixed or workaround for this issues? I'm facing the same problem on Android 5.0.1

#210 should fix this

This happened.


Add a test case for the credit line

@olleolleolle, I am gonna take it steps by steps based on your comment here: #535. 😃

@Lucashuang0802 Thanks, I would like to handle that. Small constant refactoring, that takes  +2% is also good :)
I would like to come back to this PR shortly and resolve this.
May I ask you to fix to merge conflict first?


Usages of include/require in expressions incorrectly marked as errors

From @roblourens on June 9, 2017 18:13
From new parser, #357
include 'foo.php';          // No error
include('foo.php');         // No error
if(include 'foo.php'){}     // No error
$bar = include 'foo.php';   // Error
$bar = (include 'foo.php'); // No error
@include 'foo.php';         // Error
@(include 'foo.php');       // No error
@include('foo.php');        // Error
!include 'foo.php';         // Error

Copied from original issue: felixfbecker/php-language-server#385

Actually that's pretty likely... will track it here until I look into it

From @jens1o on June 9, 2017 18:53
I wonder whether this should be an tolerant-php-parser issue instead?


Cask request: [YTD]

Cask details
Name: YouTubeDownloader
Homepage: http://www.youtubedownloadersite.com/mac/
Download URL: http://www.youtubedownloadersite.com/mac/
Description: YTD Video Downloader downloads YouTube videos onto your hard drive

I’ve encountered this app before. I’m going to refuse the request for several reasons:

The app has (had?) a non-trivial installation method (manual app installation).
From there it follows the app is non-trivial to uninstall.
This is a request, not a PR, so no work is being thrown away.
Everything I saw about the app is shady.
I have reason to believe the app distributes malware.
No one else is asking for it.

If you want this app installable as a cask, you’ll need to make your own tap.


Heap pollution in JobScheduler

Redundant creation of Long wrappers due to typed ThreadLocal. For such a frequent task we should use primitives.

Hm


upgrade to kops 1.20.1

Any idea on when this will be upgraded to 1.20.1?

I probably should've checked the op PRs first. Apologies.
#204


[main] CASMINST-4512 Streamline license, links, style and spelling checks

Summary and Scope

Add one more annoying check to docs-csm - a spell check.
Streamline all 3 checks (style, links, spelling) to have similar naming style and execution pattern.
Only check files changes withing current push/PR - makes all 3 checks almost instant, and error output easy to read.
Reset style check parameters to defaults - hopefully this will encourage developers to fix some of them.

Issues and Related PRs

Resolves CASMINST-4512

Testing
https://github.com/Cray-HPE/docs-csm/actions/runs/2229309954
https://github.com/Cray-HPE/docs-csm/actions/runs/2229309953
https://github.com/Cray-HPE/docs-csm/actions/runs/2229309952
https://github.com/Cray-HPE/docs-csm/actions/runs/2229302860
https://github.com/Cray-HPE/docs-csm/actions/runs/2229302858
https://github.com/Cray-HPE/docs-csm/actions/runs/2229302854
Test description:
When no *.md files are changed in curent push/PR, all 3 checks are successful. When violations are introduced specifically for testing, all 3 checks expectedly fail.
Risks and Mitigations
Low - non-blocking build-time checks.
Pull Request Checklist

[ ] Version number(s) incremented, if applicable
[ ] Copyrights updated
[ ] License file intact
[ ] Target branch correct
[ ] CHANGELOG.md updated
[ ] Testing is appropriate and complete, if applicable
[ ] HPC Product Announcement prepared, if applicable

Don't we also want this for the 1.0 branch?

Don't we also want this for the 1.0 branch?

Indeed. Created https://github.com/Cray-HPE/docs-csm/pull/1483.

Please note - old "license-check", delivered by Organizational Workflows feature, got stuck in this PR. This won't happen anymore with new style "Check Licenses", because it's not using Organizational Workflows. I have already turned off old license-check for docs-csm repo (this is done in org wide Cray-HPE/.github repo).


Correctly use values of backed enums for options (#4929)

WHY
BEFORE - What was wrong? What was happening before this PR?
Detailed description can be found in #4929.
The values of backed enums were discarded and regular array keys were used to build the options for the HTML select. This resulted incorrect values for the enums being passed to the controller when saving the entry. In my case PHP complained because 0 was not an option available in my enum.
AFTER - What is happening after this PR?
The HTML select has options with values correctly set with the corresponding values of the enum.
HOW
How did you achieve that, in technical terms?
From a technical side, a change was needed to preserve the array keys of the $options array that was built with the values of a backed enum.
Those are the option arrays for the two enum types before they are flattened in the enum.blade.php:
SimplePriority::class
array:3 [
  0 => "LOW"
  1 => "MEDIUM"
  2 => "HIGH"
]

Priority::class
array:3 [
  0 => array:1 [
    10 => "Low"
  ]
  1 => array:1 [
    20 => "Medium"
  ]
  2 => array:1 [
    30 => "High"
  ]
]

When I replace array_merge(...$options) with array_replace(...$options), I get the correct resulting array with the enum values as the array keys:
array:3 [
  10 => "Low"
  20 => "Medium"
  30 => "High"
]

Is it a breaking change?
I assume it's not, because backed enums likely never worked correctly before. But of course, I am not sure about this.
How can we test the before & after?
Set up a backed enum (see #4929) and used it to configure a field. The resulting HTML will likely have option values like array keys (0,1,2,3,...).
When checking out this fix, the resulting HTML should produce options with the values of your enum (10,20,30,...).

A new inspection was created.

The inspection completed: No new issues

Hey @Kovah thanks for the contribution. 🙏
I can confirm that Backed Enums are broken for int backed type. I didn't noticed it before, sorry, we have only string examples in our demo 😭
Your issue report and PR were very detailed, that made this easier to reproduce and test the fix, thanks for that 🙇
I will be merging this and tagging a new version by the end of the week.
Cheers

Thanks for taking some time for the review. Glad I could help.


Create Persian.json

add Persian language support

Checkout the contributing guidelines. You'll need to update the target to the release branch.

lgtm. Could you rebase your changes? Showing some extra commits in the PR.


Update to 1.13.0

There shouldn't be many changes to the recipe since the v1.13.0 release doesn't include that many changes.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@lbdreyer you can drop the patches.

Thanks @lbdreyer!


Removed k8s API's in stackrox resources 3.72.2

The following resources are removed since k8s v1.21

this should be fixed in my opinion

Hi @Elyytscha
We've made updates for PSPs generation, and so it shouldn't happen for newer versions of k8s. The support for PSPs wasn't removed completely though, and in some cases they may be generated.
In order for us to be able to investigate this further, could you please let know how do you deploy StackRox: with Helm charts, with Operator, with deploy/(k8s|openshift)/deploy.sh?
Thanks!

Also, please check this documentation that describes when PSP generation is in place and how to control that https://docs.openshift.com/acs/3.72/release_notes/372-release-notes.html#psp-changes

IIRC, deploy.sh (and deploy-local.sh) doesn't auto-sense PSPs support therefore you will need to disable generation explicitly. The last command will change to:
POD_SECURITY_POLICIES=false MAIN_IMAGE_TAG=3.72.2 ./deploy/k8s/deploy.sh

Alternatively, you may try Helm charts deployment (either with script or manual). Helm charts should have auto-sensing of PSPs support on the cluster, plus this does not require cloning StackRox repo.
Please let know how it goes!


Modernize istio-remote helm chart

Modifies endpoints and services to match master
This PR further changes the Makefile target to use istio-${service}.istio-system
This PR further adds in the CA service and deploys it by default

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: geeknoid
Assign the PR to them by writing /assign @geeknoid in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/assign @geeknoid
/assign @costinm

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
Assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sdake: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
8578d50677100bd35c5f8657134ad0f8aa9c6d89
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test e2e-bookInfo-envoyv2-v1alpha3

@sdake: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
8578d50677100bd35c5f8657134ad0f8aa9c6d89
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@sdake: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
f7d23e24e0144a84bf97c64ddd4c72cdfae8e2f3
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: costinm
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [costinm]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sdake: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests-v1alpha3.sh
f7d23e24e0144a84bf97c64ddd4c72cdfae8e2f3
link
/test e2e-bookInfo-envoyv2-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@costinm re test for full pilot and mixer on remote, I'm not sure I follow.  Do you mean to create a pilot and mixer deployment on the remotes?  I could see how this is valuable post 1.0 when pilots are communicating state with one another.  Is your desire to test "can a remote be upgraded from just endpoint descriptors to a ful on control plane?"


Remove legacy global PrevalenceDataDate variable

I believe it's safe to remove the global PrevalenceDataDate variable from location.ts, which is currently confusing the codebase.  Based on TODOs in the code base, it looks like this was the intent, and based on testing, it appears this was just one last step of a migration that wasn't finished.
Evidence:

It's not serving a practical purpose; it's not automatically updated by update_prevalence, and so it currently reads December 12, 2021, which is clearly wrong.
The location-scoped updatedAt in AppLocation in update_prevalance.py is required; the as_app_data() function sets it always.
Making 'updatedAt' required in the TypeScript code base yields no errors with the current load.

This looks good to me. @beshaya you want to take a look and merge?


Trim empty lines from results

ExactPrint captures the comments and whitespace preceding the definition, so it often gives us a wall of whitespace. It would be nice to ignore this.

Count the number of empty lines
Drop those empty lines before printing
Update the location SrcSpan before printing

I'll try to pick this one up but I have a few questions:

I'd assume I can just drop the lines starting with comments or general white space but are we counting the lines for display purposes? (e.g. "14 empty lines not shown"). I'd assume not.
Dropping the lines seems easiest at hgrep/src/Language/Haskell/HGrep/Print.hs, but it's not entirely clear how to update the SrcSpan from there, considering I can only see it present in hgrep/src/Language/Haskell/HGrep/Internal/Data.hs as part of the ParseError.

Thanks! :smile:

I think this one will be a one-liner once the pending line numbers PR is merged! Best wait for that. It identifies empty lines.

On 6 Oct. 2017, at 2:58 pm, Ryan James Spencer<EMAIL_ADDRESS>wrote:
I'll try to pick this one up but I have a few questions:
I'd assume I can just drop the lines starting with comments or general white space but are we counting the lines for display purposes? (e.g. "14 empty lines not shown"). I'd assume not.
Dropping the lines seems easiest at hgrep/src/Language/Haskell/HGrep/Print.hs, but it's not entirely clear how to update the SrcSpan from there, considering I can only see it present in hgrep/src/Language/Haskell/HGrep/Internal/Data.hs as part of the ParseError.
Thanks! 😄
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

@justanotherdot  PR #21 is merged now, so you now could simply throw away empty lines.
Printing is happening in HGrep.Print module  printSearchResult function. Separation is also already implemented there, all you need is remove nill lines from the output. Consider that it should be done for both PrintLineNums and NoLineNums cases.

Thanks @vrom911 ! I didn't know you could do the comma separated trick in type declarations!


Dashboard time selector colors are wrong

May be some caching issue after trying dark theme but command+shift+r didn't help in this case:

Wrong also here:

@laurijamsa this only happens because you have visited the dark mode test version. If you go to the dark mode page and switch to light mode this should be solved. It's not something that will be an issue when the dark mode is published, only now when we are testing both versions at the same time

Ah, ok. Then, I think we can close this. Noticed also this:


toImmutable alias for fromJS

N.B. this is a super nit / nice to have.
When using fromJS I always alias it to toImmutable because the former is not that descriptive.
To be clear I understand the reason why it is called like that i.e. it is symmetrical to toJS (also Immutable.fromJS although most of the times I don't import the whole thing) yet I think it is worth asking if you'd be open to add the alias / accept a PR.
cheers

Not sure why you would need this? Immutable.fromJS() is perfectly descriptive and you can always do:
import { fromJS as toImmutable } from 'immutable';
// or
const { fromJS: toImmutable } = require('immutable');

@leebyron What are you thoughts on keeping data from Redux in React views as immutable objects. For example, you make a getRequest, and make the data immutable in the reducer, and then serve it to the view. What is the advantage of keeping the data immutable throughout, as opposed to converting it to a plain JS object using toJS() when it 'hits' the view. An engineering team I am a part of is curious about whether it makes sense to keep the data immutable at all times. Thanks in advance!

Closing because it is not a big deal, I also realized that I can write a babel plugin.


pdhprod-reportstream-website: 503

Problem statement
The following error occured for pdhprod-reportstream-website:
'503 - Service Unavailable' does not match the expected status '200 - OK'.
What you need to know
[Links to documents, workflows, or list of key people and contact info]

PagerDuty
Logs

Not sure if this is actionable anymore as we're still sending to CA. Closing.


Split out accept/reject endpoints for Assessments

https://github.com/ministryofjustice/hmpps-approved-premises-api/pull/195#discussion_r1012724085

 CRUD endpoints for Assess


Add support for tags

Make it possible to add tags to mails. These tags can later be seen/filtered by on the Flowmailer web.
Example where the message where tagged with hello_world

Having not seen this Gem before, I was a bit confused why we were creating a Dummy application inside the repository.
Think we could extract the creation of the dummy app in a separate commit and type up a short description of why it is required, for future developers. 😄

I've pushed an update now with separate commits 👍


Is mapclassify code black?

@sjsrey Is the "official" mapclassify code formatting style black? If not, shall I create a PR that blackens the repo and add a black badge to README.md?

It isn't, but I think we should adopt it. So please do the PR.


cloudcompare: 2.11.0 → 2.11.2

Motivation for this change

Changelog
Replace -DCOMPILE_CC_CORE_LIB_WITH_TBB=ON with -DCCCORELIB_USE_TBB=ON
Remove outdated comments

Things done

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

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 101879 1

1 package failed to build:

cloudcompare

Result of nixpkgs-review pr 101879 1

1 package built:

cloudcompare

is still true, and the submodules are even growing, so we should keep that comment.

I just wonder, what is the reason to keep comment with list of submodules? It's easy to obtain from upstream repo, but keeping comment up to date is additional effort.

I just wonder, what is the reason to keep comment with list of submodules?

@sikmir Two main reasons:

To make clear that / why the derivation doesn't depend on e.g. libE57Format from nixpkgs. It's a common issue in nixpkgs to be surprised that some tool didn't get e.g. a security fix even though the corresponding package was fixed. That's why it's useful to point out explicitly that the package vendors a dependency that we also have in nixpkgs.
To explain why the package may have more dependencies than stated in its README.

Runs well, merging, thanks for the update!

@sikmir Two main reasons:

To make clear that / why the derivation doesn't depend on e.g. libE57Format from nixpkgs. It's a common issue in nixpkgs to be surprised that some tool didn't get e.g. a security fix even though the corresponding package was fixed. That's why it's useful to point out explicitly that the package vendors a dependency that we also have in nixpkgs.
To explain why the package may have more dependencies than stated in its README.

It's true that one can conclude it from the upstream repo, but fetchSubmodules can easily go unnoticed to a drive-by contributor that may not follow indirections, so making it visible at first look in the derivation can avoid additional work.

Thanks, I will keep it in mind now.


kiosk, feature request: open game in editor on PC

When playing a game in kiosk, the user should be able easily send the game to the Arcade editor on a PC. Updating the game's persistent share should seamlessly update the game in kiosk, where the user can see their changes reflected.
Assume no keyboard or mouse is attached to the kiosk (physical cabinet or Xbox).

No plans to address this.


Added basepath method

Added a way to set the RequireJs baseUrl automatically from php without having to set it in a js file

Great Idea! I had some refactoring to do so I made sure to support your yse case in #2. Thanks.


Fix custom start issue

I think the issue we've seen regarding the vmq_diversity plugin not being started the first time is due to the case lists:member(App, erlang:loaded()) of line. When no App  module is loaded it falls through to the ensure_all_started line. The second time around the App module has been loaded and the custom start function is being called.
I guess the erlang:loaded test was there to make sure we don't throw an exception. We probably need to rethink this.

@dergraf I just  (force)pushed something that I think is the technically correct fix. Instead of looking for App in erlang:loaded() I load the application and then ask for the list of modules the application provides.

lgtm. have you checked if the issue with 'old' vmq_diversity still remains?

@dergraf just double checked - yes: vmq-admin script it works with the old vmq_diversity the first time the plugin is enabled. Merge?


App interface enhancements

In working on how to launch a CyberGIS app from HydroShare with @selimnairb and @ahmetartu we reviewed the app calling protocol and identified the following deficiencies/concerns.
An example app launch call is https://apps.hydroshare.org/apps/raster-viewer/?res_id=877bf9ed9e66468cadddb229838a9ced&usr=dtarb&src=hs

The tag res_id is limiting as the target system may have this used for another purpose.  It would be better for the calling tag to be user specified as part of the app instance setup.
There are concerns over trust in the query string.  Specifically passing of usr= would be better handled by relying on OAuth and passing of src= would be better handled using the refer header.
There does not seem to be a way to test apps from a development platform.  I tried to test an app from park.hydroshare.org, but got the error that there was no such resource in HydroShare.  I suggest that at least appsdev.hydroshare.org be configured to take inputs from our development platforms for testing.

@selimnairb and @ahmetartu feel free to elaborate or correct anything I may have not got right from our discussion.  @zhiyuli @danames please ask @selimnairb and @ahmetartu if you have questions.

Here is a proposed architecture for orienting apps around content types rather than resources:

Currently, an App resource can be applied to one or more resource types.
However for some resource types, e.g. the soon-to-be-written RHESSys model instance, there can be multiple data files of different types within one resource (e.g. a DEM raster, a landcover raster; climate forcing timeseries, model output timeseries)
To allow generic tools (i.e. Apps) to be applied to these multiple data sets within a resource, we should move HydroShare apps from having n resource focus to being focused on content types.
Each resource type would advertise: (1) zero or more content types that it is capable of supplying (e.g. through a get_supported_content_types() method on AbstractResource, and overridden by concrete resource types); and (2) for each content type, file paths within the resource that are instances of the content type (e.g. through a get_files_of_content_type(content_type) method on AbstractResource, and overridden by concrete resource types)
A given App resource would be associated with one or more “supported content types” (instead of “supported resource types”).  Then, at runtime, when an App is being applied to a given resource instance, it would call get_files_of_content_type() for each content type that the App knows how to deal with.
In the case of resource type instances that only supply one dataset of one content type, the App would behave the same as it does now.  However, for resource type instances that support multiple datasets or content types, then the App could allow the user to choose what dataset(s) of each content type to be displayed/visualized/whatever.
I think that we can relatively easily create the concept of named content types that consist of one or more MIME types.  For example, a GeographicRaster would contain a list of MIME types for raster formats supported by our version of GDAL.  We can create these lists in the admin console.

@selimnairb
as for the RHESSys resource type, what should the get_supported_content_types() method return?
and what should it return for the Raster resource type?

@zhiyuli First, we will need to define content types supported by HydroShare; a content type is a named set of one or more MIME types.  We can start by creating content types supported by each of the current resource types.  For example, a "geographic raster" content type (not to be confused with a geographic raster resource), could be a list of MIME types supported by the as-compiled version of GDAL HydroShare uses; a "point timeseries" content type could be MIME types associated with WaterML, CSV, an sqlite database, etc.
For the RHESSys model instance, get_supported_content_types() would return: {'geographic_raster', 'point_timeseries', ...}.  Likewise, the raster resource type get_supported_content_types() would return {'geographic_raster'}.
Then get_files_of_content_type('geographic_raster') called on an instance of a raster resource would return the content file that represents the geographic raster (e.g. data/contents/BearCk.tif for a GeoTIFF).  For a RHESSys model instance, this would be more complicated, as there can be more than one raster, and these rasters can be in different locations.  It would be up to the author of the RHESSys model instance type to override get_files_of_content_type().  However the base/abstract class could have a default implementation that simply iterates over all resource files, returning files that match the desired content type (sub-classes would override this if they wanted to restrict the list of files returned, or had a more efficient way, e.g. based on resource type-specific metadata, of returning the list of files).  This way, resource type authors would not need to do additional work unless they had special needs.

Let's assign some time at the all hands meeting to discuss this. I don't
want to add a lot of complexity at this stage but see the value in
extending apps to work on content rather than resource type.
On Tue, Feb 16, 2016 at 2:56 PM Brian Miles<EMAIL_ADDRESS>wrote:

@zhiyuli https://github.com/zhiyuli First, we will need to define
content types supported by HydroShare; a content type is a named set of one
or more MIME types. We can start by creating content types supported by
each of the current resource types. For example, a "geographic raster"
content type (not to be confused with a geographic raster resource), could
be a list of MIME types supported by the as-compiled version of GDAL
HydroShare uses; a "point timeseries" content type could be MIME types
associated with WaterML, CSV, an sqlite database, etc.
For the RHESSys model instance, get_supported_content_types() would
return: {'geographic_raster', 'point_timeseries', ...}. Likewise, the
raster resource type get_supported_content_types() would return
{'geographic_raster'}.
Then get_files_of_content_type('geographic_raster') called on an instance
of a raster resource would return the content file that represents the
geographic raster (e.g. data/contents/BearCk.tif for a GeoTIFF). For a
RHESSys model instance, this would be more complicated, as there can be
more than one raster, and these rasters can be in different locations. It
would be up to the author of the RHESSys model instance type to override
get_files_of_content_type(). However the base/abstract class could have a
default implementation that simply iterates over all resource files,
returning files that match the desired content type (sub-classes would
override this if they wanted to restrict the list of files returned, or had
a more efficient way, e.g. based on resource type-specific metadata, of
returning the list of files). This way, resource type authors would not
need to do additional work unless they had special needs.
—
Reply to this email directly or view it on GitHub
https://github.com/hydroshare/hydroshare/issues/965#issuecomment-184890945
.

@danames Agreed that we don't want to add too much complexity and development cost.  I believe this can be done relatively simply as outlined above, with the majority of the code in the BaseResource class.  We should discuss this at a break-out group at the all-hands meeting so that we can make sure there are no special cases that add complexity that we cannot afford.  If we agree to proceed, we may be able to get this done during the hackathon portion of the meeting.

@alvacouch Please comment on this issue.

One concern: HydroShare provides detailed metadata for each resource type. Apps can use these metadata directly instead of exacting them from the resource files by themselves.
If a "Composite" resource type has rasters, vectors, netcdf and timeseries, will each of their metadata be extracted by hydroshare?

The above concern also applies to issue #993 which is being addressed by PR #1003.
When launching an app, sometimes user needs to pass some resource-specific metadata in url query string. These metadata is currently retrieved from the requested resource obj  --> metadata obj.
Say we launch an raster viewer app from a "composite resource" (holds raster, vector and timeseries) landing page. The raster viewer app only uses raster resource files. If the "Composite" resource type cannot provide metadata for this raster file, current implementation for "making app url more flexible" will not work any more.

@zhiyuli Is a composite resource a Collection Resource (a resource that contains other resources), or is it merely a resource that contains a bunch of files?
In either case, as all resource types will support the get_supported_content_types() and get_files_of_content_type(content_type), an App resource instance can discover what it needs by calling these functions on the object resource.  In the case of Collection Resources, the calls can be broadcast to all contained resources, and the results collated before being returned to the App.

@selimnairb I mean a resource that contains a bunch of files. So this resource will extract metadata for each file (raster, vector and ...) it holds?

@zhiyuli - The resource metadata is for the resource as a whole. So, unless we design the "composite" resource so it contains file-specific metadata for every content file, there wouldn't be specific metadata for each content file. We should discuss whether we want to have file-specific metadata (and what it should be) for each content file in a "composite" resource.
For "collection" resources, since they are just pointers to other resources within HydroShare, there would be both the resource level metadata for the "collection" resource AND resource level metadata for every collected resource (because they are all separate resources and have their own metadata).

@horsburgh Thanks for this clarification. I am more concerned about the topic in your first paragraph, especially when a "composite" resource contains multiple resource files of different types (raster, vector and...).

@zhiyuli @horsburgh Reproduced from above:

Each resource type would advertise: (1) zero or more content types that it is capable of supplying (e.g. through a get_supported_content_types() method on AbstractResource, and overridden by concrete resource types); and (2) for each content type, file paths within the resource that are instances of the content type (e.g. through a get_files_of_content_type(content_type) method on AbstractResource, and overridden by concrete resource types)

And:

Then get_files_of_content_type('geographic_raster') called on an instance of a raster resource would return the content file that represents the geographic raster (e.g. data/contents/BearCk.tif for a GeoTIFF). For a RHESSys model instance, this would be more complicated, as there can be more than one raster, and these rasters can be in different locations. It would be up to the author of the RHESSys model instance type to override get_files_of_content_type(). However the base/abstract class could have a default implementation that simply iterates over all resource files, returning files that match the desired content type (sub-classes would override this if they wanted to restrict the list of files returned, or had a more efficient way, e.g. based on resource type-specific metadata, of returning the list of files). This way, resource type authors would not need to do additional work unless they had special needs.

@selimnairb - these are great ideas, and we definitely need ways of getting at the individual files of a composite resource.
I think @zhiyuli is wondering if we will go a step further than providing access to the individual files to providing file-specific metadata. For example - if you had a time series in a composite resource, could you access all of the time series metadata?  Or, if you had a raster in the composite resource, can you get the extents of the raster and other raster specific metadata?  Or, are you limited to only the metadata describing the composite resource as a whole?
Is that what you are asking @zhiyuli ?

@horsburgh @zhiyuli I am thinking that we go for a light weight solution to start with with minimal metadata available for resource files.  Something like what the resource file list REST API returns:
{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "url": "http://www.hydroshare.org/django_irods/download/a94af692e2d1442cad3797d23ed7cdf8/data/contents/Onion.tif",
            "size": 76477563,
            "content_type": "image/tiff"
        }
    ]
}

However we should discuss use cases at the all-hands to make sure the simple solution supports key App use cases.  I think that it does.  Also, for some types, e.g. geographic raster and vector, there is nothing to stop the App from inspecting metadata itself once it gets the file in its hands.

@horsburgh Yes, that is what I am asking. The whole planned changes here are to make apps more re-usable. Say, an app designed to work with a raster resource should also be able to work with a single raster file in a "composite" resource. The raster resource is metadata-rich (one of selling points of HS), should we make the single raster file in "composite" resource metadata-rich as well? What are the pros and cons of doing or not doing this? What are the costs for hydroshare developers and for HS users? Do we need new plans -- eg., create separate resource for each file and reference them in the "composite" resource just like what current collection does?...A recent request from CyberGIS team asked us to make webapp url more flexible and carry more metadata about the requested resource (file) in query string. We just implemented this in PR-1003. Will the planned changes impact this new-born feature?
@selimnairb I think it is a good start. we could discuss more at the AHM. Thanks

@zhiyuli I understand the concern.  The metadata that HydroShare provides is important.  However I think there is a place for being able to address light weight objects within resources (i.e. resource files) that have less metadata than the heavy weight objects (i.e. HydroShare resources).  The reason is that we can't hope to model and store, within HydroShare's metadata storage, the complete metadata of every single entity.  Partly this is because our resource types currently require far too much code be written to implement, and also because metadata fields can change, and will do so faster than HydroShare can keep up.
However, I don't think we don't need "full metadata" to still do useful things with light weight objects (visualize a raster or time series dataset).  Also, there is nothing to stop a specific resource type from having its own metadata store that contains other information about resource files, only a portion of which is reflected in HydroShare's metadata representation (this is how the in-progress RHESSys model instance works).  An App could still be made to be resource type specific (we can create content types that correspond to resource types), in which case the App could use this type-specific metadata as needed.
Let's talk more next week.

@zhiyuli and @selimnairb - happy to chat about this next week. Given that many content files that could potentially be part of a "Composite" resource actually contain metadata (e.g., a raster has information about extents, etc. within the actual file), there is nothing precluding the App from extracting those metadata from the file itself (even if HydroShare doesn't provide those metadata).  But, you would have to retrieve the file first.  Just a thought.

Lets think of the case of a raster resource.  This holds resource level metadata, such as creator, Abstract etc.  It also contains metadata specific to the raster file, such as the spatial reference and cell size.  These are extracted from the file.  It also contains content specific to the contents of the file that HydroShare has added, such as Variable Name, Units.  (A current use case is we received some groundwater level data from a user as a generic resource and he wrote in the abstract that the variable is Groundwater level and units ft.)  If this was associated with the file the binding would be tighter.  GeoTIFF files do not have a standard model for things like variable name and units.  I suggest that we should consider supporting this file level metadata as optional content associated with resource files in a composite resource.  If it is optional, it should not add additional burden, so we still meet Brian's lightweight requirement.  If we are clever in the coding we can reuse the code for this that is already there for the raster resource type, so should not need too much additional coding burden.  If we did this we would provide the capability for users to have a good place to specify this metadata, and then for apps to look for it and use it where they can take advantage of it (such as displaying the variable name and units in a visualization).
Hopefully next week we can chat about the specifics of some of this and how this idea might generalize to other file types involved.

There are several things that I notice here:

there are several conflated use cases

allowing apps to infer file types (really, using the MIME extension convention would do a lot here, as well as the 'file' command in Linux that reads file magic numbers independent of MIME type)
giving apps hints -- going beyond simple file type -- that would allow them to more effectively visualize content.
allowing users to understand the provenance of individual files in a resource, independent of app understanding.

these use cases require really different approaches.

app mime type functionality: we can load a library that does this.
an app hint is -- in essence -- a creator-defined or user-defined tag on a file.
the provenance of files -- past file types and tagging -- is a very, very deep issue. Perhaps better handled by gluing resources together as composites.

I suggest a really lightweight approach to the first two (or really the second one, because we can do the first with a library!):

Allow content providers to tag resource files with app metadata tags that help apps display them.
Keep a list of tags and their meanings, a tag registry.
The final arbiter of the tag registry is apps.hydroshre.org

In other words,

Use general tags.
Allow app developers to design useful tags.
Allow multiple tags per file, to allow different apps to tag them in different ways.

This would be level one. Level two would be to allow users to suggest file tags independently of the creator. We could -- in essence -- crowdsource the appropriate tags for a resource file.

@alvacouch Thanks for your thoughts on this.  Your proposed lightweight approach is essentially the same as my proposal, with a bit more detail (e.g. having apps.hydroshare.org be the final arbiter of the tag registry), as well as allowing files to be associated with multiple tags.

Yes. That is correct. I do think it's important to have a tag registry.

@alvacouch My initial thought for tags is to create content types from content types supported by existing resource types.  For example, the "geographic raster" content type would be the set of MIME types supported by our version of GDAL.  Do we need to support content types that are not simple sets of MIME types?

@hyi @dtarb @rayi @danames
We discussed this on the call today. We understand the basic issue but don't really know what Dan needs.
But this has been on the back burner too long and I suggest a simple and expedient fix:

Expose the set of MIME types of files in a resource as metadata. This is multi-option checkbox that is set automatically by file type and is not edited by the user.
Let apps register sets of MIME types that they handle (via a multi-checkbox selection).
any overlap between sets means there is some possibility of the app handling files from the resource.

This doesn't solve the general problem:

It solves the problem of visualizing a time series embedded within a model instance, separately ("logical or").
It does not solve the problem of requiring time series, coverages, etc in a more complex visualization ("logical and").

For the general problem, we would have to allow the app to specify in more detail what kinds of files it absolutely requires, as opposed to the kinds it opportunistically handles. Perhaps we need a flag that switches between "all" and "any" types required?

@alvacouch I did start on this path quite a while ago which you can find in this branch: https://github.com/hydroshare/hydroshare/tree/file-type-web-app
The only difference I see now is that in my implementation a specific app can register only one MIME type which can be easily changed.

Refer to #1477

Closing as I think this has been satisfactorily implemented.  @danames or @alvacouch feel free to reopen, or better yet state a new issue if there are unmet needs from this.


Set of changes to start using run_rocm_test.sh for EPSDB.

Update clone_test.sh to only clone what is needed for EPSDB. Add expected passing lists for babelstream, Nekbone, and openmpapps. Modify various run scripts for validation check.

Currently testing these changes with a ROCm build.