.introspect(.searchField, on: ...) does not work in 0.4.0

When introspecting a .searchable with the new introspect methods of 0.4.0, this does not work even when explicitly also searching in ancestors:
.introspect(.searchField, on: .iOS(.v16), scope: [.ancestor, .receiver]) { searchField in
    searchField.backgroundColor = .red
}

The "old" version works fine:
.introspectSearchController { searchController in
    searchController.searchBar.backgroundColor = .red
}

I unfortunately cannot easily test introducing a new IntrospectableViewType for a UISearchController because of #227.

@xmanu funny enough, you've stumbled upon the one thing I knowingly wasn't able to get quite right 😄 🎯
Apart from my advice on #227 about SPI, I don't think you'll have luck implementing this yourself. I need to do some more thinking about how to introduce ancestor introspection beyond "look for a parent of X controller type", because that doesn't seem to cut it for this use case. Maybe it needs to be a fully custom lookup closure, but I'm not quite sure how that'd look yet, hence why I left it like that for now.
Fret not, this is on my mind. My next priority is to think of a more custom way to specify controller introspection and get back to you when it's ready.

Wow that was fast! Amazing work on the new redesigned version btw. I like the explicit nature of supporting implementation differences in different iOS versions. Very clever! I already replaced all old calls (except for the searchBar/searchController) with the new syntax in our project and everything works well.

@xmanu excellent! Was about to post about it here. Will tag release 0.5.0 shortly so you can peg it in your project. Good to hear it all works as expected now :)

I will test replacing the rest of our introspected calls with 0.5.0.
Is there any technical reason, that the new call returns the search bar and not the search controller? I have one place where I actually need the UISearchController to circumvent an internal SwiftUI bug...

@xmanu yes, the reason is that UISearchController is actually not always guaranteed to exist (e.g. in a navigation stack's nav bar on iPad on iOS 15), so I decided to get down to view level which is always guaranteed.
You can always implement your own custom selector if you need the controller (bear in mind it won't work in some specific cases as mentioned):
@_spi(Internals) import SwiftUIIntrospect

extension iOSViewVersion<SearchFieldType, UISearchController> {
    @available(*, unavailable, message: ".searchable isn't available on iOS 13")
    public static let v13 = Self.unavailable()
    @available(*, unavailable, message: ".searchable isn't available on iOS 14")
    public static let v14 = Self.unavailable()
    public static let v15 = Self(for: .v15, selector: selector)
    public static let v16 = Self(for: .v16, selector: selector)

    private static var selector: IntrospectionSelector<UISearchController> {
        .from(UINavigationController.self) {
            $0.navigationBar.topItem?.searchController
        }
    }
}

Not sure if the extension will clash with the existing one, so you might need to disambiguate it by specifying the type in the closure:
.introspect(.searchField, on: .iOS(.v15, .v16)) { (searchController: UISearchController) in
	...
}

That is a very valid reason! I will probably introduce a new type so I can call .introspect(.searchController, ... and prevent the typing clash. But this is probably not a good idea to include in the library I guess...

@xmanu yeah it was a tough call. Ultimately I think prioritizing predictability is best, with users having the option to dip into more nuanced territory via custom selectors. Good shout introducing the new type, sounds sensible 👍


Lab02

It appears that your Validator is not running when the index.js is executed.  You don't appear to calling the validate() method of your Input or Note classes (which would in turn call your Validator).  Here are some hints:

Try checking that the input your are passing to your Notes module is valid before executing (i.e. run input.valid() and if it is true your can run this.execute() in the Notes module).

Validate your note in the add() method of your Note() object, and console.log if the validation is true.

Regarding your Validator module:

The validate() method of the Validator should check if the input is an object, and if each field type in the input matches the requirements of the schema.

You can cycle through the schema fields using a for(let field in schema) and compare it against the object being passed into the validate() method.  Try checking against object[field] for each property.

In addition to validate() you should make several simple methods to check your input object fields for the correct type.  For example, the method isString(input){ return typeof input === ‘string’ }; will return a boolean indicating whether or not the input is a string.  You should probably do this to check for type ‘number’ as well.


Error with css variable

<EMAIL_ADDRESS>var parseAnimationShorthand = require("@hookun/parse-animation-shorthand")

// this will fail
// UnexpectedValue: var (name)
parseAnimationShorthand.parse('animationName var(--animation-input, 0.2s) ease-in-out')

Thank you. I'm aware of the problem as it has already been issued in #10. For parsing CSS Variables, The function requires an extra argument about the type of --animation-input. However, I have to put the implementation on hold due to current time constraints.

Thank you. I got it.


Add utilities for defining parsers. (#218)

Fixes #218.
Note that this includes m_p_s, which was already reviewed — it's just been moved out.
I also moved out ResultParser, which is nice and general.

Landed in 5d74f1ee9455cf4084ec2b96a0103503a0a64ae0 with an explanator comment for ResultParser.


build: Commit go.sum and remove go mod tidy calls

PR Checklist
Please check if your PR fulfills the following requirements:

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

What is the current behavior?
go.sum is not committed and have to have go mod tidy calls
Issue Number: n/a
What is the new behavior?
go.sum is now committed and  go mod tidy calls removed
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Are there any new imports or modules? If so, what are they used for and why?
Are there any specific instructions or things that should be known prior to reviewing?
Other information

I haven't made the change in the pipeline library yet but it still seems to work so that is great.

@ernestojeda,  We should wait to merge this until you make that change as it may be making this work.


raftstore-v2: active flush before close

What is changed and how it works?

Issue Number: Close https://github.com/tikv/tikv/issues/14981, #14362
What's Changed:

active flush before server stop

Actively flush tablet for regions whose flush gap (replay count if start now) exceeds the threshold.
To speed up this process, temporarily increase both raftstore threads and flush threads (hight priority background threads in rocksdb).
The log ouput below shows the PR reduces the replay complete time from a minute to less than 5 seconds, with the cost of flush time around 20 seconds during server stop.
The reduction of raft log replay time could help raft group to be a health status during rolling restart which makes QPS more stable during rolling restart.


1.8.9 complications

I have read that you are going to fix the effects on the different versions of the Ukulele, but how are we meant to charge them? They cannot be placed on recharge pedestals and do not draw from the aura while the player is wearing a Vis amulet, I don't know if this is already scheduled to be fixed. Specialized knowledge fragments also don't seem to correctly add that aspect to the research pool of the note currently open. Primal orbs don't seem to have a texture, Thauminite wand caps do not seem to render properly on wands, and a few other minor graphical and grammatical errors. Great work on the mod, I love what you have done so far.

Primal orbs are fine for me, i'll have to look into that. Other bugs are existing because of Azanor's API changes - I have to adapt to the new version of TC.


Include  Angular  Material UI native methodes and properties

Lovely components Angular team,
I'm wondering how can i access to Material UI native methodes and properties when it's wrapped inside a reactive form based component?
import { Component, ViewChild, } from '@angular/core';
import { MdInputContainer } from '@angular/material';

@Component({
  selector: 'app-text',
  template: '<md-input-container>
                  <input mdInput class="form-control" [formControl]="formControl" />
                 </md-input-container>',
  styleUrls: ['./text.component.css']
})
export class TextComponent  {
  constructor() {}
}

For example i want to add the placeholder and disabled  properties (the Angular 2 Material)
 <app-text [formGroup]="myFormGroup" placeholder="Favorite food" value="Sushi" disabled="true" controlName="myFormControl"></app-text>
Thank you in advance,

@dgouissem : I believe that this question is better asked in stack overflow rather than here.
You can use input properties on the TextComponent and bind the input values to the input element on the component
import { Component, ViewChild, Input} from '@angular/core';
import { MdInputContainer } from '@angular/material';

@Component({
  selector: 'app-text',
  template: '<md-input-container>
                  <input mdInput class="form-control" [formControl]="formControl" [placeholder]="placeholder" [disabled]="disabled"/>
                 </md-input-container>',
  styleUrls: ['./text.component.css']
})
export class TextComponent  {
  @Input() placeholder: string;
  @Input() disabled : boolean = false;
  constructor() {}
}

Thank you @asaph26 ,  this is how we can pass properties and for methodes what is the proper manner to call  them from the wrapper component?
Thank you again.

@dgouissem : Yes that is the proper manner.

@dgouissem, I think all you need to know is shown under the Component Interaction section, in Angular docs.

Please keep GitHub issues for bug reports / feature requests. Better avenues for troubleshooting / questions are stack overflow, gitter, mailing list, etc.


[Bug]: Readability on the data science page

Describe the bug

The text is not much readable
To Reproduce
No response
Expected Behavior
No response
Screenshot/ Video
No response
Desktop (please complete the following information)
No response
Additional context
No response

hi, can you assign this to me?

sure buddy go ahead

resolved


System adds selection for connected atom to selected bond for after Add/Remove hydrogens (or Calculate CIP)

Steps to Reproduce

Put Bezene ring and select single bond
Press Calculate CIP (Ctrl+P)

Actual behavior
System adds selection for connected atom to selected bond

Expected behavior
Selection remains the same as before operation

Environment details  (please complete the following information):

Ketcher Version 2.18.0-rc.8 Build at 2024-02-22; 17:34:35
Indigo Toolkit Version 1.18.0-rc.8.0-g85a393c7c-x86_64-linux-gnu-11.2.1
Firefox Version 123.0 (64-bit)
Win10
Issue found while testing https://github.com/epam/Indigo/issues/1589

Duplicate of https://github.com/epam/ketcher/issues/4113


Interchain build options not being propagated in E2E tests

Summary
Currently, the call to ConfigureRelayer does not propagate options to here
We need to decide the best way to pass configuration functions.
If we were to continue with the current structure, we would add a configuration fn which modifies interchaintest.InterchainBuildOptions to the SetupChainsRelayerAndChannel function, however this seems like it will bloat the method signature a bit too much. It may be nicer to consolidation all of these configration fns into a single type. Maybe something along the lines of:
type SetupOptions struct {
 ChannelOptions func(*ibc.CreateChannelOptions)
 BuildOptions func(options *interchaintest.InterchainBuildOptions)
 ChainSpecOptions ChainOptionConfiguration
}

This could easily be extended as required.
As a side note, it looks like this fn is very poorly named, it is not just configuring the relayer, it is configuring the relayer and also creating all the docker resources for the chains!
We can rename this / split up functionality in a follow up.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged/assigned

Hi @chatton, I'd like to get this assigned :)

@bznein If you continue at this pace, there's not going to be issues left for the rest of the team, man!

the structure of the tests has changed enough with the test suite level refactor that this issue isn't relevant anymore


Index page is missing a link to /visits endpoint

The index page mentions the /visits endpoint but the "view" link is not clickable. We have implemented the /visits endpoint so the index page needs to be updated to include a link to the /visits endpoint.

I will take charge working on this

Go for it.


products page

Created products page, almost all filters work. Brands and ratings do not work at the moment as we do not have the data for that yet. Sorting works as well

I forgot to uncomment the auth part of the page, was just commenting it out to make it easier to do npm


make nupkg push ignore releases without nupkg-files

implemented by c3815e0191a8c71e7dea310bf4e20f4a469ad5b8 with the create-release option to not publish a MonkeyLoader variant


[BUG][Storage] Client side encryption causes high CPU.

On behalf of customer.
When client side encryption is used it wraps a stream here:
https://github.com/Azure/azure-sdk-for-net/blob/f8f89a8607ec59bdbc7f7776b8dde77d129c3645/sdk/storage/Azure.Storage.Blobs/src/BlobBaseClient.cs#L1072-L1084
The actual wrapping happens here:
https://github.com/Azure/azure-sdk-for-net/blob/f8f89a8607ec59bdbc7f7776b8dde77d129c3645/sdk/storage/Azure.Storage.Common/src/Shared/ClientsideEncryption/ClientSideDecryptor.cs#L243
The CryptoStream uses low block size leading to multiple unbuffered reads from network.
This in turn creates a lot of trace event emission from RetriableStream.
Desired solution is to inject buffering between crypto stream and network stream, or make crypto stream respect buffering settings from callers.

We are running into the same issue with latest Storage SDK. Production workloads are impacted during the peak hours. Having to scale up/out is incurring additional business costs.

Repro:
namespace ConsoleApp1
{
    using System;
    using System.Diagnostics.Tracing;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using Azure.Core;
    using Azure.Identity;
    using Azure.Security.KeyVault.Keys;
    using Azure.Security.KeyVault.Keys.Cryptography;
    using Azure.Storage;
    using Azure.Storage.Blobs;
    using Azure.Storage.Blobs.Models;
    using Azure.Storage.Blobs.Specialized;

    class Program
    {
        private const string StorageConnectionString = "REDACTED";

        static async Task Main(string[] args)
        {
            var cred = new ClientSecretCredential("REDACTED", "REDACTED", "REDACTED");
            var kvClient = new KeyClient(new Uri("https://kasobolkv.vault.azure.net/"), cred);
            var service = new BlobServiceClient(StorageConnectionString);

            using (var evtListener = new ThreadTransferSendEventListener())
            {
                await ReadWithClientSideEncryption(kvClient, service, cred);
                Console.WriteLine($"(ReadWithClientSideEncryption) Number of ThreadTransferSend events: {evtListener.counter}");
            }
            using (var evtListener = new ThreadTransferSendEventListener())
            {
                await ReadWithoutClientSideEncryption(service);
                Console.WriteLine($"(ReadWithoutClientSideEncryption) Number of ThreadTransferSend events: {evtListener.counter}");
            }
        }

        static async Task ReadWithClientSideEncryption(KeyClient kvClient, BlobServiceClient service, TokenCredential cred)
        {
            KeyVaultKey key = await kvClient.GetKeyAsync("testkey");
            var cryptoClient = new CryptographyClient(key.Id, cred);

            var container = service.GetBlobContainerClient("foo");
            var encryptionOptions = new ClientSideEncryptionOptions(ClientSideEncryptionVersion.V1_0);
            encryptionOptions.KeyEncryptionKey = cryptoClient;
            encryptionOptions.KeyWrapAlgorithm = "RSA-OAEP-256";
            var blob = container.GetBlobClient("bar").WithClientSideEncryptionOptions(encryptionOptions);

            byte[] data = new byte[1024 * 1024 * 10];

            // uncomment to upload data
            //new Random().NextBytes(data);
            //await blob.UploadAsync(BinaryData.FromBytes(data), new BlobUploadOptions());

            Stream stream = await blob.OpenReadAsync();

            await stream.ReadAsync(data);
        }

        static async Task ReadWithoutClientSideEncryption(BlobServiceClient service)
        {
            var container = service.GetBlobContainerClient("foo");
            var blob = container.GetBlobClient("baz");

            byte[] data = new byte[1024 * 1024 * 10];

            // uncomment to upload data
            //new Random().NextBytes(data);
            //await blob.UploadAsync(BinaryData.FromBytes(data), new BlobUploadOptions());

            Stream stream = await blob.OpenReadAsync();

            await stream.ReadAsync(data);
        }
    }

    class ThreadTransferSendEventListener : EventListener
    {
        public int counter = 0;

        protected override void OnEventSourceCreated(EventSource eventSource)
        {
            base.OnEventSourceCreated(eventSource);
            if (eventSource.Name.Contains("FrameworkEventSource"))
            {
                EnableEvents(eventSource, EventLevel.LogAlways);
            }
        }

        protected override void OnEventWritten(EventWrittenEventArgs eventData)
        {
            base.OnEventWritten(eventData);

            if (eventData.EventName.Contains("ThreadTransferSend"))
            {
                Interlocked.Increment(ref counter);
            }

        }
    }
}

Fix available in https://www.nuget.org/packages/Azure.Storage.Blobs/12.9.0


[ja] translate production-environment/turnkey-solutions.md

Translate production-environment/turnkey-solutions.md into ja.
Translated page on Deploy Preview:
https://deploy-preview-40714--kubernetes-io-main-staging.netlify.app/ja/docs/setup/production-environment/turnkey-solutions/

@ystkfujii
Netlify deploy failed with error "Build exceeded maximum allowed runtime".
Could you please execute force push to re-run the deploy?

@t-inu
I squash commits to one, and rerun deploy.
CI job became a success !

/assign @nasa9084

sorry to be late,
/approve


[resotocore][feat] Parse and return query structure

Description

To-Dos

[x] Add test coverage for new or updated functionality
[x] Lint and test with tox

Code of Conduct
By submitting this pull request, I agree to follow the code of conduct.

Codecov Report
Patch coverage: 81.48% and project coverage change: -0.04 :warning:

Comparison is base (b214dd3) 89.03% compared to head (cd6529e) 89.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1545      +/-   ##
==========================================
- Coverage   89.03%   89.00%   -0.04%
==========================================
  Files          82       82
  Lines       12919    12973      +54
==========================================
+ Hits        11503    11547      +44
- Misses       1416     1426      +10

Flag
Coverage Δ

resotocore
89.00% <81.48%> (-0.04%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

resotocore/resotocore/web/api.py
69.22% <33.33%> (-0.15%)
:arrow_down:

resotocore/resotocore/query/model.py
89.84% <84.31%> (-0.39%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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


inline delegated trait method calls

Should the generated trait method calls be marked with inline attribute by default?

Sorry for the slow response. I just checked the expansion of the standard library derive macros and they seem to use #[inline], so I think this is a good idea.


Can download video but not audio from Bilibili

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2022.02.04. (update instructions)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
It is great that yt-dlp can list format and download video from Bilibili as well. However, it cannot download any audio from Bilibili. What a pity!
Verbose log
xuancong@wxc-dell:/dev/shm$ yt-dlp -F 'https://www.bilibili.com/video/BV1ay4y1j7R7'
[BiliBili] 1ay4y1j7R7: Grabbing original ID via API
[BiliBili] 804419108: Downloading webpage
[BiliBili] 804419108: Extracting videos in anthology
[BiliBili] Downloading anthology 804419108 - add --no-playlist to just download video
[download] Downloading playlist: 【4K修复】孙俪&李健 --《风吹麦浪》
[BiliBili] playlist 【4K修复】孙俪&李健 --《风吹麦浪》: Downloading 1 videos
[download] Downloading video 1 of 1
[BiliBili] 1ay4y1j7R7: Grabbing original ID via API
[BiliBili] 804419108: Downloading webpage
[BiliBili] 804419108: Extracting videos in anthology
[BiliBili] 804419108: Downloading tags
[info] Available formats for 804419108_part1:
ID EXT RESOLUTION FPS │  FILESIZE   TBR PROTO │ VCODEC             VBR ACODEC      ABR
───────────────────────────────────────────────────────────────────────────────────────
0  m4a audio only     │ ~ 1.56MiB   67k https │ audio only             mp4a.40.2   67k
1  m4a audio only     │ ~ 3.08MiB  132k https │ audio only             mp4a.40.2  132k
2  m4a audio only     │ ~ 7.46MiB  321k https │ audio only             mp4a.40.2  321k
3  mp4 640x360     25 │ ~ 8.13MiB  350k https │ avc1.64001E       350k video only
4  mp4 640x360     25 │ ~ 4.92MiB  212k https │ hev1.1.6.L120.90  212k video only
5  mp4 852x480     25 │ ~18.22MiB  785k https │ avc1.64001F       785k video only
6  mp4 852x480     25 │ ~10.93MiB  470k https │ hev1.1.6.L120.90  470k video only
7  mp4 1280x720    25 │ ~40.51MiB 1746k https │ avc1.640028      1746k video only
8  mp4 1280x720    25 │ ~24.21MiB 1043k https │ hev1.1.6.L120.90 1043k video only
9  mp4 1920x1080   25 │ ~60.79MiB 2620k https │ avc1.640032      2620k video only
10 mp4 1920x1080   25 │ ~36.32MiB 1565k https │ hev1.1.6.L120.90 1565k video only
[download] Finished downloading playlist: 【4K修复】孙俪&李健 --《风吹麦浪》
xuancong@wxc-dell:/dev/shm$ yt-dlp -f 1 'https://www.bilibili.com/video/BV1ay4y1j7R7'
[BiliBili] 1ay4y1j7R7: Grabbing original ID via API
[BiliBili] 804419108: Downloading webpage
[BiliBili] 804419108: Extracting videos in anthology
[BiliBili] Downloading anthology 804419108 - add --no-playlist to just download video
[download] Downloading playlist: 【4K修复】孙俪&李健 --《风吹麦浪》
[BiliBili] playlist 【4K修复】孙俪&李健 --《风吹麦浪》: Downloading 1 videos
[download] Downloading video 1 of 1
[BiliBili] 1ay4y1j7R7: Grabbing original ID via API
[BiliBili] 804419108: Downloading webpage
[BiliBili] 804419108: Extracting videos in anthology
[BiliBili] 804419108: Downloading tags
[info] 804419108_part1: Downloading 1 format(s): 1
ERROR: unable to download video data: HTTP Error 403: Forbidden
[download] Finished downloading playlist: 【4K修复】孙俪&李健 --《风吹麦浪》
xuancong@wxc-dell:/dev/shm$ yt-dlp -U
Latest version: 2022.02.04, Current version: 2022.02.04
yt-dlp is up to date (2022.02.04)

Duplicate of #2872


Email template - there is a server side error when we upload file greater than 10 mb

Describe the bug

there is a server side error when we upload file greater than 10 mb
check file size before upload

https://www.berrycast.com/conversations/92f0e4e2-63f1-54d8-9fd8-baafb142a6b4


Develop to main

This will add the new CI workflows to the main branch
- do not squash merge -

Codecov Report

Merging #72 (9750744) into main (e0694f6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #72   +/-   ##
=======================================
  Coverage   84.84%   84.84%
=======================================
  Files           8        8
  Lines         495      495
  Branches      100      100
=======================================
  Hits          420      420
  Misses         40       40
  Partials       35       35

Impacted Files
Coverage Δ

src/index.ts
83.92% <ø> (ø)

Continue to review full report at Codecov.

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


Add initializer NSAttributedString.init(image:font:)

🚀
Checklist

[x] I checked the Contributing Guidelines before creating this request.
[x] New extensions are written in Swift 5.0.
[x] New extensions support iOS 10.0+ / tvOS 9.0+ / macOS 10.10+ / watchOS 2.0+, or use @available if not.
[x] I have added tests for new extensions, and they passed.
[x] All extensions have a clear comments explaining their functionality, all parameters and return type in English.
[x] All extensions are declared as public.
[x] I have added a changelog entry describing my changes.

          1 Message

:book:
Thank you for submitting a pull request to SwifterSwift. The team will review your submission as soon as possible.

SwiftLint found issues
Warnings

File
Line
Reason

NSAttributedStringExtensions.swift
145
Availability attribute is using a version (7.0) that is satisfied by the deployment target (7.0) for platform iOS. (deployment_target)

NSAttributedStringExtensions.swift
145
Availability attribute is using a version (9.0) that is satisfied by the deployment target (9.0) for platform tvOS. (deployment_target)

  Generated by :no_entry_sign: Danger

To clarify the purpose, resulting image should look like this


Add SPI class for supervising data transfers

Description
Since #275 was merged too early, I reopened the linked issue and created a new PR for it.
Fixes #265

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 88.36%. Comparing base (01b1f7c) to head (f4101a2).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #276   +/-   ##
=======================================
  Coverage   88.36%   88.36%
=======================================
  Files          20       20
  Lines         576      576
=======================================
  Hits          509      509
  Misses         67       67

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


Transaction chained with XCP dispense and utxo attach is just performing the dispense

Im creating a tx to reduce friction for users when xcp fee is active (as i know that now is 0) that has 2 msgs:

dispense for XCP encoded in multisig
utxo attaching encoded in OP_RETURN

its weird bc api route gives utxo_info for this tx so maybe is related with my previous issue #2538  and is an api thing:
https://api.counterparty.io:4000/v2/transactions/17233d0afde53291ebe593d196e4ea59b9298813b813d4b04a4fd132300d79ab
{
  "result": {
    "tx_index": 2950761,
    "tx_hash": "17233d0afde53291ebe593d196e4ea59b9298813b813d4b04a4fd132300d79ab",
    "block_index": 866799,
    "block_hash": "000000000000000000018785de91a879d134ad6c78989fa3ba057be2d11a3583",
    "block_time":<PHONE_NUMBER>,
    "source": "bc1qwfmtwelj00pghxhg0nsu0jqx0f76d5nm0axxvt",
    "destination": "bc1qm0gx0mwlj2rdfuuy83htptdsadyl0fyk6lhg0s",
    "btc_amount": 634,
    "fee": 0,
    "data": "0d00",
    "supported": true,
    "utxos_info": "17233d0afde53291ebe593d196e4ea59b9298813b813d4b04a4fd132300d79ab:0",
    "confirmed": true
  }
}

the stored data also looks a bit weird for me:     "data": "0d00"
edited: looks like all the dispenses tx shows data in utxos_info when calling /v2/transactions/ endpoint

eg: https://api.counterparty.io:4000/v2/transactions/dd9f09e6e7b4a34b039ce560ea4e946ae154ecaeb7bc69659e4f7857c5ac976f

edited2: looks like it has neither dispense the XCP

Good thing is that despite having 2 messages counterparty has not broke :D

this is not supported by the protocol :)
it is normal that only the first valid data encountered is taken into account.

When we were talking about the gas fee system the conclussion was that this will be possible to do, to avoid the problem for dont have a good way to buy XCP for newcomers. Was supposed also to be this the place to discuss this kind of things so i dont understand why do you closed the issue. Okey now is not supported for the protocol, i have already see it, thats why i openned the issue to be if will be possible to add it on the future as that was what we agree on telegram dev group with Adam and Evan.

at least would be possible for a future update to pay the xcp from another address? including a signed utxo input from the wallet that holds the xCP?

looks like this one: https://github.com/CounterpartyXCP/counterparty-core/issues/2197

as part of this milestone release for future reference: https://github.com/CounterpartyXCP/counterparty-core/milestone/30

@JavierCervilla sorry there was no bad intention! I thought you were reporting a bug not that you wanted to open a discussion!
Yes this is planned as mentioned by @reinamora137

yeah let's centralize discussion of this matter in this issue: https://github.com/CounterpartyXCP/counterparty-core/milestone/30


Update play-docs-sbt-plugin, sbt-plugin to 2.8.0-M2

Updates

com.typesafe.play:play-docs-sbt-plugin
com.typesafe.play:sbt-plugin

from 2.8.0-M1 to 2.8.0-M2.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention @scala-steward in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [{ groupId = "com.typesafe.play" }]

labels: semver-pre-release

Closing since this will be handled in #169.


Deja Vu does not work without port o the url

Google Chrome Web console:
/_plugin/dejaVu/src/js/helper/feed.js
---------------------------------------------
		filterUrl: function(url) {
			if (url) {
				var obj = {
					USERNAME: 'test',
					PASSWORD: 'test',
					URL: url
				};
				var urlsplit = url.split(':');
				--> var pwsplit = urlsplit[2].split('@');

Exception:
Uncaught TypeError: Cannot read property 'split' of undefined

@Nekmo Where are you seeing this: Chrome App / Elasticsearch Plugin / Locally? If locally, which branch are you building?

Chrome console. This is a JS error on /_plugin/dejaVu/src/js/helper/feed.js.  The page is blank.

@Nekmo Are you using this as an Elasticsearch Site Plugin then?

Yes. But I use nginx with proxy_pass.

@Nekmo This is helpful. Which version of Elasticsearch do you use, and do you have a username:password Basic Auth set up or is it just naked ES URL?

@siddharthlatest not yet. My URL is "http://elasticsearch.mycompany.local".

@Nekmo I just fixed that for gh-pages as well as elasticsearch plugin, You should uninstall previous one and install new dejavu.
can you give it a try?

Now it works. Thanks :D


Problems publishing (and releasing) to bintray

I've developed an SBT plugin that we've been using internally at JPL for a while.
I configured a Travis CI job to build this plugin.
However, I'm really struggling with the bintray-sbt configuration to publish it.
The sbt plugin is here on github:
https://github.com/JPL-IMCE/imce.sbt.plugin/tree/imce.sbt.plugin-6
The Travis CI job is here:
https://travis-ci.org/JPL-IMCE/imce.sbt.plugin
I couldn't get travis ci to publish to binary directly so I tried bintray-sbt.
However, it is really difficult to tell what's going on & what it is trying to do.
With 'publishSigned', I get this kind of error:
(see for example: https://travis-ci.org/JPL-IMCE/imce.sbt.plugin/builds/154060867)
{"message":"This resource requires authentication"}
java.lang.RuntimeException: error uploading to default/imce-sbt-plugin/scala_2.10/sbt_0.13/3.9/docs/imce-sbt-plugin-javadoc.jar: {"message":"This resource requires authentication"}
    at bintray.BintrayIvyRepository.put(Resolver.scala:59)
    at org.apache.ivy.plugins.resolver.RepositoryResolver.put(RepositoryResolver.java:234)
    at org.apache.ivy.plugins.resolver.RepositoryResolver.publish(RepositoryResolver.java:216)
    at sbt.IvyActions$$anonfun$publish$3.apply(IvyActions.scala:381)
    at sbt.IvyActions$$anonfun$publish$3.apply(IvyActions.scala:380)

With 'publish', I get a different error:
java.lang.RuntimeException: The configured repo MUST be a maven repo, but was: Raw(Bintray-Sbt-Publish-jpl-imce-gov.nasa.jpl.imce-imce-sbt-plugin)
    at scala.sys.package$.error(package.scala:27)
    at aether.AetherPlugin$$anonfun$1.applyOrElse(Plugin.scala:97)
    at aether.AetherPlugin$$anonfun$1.applyOrElse(Plugin.scala:95)
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
    at scala.Option.collect(Option.scala:250)
    at aether.AetherPlugin$class.deployIt(Plugin.scala:95)
    at aether.AetherPlugin$.deployIt(Plugin.scala:26)

Any suggestions?

I've got the same error. It started several weeks ago. Probably Bintray changed something on their api.
I tried to fork bintray-sbt and solve the issue, but i was not successful.
At the moment, I'm publishing to somewhere else as an workaround.
As far as i know, the problem only occurs when the following setting is defined:
publishMavenStyle := true,

I really wanted to publish to & resolve from bintray because it supports a staging-like 2-phase upload (resolvable privately to developer) and publish (resolvable publicly) similar to Nexus Pro (see: https://github.com/xerial/sbt-sonatype/blob/master/workflow.md)
I tried the JFrog CLI (works well) but then realized that in fact SBT's Resolver.bintrayRepo("", "") is sufficient.
With this, remember that sbt publish corresponds to bintray upload.
Uploaded artifacts are privately resolvable (i.e. need SBT credentials for bintray)
Then, you can use the JFrog CLI (jfrog bt vp <org>/<repo>/<package>/<version>) to publish (in bintray lingo) all the files uploaded to a specific version of a package. After that, the artifact is resolvable publicly without credentials.
This is what I've used for several projects (see: https://github.com/TIWG, https://github.com/JPL-IMCE)

Sbt setting application order and some concurrency issues have been fixed since, which might render this issue obsolete. Closing this for now. If the problem is still there, please feel free to open another ticket.


Add experimental mode

The first half of this pull request that concerns new features (i.e. the experiment tab) was rebased to a new experiment branch. The commits are squashed into 84eee04edd6f5dfbfaada697752308c78754014d. The latter half of this pull request that concerns build actions are squashed and pushed directly to the main branch. The concerning commits are c0e6262273dae3b04b479982ddd0077b70317ed0 and c65964e585bfdbdaff1dc8c36acad9cb925e4da0.


mkdir: sets different default mode bits than GNU mkdir

With no other command-line options and no other umask set, the default mode bits for GNU mkdir on my system (Linux) seem to be drwxrwxr-x. But uutils mkdir seems to produce drwxr-xr-x.
GNU mkdir:
$ mkdir a
$ ls -ld a
drwxrwxr-x 2 jeffrey jeffrey 4096 Feb 11 22:15 a

uutils mkdir:
$ ./target/debug/mkdir a
$ ls -ld a
drwxr-xr-x 2 jeffrey jeffrey 4096 Feb 11 22:15 a

Yes, I think you're right; I was confused when I opened this issue.


Fix rails3 env override

Rails 3 framework control, unlike the others, doesn't honor the setting of @env.
Which means that things like this won't work:
NewRelic::Control.instance.env = HostCheck.instrumentation_environment

This commit brings the Rails 3 framework control in line with the other frameworks.

This looks legit, I'll merge it through our internal repo and run it through QA.  You'll see it on 3.3.1_dev when we push it out.
Thanks for contributing!

Hi,
Sorry about the delay in getting this integrated.  This is now on our github repo on the 3.3.2_dev branch.  It will be released in the next agent version.
Thanks again!


It seems like there was an issue with processing your request

Hey there,
For the last 48 hours, I have not been able to get the plugin to access any repo. I have upgraded to a paid plan. I have also tried other plugins and also the Advanced data analysis mode of GPT Plus to make sure it was not GPT.
Here is the only output I get when I ask it to access any repo.
It seems like there was an issue with processing your request. Let's try again.
I apologize for the inconvenience. It seems like there is a technical issue with processing the request to check your repository.

Hi @IntiMech,
I'm sorry for the inconvenience you're experiencing with the plugin. To help me better understand and address the issue, could you please share a sample conversation with me?
You can easily share the conversation using the "Share" functionality of ChatGPT, located at the top-right corner of the chat.

I have the same problem, I can't access any repo with the plugin. Here is a sample conversation with askthecode:
https://chat.openai.com/share/5371d480-507f-4464-b97b-227725d5c21e

@Pemh Thanks for sharing the conversation, it helped a lot!
I've tried to press the "Continue this conversation" button and simply regenerate the response to see the error it throws:

So, the request actually never reaches the plugin, which also explains why I cannot see any errors in the logs.
I've seen mentions of this error on the OpenAI Forum:
https://community.openai.com/t/issues-with-using-plugins-in-chatgpt-4-since-october-21-2023/445873
Here, users describe that ChatGPT plugins stopped working for them (please note that this thread is not related to the AskTheCode plugin but rather to the plugin functionality in general).
According to the latest message, it's possible that the problem has been fixed. Could you please check it once again and ping me if it succeeds or not?
@IntiMech I believe that it's possible that you've experienced the same issue, could you please test if it works for you once again?

hi @IntiMech, thank you for your feedback! I'm glad to hear that the issue has been resolved, hopefully forever :)
@Pemh, could you please try using the plugin once again and let me know if everything is working fine for you?

hi @dsomok, I tried again and it works fine now.

hi @Pemh, great, thanks for pinging me back


Scene groups are being updated every time project is opened

Tested versions
4.3 dev6 happening
4.3 dev5 not (but it was just invisible? dev6 added progress bar)
System information
Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; <IP_ADDRESS>33) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)
Issue description
Every time I open my project, scene groups cache is being updated. idk if it's pre-existing issue or it was just made visible due to the newly added progress bar. It happens even when exporting project from command line. Why is it even necessary?
Steps to reproduce

Open a project

Minimal reproduction project (MRP)
N/A

For some reason this is also happening when creating folders or moving files etc. >:(
It's like whatever checks the scenes keeps some cached list and checks it on every rescan.

From what I tested, when you save a scene, its marked as outdated in cache and will be updated on editor restart. Which is weird, because saving itself updates scene groups. It might be some filesystem cache bug and groups cacher is unfortunate to use it. I wonder if it's also a cause of other issues with editor opening being slow.

Found it:
https://github.com/godotengine/godot/blob/ce00392fc35ce639752c710094d87a4311985fb2/editor/editor_file_system.cpp#L1527-L1529


How to use this Kit

Hello,
I am a newbie in iOS and Deep learning. I went through the basics of Deep learning and Neural networks. The documentation doesn't say how to use this library?
I have a model with me which was written using Caffe Framework. How can I integrate it with DeepLearningKit?
Any detailed documentation available online?
P.S
I ran the DeepLearningiOSDemo app which is working perfectly on my iPhone.
Any help would be appreciated.
Thank you.

Hello Jay. The kit has a different kind of license and I've not seen much activity.
You might want to check out Swift-AI at https://github.com/collinhundley/Swift-AI
And also there are Swift projects converting a lot of Python code.
It seems this project is mostly just setup and waiting for contributions with a license that more difficult.

Hello @loopbum , thank you for your response. I really appreciate. Thank you for another open source library which is parallel to what I was looking for. Any heads up for swift projects converting python code?
Thank you once again.

Hi @jaympatel1893 -- I believe IBM should have the vested interest to include popular Python library equivalents in its Kitura project for Bluemix: https://github.com/IBM-Swift/Kitura Popular Python frameworks like Scipy, Numpy, etc. to work with Kitura. Swift is being compared a lot to Scala which Apache Spark was written in, and it's a lot more artfully nice to write in that Python. ~ Robert


Backend Extension for 4TU repository

Scaffolding and first modules for the backend extension.

A server extension was created using the cookie-cutter template. Name = jupyterfair
As recommended by the documentation, the server extension was implemented as a python package named 'jupyterfair', containing the modules __init__.py, _version.py and handlers.py
Main functionality to handle communication with 4TU research data was added in the core  subfolder.
Adds abstract DataRepository
Implements data repository for 4TU research data in four_tu.py
Implements methods to retrieve and create articles in the 4TU research data.
Implements Connection class to authenticate, and handle communication between the server backend and data repositories. This class provides GET and POST methods to submit requests to data repositories.
Adds units test for jupyterfair.core
Implemented extension handler for listing articles in a 4tu account. at endpoint jupyterfair/list_articles
Updates the Readme file with instructions to set up a development environment

I expose my account token by mistake: https://github.com/ITC-CRIB/JupyterFAIR/commit/3de15cc7bd2d539798ec05f78a2449f8bdd75b89#diff-d1386a585a390cba835b08a8f08e91d9f7cc5f192dc39e46d31746b218406945R26
I fixed that with a new commit. But to avoid more warnings from the GitHub. Please do a Squash and merge


Error pinging server

i got this error.
Error reading ping response
com.danikula.videocache.ProxyCacheException: Error opening connection for http://<IP_ADDRESS>:33422/ping with offset 0
Caused by: java.io.FileNotFoundException: http://<IP_ADDRESS>:33422/ping

Hi @Fajarrianda,
i've the same issue, have you fixed it?
thank you

Duplicates #134


Fix margin issues with some pages

Version 5.1.0 of the header-footer removes the top margin of the footer. As such, the DSC needs to be updated to fix potential margin issues on some pages

Made a new container and merged into develop


Re-rendering on clear

Love the simplicity of the API, I'm in the process of converting all my hand rolled suspense helpers over to this!
One piece of functionality I'd love to have in the library or at least your opinion on how to implement it separately best is forcing a re-render when the cache is cleared/updated.

A quick update... You can avoid the Suspend fallbacks flashing by changing set({ refreshing: false }) to setTimeout(() => {set({ refreshing: false })}, 0)
The flashing of the Suspend fallbacks occurs because calling set({refreshing: false}) before the promise returned by fn is resolved never gives suspend-react a chance to cache what the promise resolves to before set({refreshing: false}) queues a re-render with stale data. Then-ing a promise puts a job in the job queue (which is executed immediately) whereas setTimeoutputs a task in the task queue, which is not evaluated until the job queue is empty. So because query caches the result of the promise returned by fn in a then call, if the promise returned by fn is resolved before suspend is called again, the fresh data will be immediately available, and suspend will never throw a promise and causing a suspension. Using setTimeout to make the call to set({refreshing: false}) a task instead of a job will result in query finishing its execution before set({refreshing: false}) is called, so when a re-render is triggered, the fresh data have already been cached. At least, that's my best guess as to what's going on!


Deserialize maven build deployment source types

fixes #989
@joaoandremartins @patflynn @aslo

@patflynn updated to not deserialize based on environment

Current coverage is 24.80% (diff: 30.76%)

No coverage report found for master at 826ea96.

Powered by Codecov. Last update 826ea96...4e06caf


Fix example and docs typos for objmode context manager.

As title.
Fixes #3575

Codecov Report

Merging #3577 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #3577   +/-   ##
=======================================
  Coverage   80.69%   80.69%
=======================================
  Files         393      393
  Lines       80425    80425
  Branches     9160     9160
=======================================
  Hits        64896    64896
  Misses      14109    14109
  Partials     1420     1420

Thanks for the review. I also note that numba.cuda.tests.cudapy.test_atomics.TestCudaAtomics failed a test, which has nothing to do with this change.


Merge refs/heads/feature/no-redis into alpha

Merge refs/heads/feature/no-redis into alpha

This PR has been merged into alpha and tagged as 1.6.0-alpha-202303271443. Thanks for your contribution!


Eraser doesn't erase if you drag it over objects too fast

Draw a line.  Select the eraser tool.  With the mouse down, move the eraser across the line very quickly.  The line is not erased.

Indeed, currently collision is detected only at the sample points, without any interpolation in between. Linear interpolation would make sense.  I'm hoping there's a DOM query for this type of intersection...

+1 on this issue. Using a pen on a tablet, the eraser is even slower.
For me this makes using cocreate a lot more time-consuming and has the effect that I rather use a different tool for scribbling on my own and later recreate the important parts in a shared Cocreate whiteboard...

A workaround for now is to use the select tool (drag to rectangular select) and then pressing the Delete key. (But that doesn't work on a tablet-only device.)

I just implemented an improvement to the eraser object detection (looking at all coalesced events instead of just the final event in a sequence) that should help — hopefully a lot and perhaps especially when using a pen on a tablet — though there's more that could be done after #87.  Let me know if you see improvements in your environment, @ni-tro.

I only started using this within the last month, so your improvement from 1 year ago (mentioned in your last comment) would already have been implemented, but I have a very hard time using the eraser tool! Often it doesn't do anything, and often it's slow (and causes my CPU to start getting overworked). I instead use the select tool to make a rectangle and then press delete, but unfortunately, lots of other objects that I do not want deleted (which are not even in the rectangle!) get deleted along with what's inside the rectangle, which is quite inconvenient.


Misc tidy up

As I was double-checking #5, I realised that the script was not used any more and could be deleted. This PR does that, and fixes a few minor things: process_single vs process_nompi and the name of script for versions.yml
PR checklist

[ ] This comment contains a description of changes (with reason).
[ ] If you've fixed a bug or added code that should be tested, add tests!
[ ] If you've added a new tool - have you followed the pipeline conventions in the contribution docs
[ ] Make sure your code lints (nf-core lint).
[ ] Ensure the test suite passes (nextflow run . -profile test,docker --outdir <OUTDIR>).
[ ] Usage Documentation in docs/usage.md is updated.
[ ] Output Documentation in docs/output.md is updated.
[ ] CHANGELOG.md is updated.
[ ] README.md is updated (including new tool citations and authors/contributors).

In the end I've decided not to delete the samplesheet script, until it's clear we won't need it at all. And then, the deletion should be exhaustive and include the .csv file itself, references to samplesheet in the documentation, etc.


Allow passing Python version in pure python publish workflow

This allows passing in a Python version when using the pure Python publish workflow. I think this should propagate to the build-python-dist workflow.

Ok I've updated the docs with a note about python-version. Some of the 'test-libaries' checks are failing or reasons I do not understand.


3.0.1 RC 1 regression: __init__ files are ignored if --suite option is used

There's a regression in RF 3.0.1 release candidate 1. If we have a directory structure like
parent
├── __init__.robot
└── tests.robot

and run tests like robot --suite tests parent, __init__.robot file is not processed. This was caused by a small refactoring to the directory scanning logic when adding the support for --extension (#2365). Thanks @aaltat for reporting the issue!

The bug has been fixed and RC 2 released:
https://pypi.python.org/pypi/robotframework/3.0.1rc2


Improve Advanced Metadata Search GUI

Metadata Search uses the same backend search APIs as the search box/API which supports filtering by various fields in addiiton to metadata. Many have said that the ability to add those filters in the metadata/advanced search interface GUI would be nice. We've talked about a dropdown of "Metadata" to the left of the existing stuff that could be changed to other fields could enable this with some UI finesse.

Also consider how a faceted search interface could mimic a "smart list" or virtual folder structure, e.g. filter where metadata Plant_Year = 2005, then from there select from a distinct list of crops with that year, and so on.

Would there be any possible interest in reusing some of the faceted search from earthcube?


Added theming

This is a rather large change in terms of the amount of code affected owing to it proving rather difficult to add this feature into things in a reasonable manner. The following changes have been made:

collect all plotting functions in a single class, where theme is defined at instantiation
all uses of the grayscale keyword have been either replaced with theme or removed as appropriate
the options keyword has been removed from qs.html()
as well, the download_filename keyword has been replaces with html_filename
type hinting was added to all code touched
all non-conventional import statements have been made conventional
the 'Known Issues' segment of the README has been removed as the issue is no longer present

To use theming, a the current default and grayscale themes have been provided in _plotting/themes.py. Any user-defined theme can be be created by following the dictionary structure provided, noting that all keys must be present or the behavior
is to fallback to default

Not sure why you had to rename the imports. The _ prefix was there to indicate that this is a dependency module. Otherwise - I like the idea of using themes but cannot approve the PR as it.
Can you create a new PR with only the theming option and without any backward compatibility-breaking changes?

Hello!
The renaming was because underscore hiding all the module names is very unusual, and was making the code more difficult to read IMHO. As for adding this without the non-breaking changes, short answer is not really. The issue is that the functions as-is are set up in a manner that is not terribly amenable to a (consistent) theming scheme, as can be seen from how the grayscale value is used over and over with varying if-then statements throughout. By putting the theme definition into a (rough) class as I have has fixed this issue, but forces the changes to the function signatures as I've done in core.py and wrappers.py; the user-level use of everything remains unchanged in terms of what functions are called and how the module is organized, while only the function signatures have changed.
I could, however, include deprecation warnings in said functions; that would be possible and reasonable.


Proxy

How should we configure chrome-webstore-upload-cli to run behind a proxy?

Proxying is not directly supported; you may be able to monkey-patch the http module to force it to go through a proxy.


Added a new quote under 'programming' category

PR LGTM

Thank you so much for your time.
You will have this quote up and running and available in the coming deployment by end of the month with another major feature.
Thank you so much for you time and contribution towards our project. :)


Add has_one scope support to virtual_delegate

This enhances virtual_delegates so that scopes added as part of a has_one relation are respected.
Because of the changes, an implicit limit = 1 was necessary to support the has_one, and the easiest way to accomplish that while still keeping select_from_alias in a similar form was to allow passing a block so the arel (prior to being converted to a string) could be updated.
Also of note, select_from_alias also had a few changes to it beyond that:

The "query" is now built up from the scope on the model, not a raw arel_table from the to_ref model.
Instead of a project, we call a .select on the "query" (scope from the relation), which already has a similar arg structure, but allows us to remove the select_values properly before converting it to arel (happens right after the .select).  We work with raw Arel after that.
The table_alias functionality is now done through the from clause, from(to_table) allows us to still keep the same alias functionality we had.  Under the covers, this does the same thing, it is just previously the starting point was an Arel::Table, and now it is a Arel::SelectManager.  The Arel::Table version ends up returning a SelectManager anyway, so what we are doing is functionally equivalent.

Links

Link to the query from a relation bit that I used previously, and again in this PR
Alternative to https://github.com/ManageIQ/manageiq/pull/17469

TODO
Should probably add some tests around this.  That said, this is a for a semi POC for an alternative to https://github.com/ManageIQ/manageiq/pull/17469, so the POC should probably be validated against before commiting to the changes here.

@miq-bot assign @kbrock
I have two more followup PRs that will add some context to this one.


Replace generic-http/remote/r- to generic-http/hosted/h-

We hit some case where the generic http remote repo is not longer available (disabled), so we use the hosted repo to download files.

LGTM


Pause has a redirect that https.get won't follow

add a dependency to follow redirects with https://github.com/olalonde/follow-redirects ? Or is pause not a big deal?

another option instead of following the redirect is to set pauseUrl = https://cronitor.io and use that when calling pause.

resolved in 1.1.1


0.11.0 very slow writeMultipleRegisters

This might also be true for the other Modbus Functions, however I am currently only using writeMultipleRegisters.
With version 0.10.3 (and also 0.10.2 & 0.9.1), using the milli() function, the time it takes to perform a node.setTransmitBuffer, followed by a node.writeMultipleRegisters is around 209 milliseconds. If I use exactly the same sketch with version 0.11.0 the difference is almost exactly 10 times slower at 2006 milliseconds.
Here is my code to check this:
void loop() {
static uint32_t i = 0;
static long previousMillis = 0;
unsigned long currentMillis = 0;
uint8_t result;
// put your main code here, to run repeatedly:
previousMillis = millis();
node.setTransmitBuffer(0, lowWord(i++));
result = node.writeMultipleRegisters(3960, 1);
currentMillis = millis();
Serial.println(currentMillis - previousMillis);
//delay(1000);
}

Looks like it might be the following addition between v0.10.3 and v0.11.0:
while (MBSerial->read() != -1);

You might try commenting this line out to see if it makes a difference.

Closing issue. Re-open or create a PR if you have a proposed solution. Thanks.


Interstate Highways (combined)

This is the combined Interstate Highways PRs from Red Hat Summit 2024.
This superseeds #861 #891 #919 #968 #1007 #1018

@instructlab-bot precheck

@instructlab-bot precheck

Hi! :wave:
With the new update and release of 0.18.0, our base knowledge submissions have drastically changed. This has given us an opportunity to significantly improve the accuracy of our fine-tuned models, which is a major win for our community!
But alas, that has caused some changes that this PR isn't able to continue forward. We greatly appreciate the work you've put into this, and wish we could accept it but the amount of work to get it to be version: 3 is unrealistic for us to ask.
If you do want to do this, please don't hesitate to take the qna.yaml update it, and build it out. Otherwise, we hope you come back to our community with a new submission and help build out our Open Source community-driven LLM.
If you have any questions directly, please don't hesitate to comment on the PR or email me at awesomeATinstructlab.ai (yes, really), and I'll do my best to answer your questions.


Error when None is given for arglist argument of pyferret.init

Reported by karl smith on 6 Jul 2011 20:34 UTC
pyferret.init(None) will cause an error
Fix in revision 12363; creating this ticket as a record.
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1865

Modified by karl.smith on 6 Jul 2011 20:35 UTC


fix: Readme change flag -p to -e

To choose between environments, -e or --env flag is the correct one, but it mentioned -p in the Readme file

thanks @amrebada !


Additional Exensions

https://github.com/Doprez/Doprez.Stride
There is a Worldposition extension in my repo and there is another useful repo from DfKeenan
https://github.com/dfkeenan/StrideToolkit that has even more useful extensions

#24

i think that was allready done?

Half of it. Thanks for a reminder. I need to review https://github.com/dfkeenan/StrideToolkit architecture/folder structure, as he was ahead with the toolkit, I need to make sure that our toolkit has all useful parts.

I checked this one closely again. I think I follow the structure of this toolkit but there is more extensions we could use https://dfkeenan.github.io/StrideToolkit/api/ so maybe we can keep this open and wait till we take whatever is needed. I am going to spilt the initial description into tasks..

Hi,
I recently got asked about updating my repo (https://github.com/dfkeenan/StrideToolkit). I have directed them here as I probably won't. 😅
Please feel free to take as much of it as you want. I think it would be better to have the one official community toolkit.

You are right @dfkeenan. I have to review, that all was taken and documented accordingly.


laravel-doctrine/orm: 2.0 support

Can the composer.json requirement be changed to  "laravel-doctrine/orm": "^1.0 || ^2.0" which would then support "doctrine/dbal":"3.0" too?

Should now be supported see https://github.com/bolivir/laravel-doctrine-sanctum/releases/tag/v2.0.0-rc.1

v2.0.0-rc.1 is working now.  Thank you!


the use of "full" would create the incorrect XML

Due to the way this code works using full would create a <full/> tag in the get-configuration tags.  This is not correct.

This change is

Based on your recommendation, I modified the function to optionally include the sections. By default, if you do not specify any sections, the entire configuration is returned.


Share isn't working with WhatsApp

This code, which I use on my apps, fixes it:
    val shareIntent = Intent(Intent.ACTION_SEND)
    shareIntent.type = "video/*"
    shareIntent.putExtra(Intent.EXTRA_STREAM, recording.toUri())
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    startActivity(Intent.createChooser(shareIntent, getString(R.string.share)))

Also, small request: add the option to stop recording when countdown to start is running.

FLAG_GRANT_READ_URI_PERMISSION shouldn't be necessary if you use a FileProvider

Great, working fine now! I personally prefer the Intent.createChooser (shows recents and doesn't show the "just once"/"always" which I think is error prone), but it is working.

You should also update it on other places, like notification.


A solution to the bug of AR and NAR training separately on DDP

modify train.py

to
    if params.train_stage:
        if world_size > 1:
            stage_named_parameters = model.module.stage_named_parameters(params.train_stage)
            model_parameters = model.module.stage_parameters(params.train_stage)
        else:
            stage_named_parameters = model.stage_named_parameters(params.train_stage)
            model_parameters = model.stage_parameters(params.train_stage)
    else:
        model_parameters = model.parameters()

    if params.optimizer_name == "ScaledAdam":
        parameters_names = []
        if params.train_stage:  # != 0
            parameters_names.append(
                [
                    name_param_pair[0]
                    for name_param_pair in stage_named_parameters
                ]
            )

@guokr233  can you provide the error message? I did't have two GPUs.

@guokr233 can you provide the error message? I did't have two GPUs.

in train.py, line 891

model_parameters = model.stage_parameters(params.train_stage)
model object have no attribute stage_parameters

because it's a DDP object, so I use the 'model.module'

solved in https://github.com/lifeiteng/vall-e/pull/59/commits/7d6b721d5c63c9bd025f33b2b2873d2d4515a99a


build: 2.0.0

Fixes

#1127
#1128

Refactor

#1036

Close in favo: https://github.com/ems-project/EMSCoreBundle/pull/1139


Add static shared secret to webhooks

Implement integration with Azure Event Hub.
Basically it's a webhook with details specified in the following documentation:
https://learn.microsoft.com/en-us/rest/api/eventhub/generate-sas-token
https://learn.microsoft.com/en-us/rest/api/eventhub/send-event
Original request:

Currently the webhooks in the Flagsmith platform allow users to set a secret which adds a header consisting of the payload data hashed using the sha256 algorithm with the given secret.
To be able to serve other platforms (e.g. Azure Event Hub) it would be useful to be able to separately (and optionally) configure a static shared secret that is added as another header on all requests made to the Webhook.

Updated the issue body following the internal discussion. Our generic webhooks don't quite cut it and we need to build a specific integration.


Perform password lookup ~40.000x faster

The current lookup method is a bit inefficient. For every lookup,
it has to open a file, allocate a lot of memory and iterate over an
Array.
The new method introduces two optimizations:

memoization of all the password values. The file is small (80kB for
10k passwords), so there is no issue with keeping it in memory
using a Set instead of an Array. A Set performs a lookup in constant
time compared to an Array, where the worst case scenario is having to
iterate over the whole Array. With this optimisation we could hold much
more weak passwords in memory and the lookup would still take the same
amount of time.

Benchmark: (note: I created a benchmark directory in the repo and not checked it in, so you might have to modify the file path to run it yourself)
require 'benchmark/ips'
require 'set'

PASSWORD_MATCHES = [100, 1_000, 10_000]

def common_passwords_old
  passwords_file = File.join(File.dirname(__FILE__), '..', 'lib', 'devise', 'uncommon_password', "passwords.txt")

  passwords = []
  File.open(passwords_file, "r") do |file|
    file.each { |password| passwords << password.chomp.downcase }
  end
  passwords.select! {|password| (8..128).include? password.length }
  passwords[0..$matches-1]
end

def common_passwords_new
  return @passwords if @passwords

  passwords_file = File.join(File.dirname(__FILE__), '..', 'lib', 'devise', 'uncommon_password', "passwords.txt")
  passwords = []
  File.open(passwords_file, "r") do |file|
    file.each { |password| passwords << password.chomp.downcase }
  end
  passwords.select! {|password| (8..128).include? password.length }

  # Note: We can memoize the whole list for the purpose of the spec
  @passwords = passwords.to_set
end

passwords_file = File.join(File.dirname(__FILE__), '..', 'lib', 'devise', 'uncommon_password', "passwords.txt")
weak_passwords = []

File.open(passwords_file, "r") do |file|
  file.each { |password| weak_passwords << password.chomp.downcase }
end

secure_password = 'ksdnb8283238hdsifuIAHSIh2iuh237728937*(#@(#*@#))'

PASSWORD_MATCHES.each do |matches|
  $matches = matches

  puts "Benchmarking for #{$matches} matches"
  Benchmark.ips do |bench|
    bench.report("password on weaklist - old with #{matches} matches") { common_passwords_old.include?(weak_passwords.sample) }
    bench.report("password on weaklist - new with #{matches} matches") { common_passwords_new.include?(weak_passwords.sample) }
    bench.report("password not on weaklist - old with #{matches} matches") { common_passwords_old.include?(secure_password) }
    bench.report("password not on weaklist - new with #{matches} matches") { common_passwords_new.include?(secure_password) }

    bench.compare!
  end
end

Results:
Benchmarking for 100 matches
Warming up --------------------------------------
password on weaklist - old with 100 matches
                        18.000  i/100ms
password on weaklist - new with 100 matches
                       439.508k i/100ms
password not on weaklist - old with 100 matches
                        19.000  i/100ms
password not on weaklist - new with 100 matches
                       749.231k i/100ms
Calculating -------------------------------------
password on weaklist - old with 100 matches
                        202.715  (± 4.4%) i/s -      1.026k in   5.072639s
password on weaklist - new with 100 matches
                          4.355M (± 2.1%) i/s -     21.975M in   5.048064s
password not on weaklist - old with 100 matches
                        203.283  (± 3.9%) i/s -      1.026k in   5.055536s
password not on weaklist - new with 100 matches
                          7.183M (± 6.0%) i/s -     35.963M in   5.028140s

Comparison:
password not on weaklist - new with 100 matches:  7182737.6 i/s
password on weaklist - new with 100 matches:  4355186.2 i/s - 1.65x  (± 0.00) slower
password not on weaklist - old with 100 matches:      203.3 i/s - 35333.65x  (± 0.00) slower
password on weaklist - old with 100 matches:      202.7 i/s - 35432.66x  (± 0.00) slower

Benchmarking for 1000 matches
Warming up --------------------------------------
password on weaklist - old with 1000 matches
                        18.000  i/100ms
password on weaklist - new with 1000 matches
                       350.866k i/100ms
password not on weaklist - old with 1000 matches
                        19.000  i/100ms
password not on weaklist - new with 1000 matches
                       729.568k i/100ms
Calculating -------------------------------------
password on weaklist - old with 1000 matches
                        194.426  (± 7.7%) i/s -    972.000  in   5.037264s
password on weaklist - new with 1000 matches
                          3.999M (± 9.4%) i/s -     19.999M in   5.051506s
password not on weaklist - old with 1000 matches
                        193.208  (± 8.3%) i/s -    969.000  in   5.063159s
password not on weaklist - new with 1000 matches
                          7.214M (± 5.2%) i/s -     36.478M in   5.070975s

Comparison:
password not on weaklist - new with 1000 matches:  7214300.7 i/s
password on weaklist - new with 1000 matches:  3998718.1 i/s - 1.80x  (± 0.00) slower
password on weaklist - old with 1000 matches:      194.4 i/s - 37105.61x  (± 0.00) slower
password not on weaklist - old with 1000 matches:      193.2 i/s - 37339.53x  (± 0.00) slower

Benchmarking for 10000 matches
Warming up --------------------------------------
password on weaklist - old with 10000 matches
                        20.000  i/100ms
password on weaklist - new with 10000 matches
                       416.675k i/100ms
password not on weaklist - old with 10000 matches
                        18.000  i/100ms
password not on weaklist - new with 10000 matches
                       728.625k i/100ms
Calculating -------------------------------------
password on weaklist - old with 10000 matches
                        199.885  (± 7.0%) i/s -      1.000k in   5.038459s
password on weaklist - new with 10000 matches
                          4.113M (± 7.5%) i/s -     20.834M in   5.100896s
password not on weaklist - old with 10000 matches
                        202.526  (± 1.5%) i/s -      1.026k in   5.067563s
password not on weaklist - new with 10000 matches
                          7.151M (± 5.1%) i/s -     35.703M in   5.007295s

Comparison:
password not on weaklist - new with 10000 matches:  7151325.7 i/s
password on weaklist - new with 10000 matches:  4112592.3 i/s - 1.74x  (± 0.00) slower
password not on weaklist - old with 10000 matches:      202.5 i/s - 35310.69x  (± 0.00) slower
password on weaklist - old with 10000 matches:      199.9 i/s - 35777.24x  (± 0.00) slower

This is great. Thank you for your work on this.

After merging, I've found that I've had to revert it to the previous state, as it's failing the test test_should_return_the_specified_number_of_passwords.
Please check that the entire test suite is passing before generating a PR.


HIVE-27248: Backport of HIVE-24653: Race condition between compactor marker generation and get splits

JIRA Link: https://issues.apache.org/jira/browse/HIVE-27248
This commit was already done in branch-3.1 using this https://issues.apache.org/jira/browse/HIVE-24653 so we need to backport the same to branch-3.

@ayushtkn , @abstractdog , @zabetak , @sankarh can you please review and merge this PR?


Camera not granted permission

Mac, M2, latest OS
I have this error while running from the terminal:
"qt.permissions: Could not find permission plugin for QCameraPermission. Please make sure you have included the required usage description in your Info.plist
Access to camera not granted"
But the app starts and the camera is visible, without picture.
What shoud I do?

I tried on another mac and a windows as well. Same error on both.

Yeah it seems to be a problem with Mac and trying to get access to the camera using PySide. I'm not sure I can help with this. Maybe see what Google says about camera access with PySide on a Mac.


NWL utils do not work for first wall definitions other than extrapolating with wall_s>1

NWL utils currently rely on using some value for wall_s to root solve for theta, assuming the points lie on the surface defined by that wall_s value. For a custom FW (constant offset or whatever), this doesn't work.
My suggestion is an approach in which the surface used for calculating the NWL is already broken up into the appropriate patches during the geometry creation phase (using the point cloud definition and some cubit commands). The surface source retains the surface id which the particle crossed. The corners of each bin would then also be known ahead of time (from the point cloud). I think dagmc files retain the same surface IDs as in cubit, if not this is much harder. No root finding is required for this approach, and it works the same for a wall_s surface and a custom one.
The following steps jump to mind to implement this.

Add a method to the surface object that build the faceted representation in cubit, keeping things like surface id and area as metadata
Add a function that extracts the source information and puts it in some useful format (probably use the centroid of each bin to refer to the NWL value)

An alternative would be to find the poloidal angle for which the offset vector from the plasma surface in the toroidal plane passes through the point where the neutron crossed the first wall. This approach can be used to bin the crossings and perform the area approximation/normalization in a similar manner to how it is currently implemented. I think this should be provided as an alternate method, alongside the current implementation.
I'd suggest the following steps to implement this.

Add a utility to find where the normal on a poloidal profile will pass through a point in space. There is potential with the convex profiles to have multiple points on the profile satisfying the condition, but for small offsets this is not really a concern (known issue with parastell). This is also useful for creating theta, phi plots of mesh tally results.
Modify NWL utils to use either wall_s or the utility in 1 to find theta
Modify NWL utils to use the utility in 1 to do the area approximation/normalization

2 and 3 could be combined.

I think the first approach would be more streamlined since it would use the same method for any surface definition. Not needing to root solve is a nice plus. Funny that this was the initial approach we thought up for NWL calculations before implementing our current one.

If we converted the theta-phi grid to x-y-z, could we just bin the surface points into those x-y-z patches? It's still not algorithmically "cheap" but maybe cheaper than root finding

We can calculate phi directly from x-y, right? So we can know which toroidal slice of the theta-phi grid we're in, and then just search in poloidal space?

{x,y} -> {R, phi}
Find nearest phi_grid < phi
Map theta-phi points @ phi_grid to {R_grid,Z_grid}
Search for {R,Z} in {R_grid, Z_grid}

if Z > 0

if R > R_grid(Z_grid_max)

binary search in quadrant 1 of {R_grid, z_grid}
Etc...

Map {R_grid_found, Z_grid_found} back to {theta_grid, phi_grid} and check neighboring grid patches to confirm location


RANGER-4230: Add REST APIs to force delete external users & groups

What changes were proposed in this pull request?
Addition of 2 new REST APIs to delete external users and groups.
The proposed approach uses existing methods for deletion of users & groups via 2 REST API calls(1 for users and 1 for groups), all the processing of deletes happen in Java with immediate transaction commit for every user/group.
Stats(time taken):

Users:

Deletion of 50k users takes: 33 mins 28 seconds @ 40 ms per delete operation (This is still expensive, more on this later)

Groups:

Deletion of 100k groups takes: 2 mins 51 seconds @ 1.7 ms per delete operation.

Current benchmark: 5.3 seconds for every delete operation. (info)
Improvement(via this PR): 133X (for ex: to delete 50k users via current python scripts it would take 3 days and 2 hrs approx.)
To further improve the running time of user deletes, db schema changes would be required as one possible approach.
On average per delete operation 35 ms/40 ms (~ 88%) of the time goes in updating 64 tables which have FK constraints on x_portal_user (more info here)
To avoid this "ON DELETE CASCADE/NULL" needs to be enabled for the respective db tables, which may improve the performance of the API significantly. This will be taken up in another jira to target best achievable running time for large no. of users/groups deletion.
How was this patch tested?
Tested using docker.
Tested the latest patch with the following REST API calls:

service/xusers/delete/external/groups?name=group_usertest_3982_b

service/xusers/delete/external/groups?isVisible=0

service/xusers/delete/external/groups?isVisible=0&groupSource=0

service/xusers/delete/external/groups?syncSource=File

service/xusers/delete/external/groups?syncSource=None

service/xusers/delete/external/users?name=usertest_41305

service/xusers/delete/external/users?isVisible=0&userSource=0

service/xusers/delete/external/users?syncSource=None

<EMAIL_ADDRESS>

Addressed potential concerns of large memory consumption when bringing in the users and groups matching the search criteria, instead only bringing the ids in memory to be consumed later for deletion.
CC: @spolavarapu1, @mneethiraj

Tested the latest PR again with the same test cases as before (100k users & 50k groups), this incorporates changes from RANGER-4240 (from master), no significant difference in timings were observed(from the original timings - mentioned in description).
Before deletion:
ranger=> select count(*) from x_group_users;
count
199996
(1 row)
ranger=> select count(*) from x_group;
count
100002
(1 row)
ranger=> select count(*) from x_user;
count
50009
(1 row)

Tested python client with the following test cases:
from apache_ranger.client.ranger_client import *
ranger = RangerClientPrivate('http://localhost:6080', ('admin', 'rangerR0cks!'))

ranger.force_delete_external_groups("isVisible=1&syncSource=XYZ"))
ranger.force_delete_external_users("isVisible=0&userRole=ROLE_ADMIN_AUDITOR")) # takes both params to filter
ranger.force_delete_external_groups("isVisible=0&ihdfiohjf=453")) # only takes the first param
ranger.force_delete_external_users("isVisible=0"))
ranger.force_delete_external_users("name=usertest_142"))
ranger.force_delete_external_groups("syncSource=ABC"))
ranger.force_delete_external_groups("syncSource=None"))
ranger.force_delete_external_users()) # deletes all external users
ranger.force_delete_external_groups()) # deletes all external groups


Updated openid-client from 4.1.2 to 5.1.3

Updated the openid-client from 4.1.2 to 5.1.3 the breaking changes listed do not affect the code written in the provider.ts and the tests pass successfully.

[x] A changeset describing the change and affected packages. (more info)
[x] All your commits have a Signed-off-by line in the message. (more info)

Fixes #9227

Hi! You'll want to commit the resulting updated yarn.lock file along with this.

I have uploaded the yarn.lock i guess you take a look at it now @freben

Doesn't seem to build - is there some type package to update or similar?

I tried updating @types/node to 16.11.5 but it does not build with issues in the following files

packages/e2e-test/src/commands/run.ts
node_modules/@grpc/grpc-js
node_modules/@types/ssh2

@ismailelbadawy I think you might have to bump those types too so they're compatible with the later versions of the @types/node 16.x versions - maybe we do that as a separate PR though rather than rolling it all into this PR. Do you wanna have a go at that too in a different PR? I'm just gonna create a ticket for it

https://github.com/backstage/backstage/issues/9724

Yeah i can work on that in a separate PR

Blocked on https://github.com/backstage/backstage/pull/10558

Congrats on your first PR merged @ismailelbadawy! Happy to count you as a contributor.

Thank you so much @suuus appreciate that. I'm happy to call myself a contributor as well.


V13

inv link instructors fixed, added @ tag listing to /status command

Codecov Report

Merging #122 (392b2af) into main (0c0505c) will increase coverage by 0.05%.
The diff coverage is 80.00%.

@@            Coverage Diff             @@
##             main     #122      +/-   ##
==========================================
+ Coverage   68.58%   68.63%   +0.05%
==========================================
  Files          45       45
  Lines        1477     1473       -4
  Branches      222      220       -2
==========================================
- Hits         1013     1011       -2
+ Misses        400      398       -2
  Partials       64       64

Impacted Files
Coverage Δ

src/discordBot/services/service.js
61.47% <0.00%> (ø)

src/discordBot/commands/faculty/status.js
92.59% <100.00%> (+5.49%)
:arrow_up:

Continue to review full report at Codecov.

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


"First shared hypercore must be the same" when trying to replicate via webrtc.

I'm trying to replicate a db over webrtc-swarm and always running into the dreaded "First shared hypercore must be the same" message.
Below is the code I am trying to use. I use the same key for both dbs, and as far as i can tell i am looping both replication streams similarly to the tcp example in #19 .
Does anyone notice anything I'm doing wrong?
const wrtc = require('wrtc')
const swarm = require('webrtc-swarm')

const signalhub = require('signalhub')
const hyperdb = require('hyperdb')

const db1 = init_db('./db1', { valueEncoding: 'utf-8' })

db1.on('ready', () => {
    const db2 = init_db('./db2', db1.key, { valueEncoding: 'utf-8' })
    db2.on('ready', () => {
        db1.put('/hello', 'world', () => {
            init_swarm(db1, (hub) => {
                return swarm(hub, {
                    wrtc: wrtc
                })
            })
            init_swarm(db2, (hub) => {
                return swarm(hub, {
                    wrtc: wrtc
                })
            })
        })

    })
})

function init_swarm(db, swarmfn) {
    const hub = signalhub('freemate', ['https://signalhub.mafintosh.com'])

    const sw = swarmfn(hub)

    sw.on('peer', (peer, id) => {
        console.log('found peer')
        const repstream = db.replicate()
        peer.on('data', (data) => {
            console.log('id: ', id, ' got data: ', data)
        })
        repstream.pipe(peer).pipe(repstream)
        peer.once('finish', (err) => console.log(err))
        peer.once('error', (err) => console.log(err))
    })

    return sw
}

function init_db(location) {
    const db = hyperdb(location, { valueEncoding: 'utf-8' })
    return db
}

Seems like just another misunderstanding. I assumed that providing the "key" of the first db to the second one on creation would result in both using the same key pair, but it seems the local stream key is generated every time anyway. The only question I have now is, why do I need one database to be the "first" (and supply its public key to subsequent db instances on creation)?
What does that do in the background?

@peacememories it's part of the capability system and to have a joint discovery key. the first one to create the db, becomes the source. this simply means that the discoveryKey of the first one is the discovery key for the db forever. the first writer can disappear though without any issues.

@peacememories once you figure this out, I'd love to see your example!


Seperate AKE from OPRF

Based on #219. Makes cfrg/draft-irtf-cfrg-opaque#238 possible.

I'm still unsure about which trait to use for the envelope, but everything seems correct so far.

Replaced by #222.


New Term - parentMaterialSampleID

New term

Submitter: Richard Pyle
Proponents (at least two independent parties who need this term): Bishop Museum, TaxonWorks, data publishers from Denmark, Australia, Norway and Sweden, and multiple other institutions and data managers as expressed in commentary on several related issues.
Justification (why is this term necessary?): Multiple implementations of biodiversity data management systems manage instances of MaterialSample in a hierarchy. The definition of the MaterialSample class implies instances that result from sampling and subsampling, and includes examples including whole organisms, parts of organizations, and aggregates of multiple organisms. It is common practice among managers of physical material that meet the definition of MaterialSample to track derivatives (e.g., different preparations of the same organism, specimens within lots, tissue samples and other subsamples derived from whole organisms, etc.). The proposed new term allows for representing a parent/child relationship between instances of MaterialSample derived from other "parent" MaterialSample instances.

Proposed attributes of the new term:

Proposed definition of the new term: "An identifier for the broader MaterialSample from which this and potentially other MaterialSamples were derived, or which they collectively comprise."
Term name (in lowerCamelCase): parentMaterialSampleID
Class (e.g. Location, Taxon): MaterialSample
Comment (recommendations regarding content, etc.): Recommended best practice is to use a persistent, globally unique identifier for a dwc:MaterialSample or an identifier for a dwc:MaterialSample that is specific to the data set.
Examples: 6e43b33d-88ce-4a37-ad94-74d6c99b9e25, urn:uuid:11142195-4865-4b52-baed-1b76a39613a3
Refines (identifier of the broader term this term refines, if applicable): None
Replaces (identifier of the existing term that would be deprecated and replaced by this term, if applicable): None
ABCD 2.06 (XPATH of the equivalent term in ABCD, if applicable): not in ABCD

Term originally proposed a year ago by @thomasstjerne on the GBIF GitHub. Discussion around changes to MaterialSample on DwC (#314) and GBIF issue #37. This new term has direct relevance to dwc:preparations, in cases where multiple different preparations are derived from the same whole specimen.

Excellent!
Maybe the example could be: urn:uuid:6e43b33d-88ce-4a37-ad94-74d6c99b9e25

Thanks!  RE: the example, I was following the template of other similar terms in DwC (e.g., materialSampleID).  Also, I generally try to minimize the inclusion of dereferencing metadata from identifiers; but that's more of a personal preference.

Do you consider urn:uuid: as dereferencing metadata?

Example of a preserved specimen of bluethroat with a blood sample extracted for DNA in support of the need for the proposed parentMaterialSampleID term.
Preserved specimen (mounted)
occurrenceID = urn:uuid:11142195-4865-4b52-baed-1b76a39613a3
basisOfRecord = PreservedSpecimen
materialSampleID = urn:uuid:11142195-4865-4b52-baed-1b76a39613a3
organismID = urn:uuid:246afd01-f734-5da9-874b-4a09f26030f8
Blood sample
occurrenceID = urn:uuid:1ca12cf5-9c1a-4a25-82fb-739f2f1a322c
basisOfRecord = MaterialSample
materialSampleID = urn:uuid:1ca12cf5-9c1a-4a25-82fb-739f2f1a322c
organismID = urn:uuid:246afd01-f734-5da9-874b-4a09f26030f8
which would need parentMaterialSampleID = urn:uuid:11142195-4865-4b52-baed-1b76a39613a3
DNA sample (not yet here, but available for other)
which would need =>
parentMaterialSampleID = urn:uuid:1ca12cf5-9c1a-4a25-82fb-739f2f1a322c
...apropos, which begs the question if the reuse of the UUID for occurreceID as the UUID for materialSampleID is at all the correct use, however, a value for occurrenceID is mandatory to enable the records to be published in GBIF.

Here is an example of a bluethroat (Luscinia svecica subsp. svecica) from which 7 MaterialSamples were extracted, in support of the need for the proposed parentMaterialSampleID term. For many of these bluethroats we lack parentMaterialSampleID to describe the hierarchy between material samples.

organismID = urn:uuid:e593838a-f7a9-5ef2-a04a-2bfc7c90771f

@dagendresen : MANY thanks for the great example!

Do you consider urn:uuid: as dereferencing metadata?

Well... I guess it's technically not "dereferencing" metadata (like http://dx.doi.org/ or https://doi.org/); but it is still metadata, which basically translates to "What follows should be interpreted as a Uniform Resource Name, of the type Universally unique identifier". The actual "identifier" itself is the stuff that comes after the second : (in the same way that the stuff that comes after the third / in https://doi.org/10.3897/zookeys.641.11500 is the actual identifier).
I don't want to hijack this thread, but just to make a point...  this is the closest representation of the actual identifier for your organismID in the post above, that can be rendered in textual form:
11100101100100111000001110001010111101111010100101011110111100101010000001001010001010111111110001111100100100000111011100011111
(i.e., 128 consecutive bits, represented here as 1s and 0s)
A less cumbersome way to display this value to human eyeballs would  be in hexadecimal form:
e593838af7a95ef2a04a2bfc7c90771f
(that reduces it to 32 characters, instead of 128)
It could also be represented as a decimal number:
305159146678742414161168577211252373279
(but that increases the number of characters to 39)
The most text-economical way to represent it is in base64:
5ZODivepXvKgSgAAK/x8kA
(22 characters; but with a bonus: "Dive" is in there! Cool! It must be a sign...)
Of course, the most common way to represent it (and the way most people provide them to GBIF) is in the so-called canonical textual representation:
e593838a-f7a9-5ef2-a04a-2bfc7c90771f
(36 characters)
This form is already embellished with an additional four characters (hyphens) that are not actually part of the 128 bits of the identifier itself.  They're added for the benefit of human eyeballs, presumably because breaking it up into a 8-4-4-4-12 template is less scary to humans (there are other technical reasons, but but important ones, in my opinion).
Microsoft unhelpfully represents them sometimes using upper-case letters:
E593838A-F7A9-5EF2-A04A-2BFC7C90771F
(also the form I regretfully chose for rendering as ZooBank LSIDs)
Or, even worse, with curly brackets:
{e593838a-f7a9-5ef2-a04a-2bfc7c90771f}
I get why it's useful in the context of RFC 4122 to pre-pend them with the aforementioned metadata (urn:uuid:), as you advocate:
urn:uuid:e593838a-f7a9-5ef2-a04a-2bfc7c90771f
And honestly, other than the canonical text form, I could be most easily persuaded to embrace this form (it's certainly better than pre-pending LSID metadata, as in something like urn:lsid:zoobank.org:act:8BDC0735-FEA4-4298-83FA-D04F67C3FBEC)
But here's my point:  the actual identifier is 128 consecutive 1s and 0s -- which is how most database systems actually store them on disk, in the form of 16-byte numbers. However, they're almost always presented (and consumed) as text strings -- usually UTF text strings, which make them a whopping 576 bits in canonical form.  So basically, we're consuming 4x as many bytes as the actual identifier, just to make them a little bit more human-friendly.
You could argue that the form urn:uuid:e593838a-f7a9-5ef2-a04a-2bfc7c90771f makes them even more computer-friendly (at the cost of only an additional 144 bits... more than the actual identifier itself, BTW), but I would argue "not really".  While I know the intent of the RFC 4122 system was to allow computers to automate things, I'm not sure how much it's caught fire broadly among people who process this information (and write code to process this information).  I bet the first thing that a lot of developers (most?) would do with urn:uuid:e593838a-f7a9-5ef2-a04a-2bfc7c90771f is strip off the first 9 characters, then write the rest of the code based on matching the canonical text form.  And even without the prefix, it's not too hard to incorporate a regular expression to identify a UUID within any text string (including those from PLAZI, which typically lack the hyphens).
OK... like I said, I don't want to hijack this thread with a diatribe about identifiers, but it appears that ship has already left the barn (or something like that).

@deepreef This looks like a solid proposal. I took pause at first at the "and potentially other MaterialSamples were derived, or which they collectively comprise" in the definition. It seemed odd to refer to other entities than required to define the concept, but these additions really do help to nail down more broadly how to use the term in practice, and they do nothing to obscure the immediate concept, so I end up quite liking it.
Is that example a real identifier for a MaterialSample somewhere? I try to make sure the examples are real. If it isn't, can we use that provided by @dagendresen? Thanks Dag for the great illustration of usage.

Thanks, @tucotuco

I took pause at first at the "and potentially other MaterialSamples were derived, or which they collectively comprise" in the definition. It seemed odd to refer to other entities than required to define the concept, but these additions really do help to nail down more broadly how to use the term in practice, and they do nothing to obscure the immediate concept, so I end up quite liking it.

Yeah, that's the part of the proposal I was most queasy about.  I modelled the definition after the existing definition for parentEventID:
"An identifier for the broader Event that groups this and potentially other Events."
I originally had it as:
"An identifier for the broader MaterialSample from which this and potentially other MaterialSamples were derived."
But that seemed incomplete, so I added the extra ", or which they collectively comprise" (to avoid people nit-picking the definition of "derived")

Is that example a real identifier for a MaterialSample somewhere?

Yup!  And not chosen at random either (here's a hint: search for occurrenceID 4fed2b94-7fb1-4a49-9315-0810171fc507). I was kinda disappointed that there didn't seem to be any way to search GBIF on materialSampleID (doesn't even seem to show up in the full data record).  I wanted to find other real-world examples of what values people are presenting under that term, so I could have more than just the UUID example.  I even downloaded ~2M GBIF records (Hawaii records -- I need them for another project anyway) so I could get a sampling of other real-world values for materialSampleID; but I has having trouble importing the download into a database, so I gave up and just entered the UUID.  I figured that's the only example given for materialSampleID anyway, so might as well be consistent. Except I chose a different UUID for the example, for entirely narcissistic reasons (in my defense, if I were a true narcissist, would have gone with 65fea8a6-c595-4f5b-adda-d1d176f40e7c - I'll make you wait until GBIF adds support for searching on materialSampleID to see what that one is).
In any case... I've added the example from @dagendresen as a second one (even though I'm queasy on the urn:uuid: thing...)

Haha @deepreef wrote:

OK... like I said, I don't want to hijack this thread with a diatribe about identifiers, but it appears that ship has already left the barn (or something like that).

Me either. But here goes. Many moons ago Greg and I asked, do we need the prefix? (answer no). Who or what really needs the "urn:uuid" declaration? A machine can figure it out. A human can see it? The field comes with expectations of what to find in it. The prefix is redundant, no?

Related issues are Issue #1, Issue #3, Issue #24 (reopened because of renewed interest), Issue #314, Issue #332, Issue #345, Issue #346, and Issue #347.

The MaterialSample class has been effectively replaced with the MaterialEntity class for clarity, though there has been no deprecation of MaterialSample. The activity from the Material Sample Task Group did not promote a parent material identifier because it was deemed out of scope. If there is still interest in this proposal, may I suggest re-opening it as a recommendation for the MaterialEntity class?


Exception with the deepdark-material-full-black theme

Hi
When using the deepdark-material-full-back theme, I get an exception in the XAML designer in Visual Studio. It works with other themes. I get the same exception with the deepdark-material theme.

Thanks for reporting this issue.

I'm getting the same exception in the WPF designer with both Deepdark Material themes.   But if I switch to another theme, click the reload link in the error message, then switch back, it seems to work.  Probably until the next restart of visual studio.
In my case, it was a different resource name it could not find than in the previous post. But it was under VS.Cider too.