String properties behave differently in a request

While making my own SpecimenBuilder, I stumbled upon an issue, I don't know how to fix - basically string properties cannot be cast to PropertyInfo, so I cannot access CustomAttributes and the class they are declared in.
Here is some code I made for this example:
    [Table("ItemTable", Schema = "prd")]
    public class Item : IEntity
    {
        [Column(@"Id", Order = 1, TypeName = "bigint")]
        [Display(Name = "Item id")]
        public int Id { get; set; }

        [Column(@"Name", Order = 2, TypeName = "nvarchar")]
        [MaxLength(5)]
        [StringLength(5)]
        [Display(Name = "Item name")]
        public string Name { get; set; }

        [Column(@"Effect", Order = 3, TypeName = "nvarchar")]
        [MaxLength(6)]
        [StringLength(6)]
        [Display(Name = "Item effect")]
        public string Effect { get; set; }

        [Column(@"LastUpdated", Order = 4, TypeName = "datetime")]
        [Display(Name = "Last Updated")]
        public System.DateTime? LastUpdated { get; set; }
    }

The first thing I do in my CustomSpecimen, is cast request to PropertyInfo, that works wonderful for all members of this class, except for strings.
        public object Create(object request, ISpecimenContext context)
        {
            var property = request as PropertyInfo;
            if (property == null) return new NoSpecimen();

            ColumnAttribute column = property.GetCustomAttribute<ColumnAttribute>();
            TableAttribute table = property.ReflectedType.GetCustomAttribute<TableAttribute>();

            ...
        }

The above code casts the Id and LastUpdated to properties and retrieves their custom attributes without any issues, however, when it comes to Name and Effect properties, the only request that ever comes in, is either of type string (TypeInfo not PropertyInfo), or it is a Ranged string request.
Then, I thought I will be clever, and I will only take the class itself in the request and resolve the properties in a single call to my CustomSpecimen, like this:
        public object Create(object request, ISpecimenContext context)
        {
            var typeInfo = request as TypeInfo;
            if (typeInfo == null) return new NoSpecimen();
            if (!typeInfo.ImplementedInterfaces.Contains(typeof(IEntity))) return new NoSpecimen();

            // Stores the class name, local offsets and other things for incrementing unique IDs
            PrepareForNextDataSet(typeInfo.FullName);
            TableAttribute table = typeInfo.GetCustomAttribute<TableAttribute>();

            var instance = Activator.CreateInstance(typeInfo.AsType());
            foreach (var prop in typeInfo.DeclaredProperties)
            {
                ColumnAttribute column = prop.GetCustomAttribute<ColumnAttribute>();
                // Tries to get info about this column from metadata
                UniqueKeyModel uniqueKeyModel = GetUniqueKeyModel(table.Name, column.Name);

                object resolved;
                // If this column is part of unique keys, then assign a unique id
                if (uniqueKeyModel?.UniqueKeyOrder != null)
                {
                    // try assigning unique id, if not possible then resolve from context
                    resolved = GetValueForProperty(prop) ?? context.Resolve(prop);
                }
                else
                {
                    // if field is not part of UniqueKeys - then randomize output
                    resolved = context.Resolve(prop);
                }
                prop.SetValue(instance, resolved, null);

            }

            return instance;
        }

Now, this approach works perfectly until I start to customize specific values using ICustomization interface or simple calls to Fixture.Build(), like this:
    public class ItemCustomization : ICustomization
    {
        /// <inheritdoc />
        public void Customize(IFixture fixture)
        {
            fixture.Customize<Item>(c =>
                c.With(p => p.Name, "example"));
        }
    }

And final usage:
    Fixture fixture = new Fixture();
    fixture.Customizations.Add(new CustomSpecimen());
    fixture.Customize(new ItemCustomization());
    var result = fixture.CreateMany<Item>(5).ToList();

My specimen is no longer working, because customization has overriden specific values and the Item class does not get sent to my CustomSpecimen, only the remaining fields as primitive data types.
Please suggest a better way of doing this - in essence, what I am trying to accomplish is to have a CustomSpecimen that would populate fields for all types of entity framework generated classes. (I cannot use the default builders, because I have custom logic based on attributes).
CustomSpecimen validates Column name and Table name attributes for each property against a list, and if that list contains an entry for this column & table, then it will assign a unique id. Otherwise, it will resolve the property from context.
Then it should check, if any of the fields have been overriden with customization, if yes, then it should use that specific value instead.

@zvirja I would very much appreciate your input on this. Thank you.

Anyone, please? @moodmosaic @ecampidoglio @adamchester @zvirja @gertjvr

@janissimsons, I'm not sure I completely follow the question here, but wouldn't something like this work?
# Pseudocode

var candidate = request as RangedRequest;

if (candidate == null)
    return new NoSpecimen();

if (candidate.MemberType != typeof(String))
    return new NoSpecimen();

# Do something with `candidate`
# ...

@janissimsons Good night! :) I need to stop apologize for the belated replays and put a disclaimer somewhere 😖
I believe that I do understand your issue more or less  (👍 for the detailed description), so will try to help.
You put your custom builder to the fixture.Customizations collection, but it matters whether you add it to the end, or at the beginning. If you look at the default Customizations builders (yes, this collection is not empty by default which I always find non-intuitive), you might notice that the last node is related to the data annotation attributes handle. It kicks in before your builder and intercepts the Name and Effect properties, as they contain MaxLength and StringLength attribute. So your builder never receives the original PropertyInfo request, but instead the RangedRequest or ConstrainedStringRequest (depending in which order the relays are specified in our code).
To mitigate that, you have a few good approaches:

Put your custom builder to the beginning of the Customizations collection using fixture.Customizations.Insert(0, new CustomBuilder()).
Remove the built-in support for the data annotations using fixture.Customize(new NoDataAnnotationsCustomization()). The data annotations builder will be removed from customization, so properties will be never intercepted. I wouldn't recommend this way, as it's always better to respect data annotation attributes if those are present 😊
Build your code around the RangedRequest or ConstrainedStringRequest as advised above by @moodmosaic. Not sure it will work for you, as you likely need access to other member attributes, which are no longer available 😕

If your specimen builder will work with individual PropertyInfo requests rather than with the whole type, then it should work fine if later you use fixture.Customize(c => .....) or fixture.Build(...).Create(). The Customize<T>() or Build<T>() methods inject customization at the very beginning of the chain of builders, so they will always precede your custom builder and intercept the typeof(T) requests. I wouldn't suggest you to fight with typeof(T) interception and better customize individual members, as you really cannot control too much here, especially with the Build().
Hope my answer helps you 😉 If not - clarify what exactly doesn't work.

@zvirja Thank you! That explains why those properties where intercepted. I will use the first solution.
I think you should update the documentation, because from what I understood from wiki and the Pluralsight course is that whenever we add a custom ISpecimenBuilder to the Customizations list then it becomes the very first to handle all requests, and if that fails then the default builders kick in.
@moodmosaic I cannot work with the RangedRequest, because as @zvirja said I need to access the other attributes that are defined for this property.
One last question - since you know the AutoFixture internals much better than I do, is there a better approach to my general problem:
I have over 100 classes for which I need to generate valid data. Now, the SpecimenBuilder I have written generates data correctly for about 80% properties across all classes. However, there will always be some specific logic that applies only for a couple of fields that cannot be generalized.
Right now, I have chosen to let the builder create data for each class, then override the fields in a loop and set them to specific values.
An example:
private Class1 GetClass1(){
	var datasets = fixture.CreateMany<Class1>(DataSize).ToList()

	foreach(var set in datasets){
		set.Field25 += "Customer";
		set.Field27 = 5;
	}
	return datasets;
}

private Class2 GetClass2(){
	IList<string> BusinessArea = new List<string>()
    {
        "Private", "Industrial", "Commercial"
    };

	var datasets = fixture.CreateMany<Class2>(DataSize).ToList()

	foreach(var set in datasets){
		set.Field5 += BusinessArea[randomizer.Next(0, BusinessArea.Count - 1)];
		set.Field7 = "SPKey000";
		set.Field15 = utils.GetSynchronizedDateTime();
	}
	return datasets;
}

private Class3 GetClass3(){
	var datasets = fixture.CreateMany<Class3>(DataSize).ToList()

	foreach(var set in datasets){
		set.Field1 = 2;
		set.Field4 += "areaNum";
	}
	return datasets;
}

ICustomization override would only allow me to insert specific value for the whole data set, but in some cases I need to specify different values per each set.
As you can see, I will have to write at least 100 of these methods to set the correct data.
Is there any better approach that comes to your mind?
Thank you!

Well, if you need to customize particular properties of particular types, it's unlikely you can avoid coding that explicitly. You might create some helper methods to do that in laconic way:
fixture.CustomizeMember<DtoType>(x => x.Property, (string str) => str + "_original")

but still you'll need to write those lines - one per each field/property.

If you want to customize the individual properties for a batch, you might use the Build() syntax. It works perfectly fine for those cases:
            var fixture = new Fixture();

            var itemsWith42 = fixture
                .Build<Item>()
                .With(x => x.Number, 42)
                .CreateMany(10)
                .ToArray();

            var itemsWithSuperValues = fixture
                .Build<Item>()
                .Without(x => x.String)
                .Do(result => result.String = fixture.Create<string>() + "_SUPER")
                .CreateMany(10)
                .ToArray();

            Assert.All(itemsWith42, i => Assert.Equal(i.Number, 42));
            Assert.All(itemsWithSuperValues, i => Assert.EndsWith("SUPER", i.String));

Notice that clumsy Without(x => x.Prop).Do(x => x.Prop = value) pattern. That's because Do() callback is executed before auto-properties assignment. After we implement #708 it will become possible to write smth like .With(x => x.Value, (string str) => str + "_SUPER").
Additionally, the approach above should work perfectly fine if you already have member-level customizations, as they will be still applied for the rest members.
Does it work for you?

Yes, it does, thank you.

@janissimsons Great, you are welcome :wink: Sorry again for the long response time - hope it was still in time.


MODELIX-864 support for MPS 2023.3 and 2024.1-EAP1

No actual changes needed. The project is just tested with the new versions and the plugins declare to be compatible with them.

:tada: This PR is included in version 8.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Mirabella Genio - Downlight - I004544 Downlight Dump

These are a newer hardware revision of the Genio RGBCW Downlights.
Attached is a dump file.
I have reflashed one with the dump file from:
https://github.com/tuya-cloudcutter/tuya-cloudcutter/issues/329
it has worked successfully.
I have another 40 downlights to do so this is not a feasible solution.
Mirabelli_Genio_L004544.zip
Genio_Dump.txt

This is firmware version 1.5.21 and is on the known patched firmware list.  Serial flashing will be your only option.


Chrisda to Master

Docs Build status updates of commit fd77215:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/docs-conceptual/app-only-auth-powershell-v2.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/basic-auth-connect-to-eop-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/basic-auth-connect-to-exo-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/basic-auth-connect-to-scc-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/cmdlet-property-sets.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/connect-to-exchange-servers-using-remote-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/control-remote-powershell-access-to-exchange-servers.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/disable-access-to-exchange-online-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/exchange-cmdlet-syntax.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/exchange-online-powershell-v2.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/filter-properties.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/filters-v2.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/open-the-exchange-management-shell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/recipient-filters.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/recipientfilter-properties.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/v1-module-mfa-connect-to-exo-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/docs-conceptual/v1-module-mfa-connect-to-scc-powershell.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Clear-ActiveSyncDevice.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Disable-Mailbox.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Disable-RemoteMailbox.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Enable-Mailbox.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Export-QuarantineMessage.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-AccessToCustomerDataRequest.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-ActiveSyncDevice.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-ActiveSyncMailboxPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-AdministrativeUnit.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-CalendarDiagnosticLog.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-ClientAccessServer.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-ConnectionByClientTypeReport.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-HoldCompliancePolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-HoldComplianceRule.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-MailTrafficReport.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-OfflineAddressBook.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Get-TransportServer.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Move-ActiveMailboxDatabase.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ActiveSyncMailboxPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ActiveSyncVirtualDirectory.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ActivityAlert.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-AutodiscoverVirtualDirectory.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ClientAccessRule.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ComplianceSearchAction.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-EcpVirtualDirectory.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-EmailAddressPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-HoldCompliancePolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-HoldComplianceRule.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-InboundConnector.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-ManagedContentSettings.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-MapiVirtualDirectory.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-OabVirtualDirectory.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/New-OutboundConnector.md
:white_check_mark:Succeeded
View (exchange-ps)

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Hybrid flow - for SPAs with backends

I think it'd be useful to add official support for the hybrid flow, where a Single Page App does the auth request/response steps with response_type="code id_token", and then sends the code to the backend service, so that the backend is able to obtain a confidential access token.

There is today a proliferation of SPA's and corresponding implementations of code flow/hybrid flow stuff with obscure implementations of popup's and sometimes build with suboptimal understanding of the protocols involved.
the oidc-client-js project is the only really trustworthy source, it would be great if this lib could serve as base for SPA specific versions for angular, react, vuejs....

Hybrid flow is designed for server-side apps (and native apps if they also use PKCE). This library is specifically focused on implicit flow.

Hi Brock,
Sure, I understand the focus and the lib is doing this exquisitely.
Just for my understanding, do you see the usage of hybrid/code flow in a SPA, but with a dedicated backend (in such a way the client secret is stored only server side and a server backend channel is used for exchanging code for a token with STS), as an anti-pattern/security concern ?

do you see the usage of hybrid/code flow in a SPA

Not really. If you were to do this, you would have a bootstrapping problem to securely make requests from the SPA to the server-side to then use the secret/RT/hybrid flow/etc.


Support for Mistral Inference

Hey @dusty-nv, something like 10 days ago Mistral released Mistral-7B-Instruct-v0.3. What is interesting about it is that it is (to the best of my knowledge) the first open source model to support native function calling. Not only they've fine tuned the model to do function calling, but the tokenizer was also modified and there are special function calling tokens, and so on. To take advantage of this we need to  use mistral-inference instead of transformers.
I thought this would be more robust for the home assistant than plain prompting. I think NanoLLM is a better repo for this, but it's definitely more work. I'll be working on this over the weekend.

Thanks @michaelgruner , yes these functioned-tuned models are great looks like they follow OpenAI tool spec too, will have to look into this more as to what chat template the actual model follows.  MLC supports Mistral and I know people were running the Mixtral-8x7B with it, will have to try this sometime.
And yes NanoLLM and/or Jetson AI Lab would probably be where this lands as it doesn't actually require a new container.  We should have a page for the models that can do function calling and how to use them.


Dynamically sized matrices/vectors

Change vector/matrix definition to something like Vector<T, N, Cap = N>, Matrix<T, Row, Col, RowCap = Row, ColCap = Col>, and add tag type Dynamic.

Type
Description

Vector<T, N, N>
Statically sized N

Vector<T, Dynamic, Dynamic>
Dynamically sized at all (equivalent to Vec)

Vector<T, Dynamic, N>
Dynamically sized with maximum capacity N

Vector<T, N, M>
Illegal

Matrix works similarly, but dynamic rows + static cols and vice versa will be illegal.
This may be implemented something like this, with many copy-pasta of Vector/Matrix inherent impls for each of sizing strategy.
struct Vector<T, N, Cap = N>(_) where (N, Cap): Array<T>;

trait Array<T> {
    type Arr : AsRef<[T]> + AsMut<[T]> + arrayvec::Array;
}

impl<T> Array<T> for (Dynamic, Dynamic) {
    type Arr = Vec<T>;
}

impl<T> Array<T> for (Dynamic, U0) {
    type Arr = ArrayVec<[T; 0]>;
}

impl<T> Array<T> for (Dynamic, U1) (
    type Arr = ArrayVec<[T; 1]>;
}

// ...

impl<T> Array<T> for (U0, U0) {
    type Arr = [T; 0]:
}

impl<T> Array<T> for (U1, U1) {
    type Arr = [T; 1]:
}

// ...

Or something like Matrix<T, Dynamic<U8>, Dynamic<Heap>>


Linting

@nwikstrand @AnnaRybkina - I think both of your suggestions make sense, possibly as a follow-up PR to set this up in CI or do whatever the team decides is best. I don't have strong opinions on when/how linting happens, so I leave it up to y'all.


Fix git_modified_lines method

What
Update git_modified_lines method to properly parse multipart git diff
Why
It looks like it wrongly counts modified lines when git diff has multiple parts with more lines matching
/^@@ .+\+(?<line_number>\d+),/

Okay, I think that makes sense. Thanks for the PR. Could you describe what problem this is fixing, for my own understanding? Is it only mis-reported number of lines, or something more functional?

Hello @ashfurrow 🤝
I have a problem with reporting issues when filter_issues_in_diff is set. Then in this line:
https://github.com/ashfurrow/danger-ruby-swiftlint/blob/master/lib/danger_plugin.rb#L336
SwiftLint issues from the further part of the diff are excluded from the report.

Thanks again for the PR! This has been released in version 0.30.2 👍


Add aarch64 ubuntu bazel bot

@gchatelet PR should be ready for review !
https://github.com/google/cpu_features/actions/workflows/aarch64_linux_bazel.yml
https://github.com/google/cpu_features/actions/workflows/amd64_linux_bazel.yml


DirectoryScanner->getClasses() returns no classes

I scan with this class a directory for classes. But getClasses returns an empty array. When I test getFiles it works I get dozens files. I use php7.

Possibly duplicate of #49. Check if you are running PHP 7.0.5 or 7.0.4

This repository has been closed and moved to laminas/laminas-code; a new issue has been opened at https://github.com/laminas/laminas-code/issues/28.


[DPE-4229] Terraform bundle

Adding bundles based on Terraform. I have also added the tests to deploy it with and without cos.
I was scouting a bit to see if it existed a Python library for binding with terraform, and I found these:

https://pypi.org/project/python-terraform/
https://github.com/Prodesire/py-libterraform

However, they seemed a bit out of date and not supporting terraform 1.8.x which I've been using. Earlier today, Pedro suggested to look into this one, that should work nicely with pytest. However I had already implemented most of the stuff and I'll explore its use in a separate ticket.

@marcoppenheimer


Decode resources to streams instead of disk

If aapt allows to write or read from memory, the necessity for a cache on disk can be removed. Otherwise aapt has to be patched to allow that.

This is overly complex. We can use a temp dir on most operating systems and use the app home dir on Android.
If you think otherwise, please reopen and explain why you think we should do that and how we can justify the complexity behind this.


[KED-1582] Support parameter objects with typed attributes to simplify configuration management

Description
In big Kedro projects with hundreds of nodes the number of parameters can also grow quite large. We tend to group the parameters under top level keys in the conf yaml's to avoid having to supply too many inputs to the nodes in form of separate "params:.." and to get some form of logical grouping. So we might do something like:
# parameters.yml (or in separate files in a directory conf/base/parameters/)

training:
  num_iter: 100
  learning_rate: 0.01
  # ...and potentially many more :)

and then add "params:training" as an input to our modelling node.
The problem now becomes managing these sets of parameters, which are just passed into the nodes as dictionaries. Example of pain points we have experienced related to this:

No IDE help to avoid making silly mistakes like accessing invalid keys in the dictionaries, also no auto-complete.
Unclear approach for providing documentation on meaning and required types for the parameters. Should this be in the form of comments in the YAML or in the docstring in the given node?
The tests are required to construct these parameter dictionaries which can be cumbersome, given the lack of default values. (Could potentially load the yml files in the tests but this coupling doesn't seem very nice.)

Therefore I am suggesting Kedro to support optionally allowing the user to provide a typed schema for sets of parameters, in which case Kedro can pass in an object with attributes instead of a dictionary.
Context
This could simplify the management of large sets of parameters, and reduce mistakes made. I am keen to hear if others share the pain of this, hence I am posting the issue here.
Possible Implementation
I am suggesting to use pydantic for this, which is a python library for data validation and settings management. It's used in other projects such as FastAPI, Ludwig and gluon-ts to name a few.
From the users perspective it could look something like this:
# tell Kedro which specification to use for the training parameters
training__type_spec: example_project.nodes.ds.modelling.TrainingParams
training:
  num_iter: 100
  learning_rate: 0.01

# src/example_project/nodes/ds/modelling.py

from pydantic import BaseModel
...

class TrainingParams(BaseModel):
    """ <bunch of nice docstring explaining the parameters> """
    num_iter: int # required value
    learning_rate: float = 0.01 # optional value: has default

def train_model(
    train_x: pd.DataFrame, train_y: pd.DataFrame, params: TrainingParams
) -> np.ndarray:
    # Note the TrainingParams type hint so that our IDE gives
    # us auto complete, type checking etc.
    ...
    model.fit(..., num_iter=params.num_iter, learning_rate=params.learning_rate)
    return model

TrainingParams  provides a place to document the different parameters, and also provide default values in which case it gets simple to construct these parameters objects in our unit tests.
I have a simple implementation working, by just overriding the attribute .params in the context object and adding some code to convert the dictionaries to pydantic models. I am happy to work on it more if there is interest.
I am keen to hear if others are interested in this or have any thoughts.
Thanks,
Jonathan

Thank you so much for raising this. Would love to hear more opinions here but I absolutely LOVE this idea. Explicit schema, more types, less string -- what's not to like?

Thanks for the reply @limdauto! I thought about having a type attribute inside the set of parameters, but I was thinking it would be nice to be able to override the parameters in conf/local/ without having to specify the type again there. But perhaps there is some better solution to this I am not aware of?
I also realised that for the parameter object, there is no need for kedro to depend on pydantic or anything else. It should just initialise an object of the type user specified like ParameterType(**params) and the user can use pydantic, dataclasses or anything else.

An alternative would be to rely on python dataclasses to avoid additional dependencies. That said, I am not sure what additional features pydantic supports, and I know that this will work only on python 3.8+

Spoke to @DmitriiDeriabinQB and seems like it could possibly be added in kedro.extras once there is some kind of after_params_loaded hook available. For now, I have implemented it using the after_catalog_created hook (which is not as clean) here: https://github.com/jonathanlofgren/more-kedro


Add support for opcodes lotimer/hitimer

While not widely supported or well documented, is very useful especially when triggering a note with on_locc/on_hicc to prevent a bunch of retriggers.
The region will trigger as long as the elapsed time from the note-on of the most recently triggered region in the current polyphony group is between lotimer and hitimer amount of seconds. lotimer default 0, hitimer default is max_float.
Example use: to preventing a region from retriggering too quickly, set lotimer=0.1

Thanks for the MR! Same as the other, I'd like to add a some form of testing for this, do you have the typical use case that triggered you to make this change?

Sure, as mentioned in the comment above, my motivating use case was a way to rate-limit triggers from a region set up to be triggered via CC events using on_locc/on_hicc . For example:
<region> group=1 on_locc4=0 on_hicc4=0 lotimer=0.1 sample=hihatFoot_OH_MP_1.wav
Which is an example where you could have a pedal which is setup in an expression input that sends CC values, to trigger when the value hits 0, but to not trigger again until after 0.1 seconds elapses, and effectively debounces the input which may jitter around zero.
I saw this unimplemented opcode in the spec, which did exactly what I wanted, assuming I decoded the meaning correctly, since it appears to be unimplemented by most other SFZ instruments.
I haven't looked into how the tests are setup, should I perhaps add something in RegionTriggersT.cpp to test this opcode, or in some other place?

The implem looks great. I'll add some parsing and messaging tests, and for this one we can test triggering too.

I added the tests, tell me if everything looks reasonable!


⚠ Bofrost.be has degraded performance

In 4e58f22, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2071 ms

Resolved: Bofrost.be performance has improved in ff8f9d0.


[release-1.12] fix invalid handling of ip addresses in comparisons

This manual backport of #6293 was to avoid adding a new dependency to the 1.12 branch of cert-manager. It uses sort.Slice instead of the slices package.
We first tried an automatic backport via #6295 but realised a manual backport would be needed
Kind
/kind bug
Release Note
Fixes an issue where cert-manager would incorrectly reject two IP addresses as being unequal when they should have compared equal. This would be most noticeable when using an IPv6 address which doesn't match how Go's `net.IP.String()` function would have printed that address.

/approve
/lgtm


Config base_controller_class with string & constantize

Makes https://github.com/roidrage/lograge/pull/227 functional
This fixes a severe problem where the controller response wasn't being returned. Something about placing the ActionController::API constant in the configuration block causes this.

@benlovell apologies about submitting a breaking feature before! This should handle it (confirmed in my app)
This comes to mind: https://twitter.com/withzombies/status/829716565834752000?lang=en

No trouble. I really ought to get around to adding proper integration tests in a hosting application.


Download icon is always in the foreground

Bug report
The download icon is always in the foreground. It doesn't matter if I use the default icon or my own. I have datepicker on the page over the icon and when I open it, I still see the download icon.
Explanation
I would expect that the icon isn't visible when I open my datepicker. But at the moment I still see the icon even though the datepicker is opened. And the icon is also over my titlebar when I scroll the page.
I have a picture of my datepicker attached in which you can see the download icon at the top right corner. And I also have picture attached where you can see the download icon over my v-app-bar at the top of my application.

You may change the z-index of the toolbar
.apexcharts-toolbar {
  z-index: 0 !important;
}


[Monsters and Other Childish Things] Changed Results Output

Changed dice results to display matches instead of sums, since this system doesn't use those.

Submission Checklist
Required

[ ] The pull request title clearly contains the name of the sheet I am editing.
[ ] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[ ] The pull request makes changes to files in only one sub-folder.
[ ] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details

The name of this game is: <   >  (i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)

The publisher of this game is: <   > (i.e. Wizards of the Coast, Evil Hat)

The name of this game system/family is: <   > (i.e. Dungeons & Dragons, FATE)

[ ] I have followed the Character Sheets Standards when building this sheet.

[ ] This sheet has been made on behalf of, or by, the game's publisher.
[ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: <   >
[ ] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

Changes / Description

Character Sheet Info Roll20 Internal Use only.


develop an incident response policy

I heard a great description of this briefly at Bar Camp Buffalo a few weeks ago, didn't meet the person who gave it though. "Rule 0 is 'Don't panic'. The incident response policy is what you end up doing anyway, but if you write it down ahead of time you can skip the panic and perform a lot better."
It's things like:

turn $EVERYTHING off
review $EVERYTHING
clean $EVERYTHING up

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/316467-develop-an-incident-response-policy?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github).

Moved to https://github.com/gratipay/inside.gratipay.com/issues/530.


Conferences

Are you adding conferences that make a special effort to be inclusive? For example this one:
https://www.elixir-with-love.com/
They have a Diversity Ticket and include talks on mental health issues.

Omg! We dind’t have a proper section for conferences, but this one looks like the perfect one to start it. If you want, you can create a PR to add the new section and the first conference, so everyone could see that this section comes from you, or if you prefer, we can add it. What do you prefer? :smile:

I can add It :)

All done!

We can close this issue since you have addressed it in #16 😄


2020-03-12 09:53:54.490: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.491: more info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceBrowseReply got service: reg-api-3 for regtype: _nmos-register._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.491: more info:<PHONE_NUMBER>: DNSServiceResolve for name: reg-api-3 regtype: _nmos-register._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.502: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.503: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.504: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.504: more info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceResolveReply got host: reg1.axon.jtnm.lan. port: 3210
2020-03-12 09:53:54.505: more info:<PHONE_NUMBER>: getaddrinfo for hostname: reg1.axon.jtnm.lan.
2020-03-12 09:53:54.507: more info:<PHONE_NUMBER>: Using getaddrinfo, got address: <IP_ADDRESS> for host: reg1.axon.jtnm.lan.
2020-03-12 09:53:54.508: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.516: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.517: more info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceBrowseReply got service: reg-api-2 for regtype: _nmos-registration._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.517: more info:<PHONE_NUMBER>: DNSServiceResolve for name: reg-api-2 regtype: _nmos-registration._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.550: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.550: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.553: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.554: more info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceResolveReply got host: reg3.axon.jtnm.lan. port: 3210
2020-03-12 09:53:54.554: more info:<PHONE_NUMBER>: getaddrinfo for hostname: reg3.axon.jtnm.lan.
2020-03-12 09:53:54.556: more info:<PHONE_NUMBER>: Using getaddrinfo, got address: <IP_ADDRESS> for host: reg3.axon.jtnm.lan.
2020-03-12 09:53:54.557: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.560: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.560: more info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceBrowseReply got service: reg-api-1 for regtype: _nmos-register._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.561: more info:<PHONE_NUMBER>: DNSServiceResolve for name: reg-api-1 regtype: _nmos-register._tcp. domain: axon.jtnm.lan. on interface: 0
2020-03-12 09:53:54.591: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.592: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.593: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.594: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.595: more info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceResolveReply got host: reg2.axon.jtnm.lan. port: 3210
2020-03-12 09:53:54.595: more info:<PHONE_NUMBER>: getaddrinfo for hostname: reg2.axon.jtnm.lan.
2020-03-12 09:53:54.599: more info:<PHONE_NUMBER>: Using getaddrinfo, got address: <IP_ADDRESS> for host: reg2.axon.jtnm.lan.
2020-03-12 09:53:54.600: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.602: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.602: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.605: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.605: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.606: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.606: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.606: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.607: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.607: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.608: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.609: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.609: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.610: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.610: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.611: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.611: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.612: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.614: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.614: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.636: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.637: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.637: more info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceResolveReply got host: reg1.axon.jtnm.lan. port: 3210
2020-03-12 09:53:54.637: more info:<PHONE_NUMBER>: getaddrinfo for hostname: reg1.axon.jtnm.lan.
2020-03-12 09:53:54.640: more info:<PHONE_NUMBER>: Using getaddrinfo, got address: <IP_ADDRESS> for host: reg1.axon.jtnm.lan.
2020-03-12 09:53:54.641: too much info:<PHONE_NUMBER>: After DNSServiceResolve, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.643: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.644: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.644: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.644: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.645: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.645: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.645: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.646: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.646: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.648: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.648: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.649: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.649: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.650: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.650: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.650: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.657: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.657: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.657: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.658: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:54.660: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:55.278: more info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult timed out or was cancelled
2020-03-12 09:53:55.281: too much info:<PHONE_NUMBER>: After DNSServiceBrowse, DNSServiceProcessResult succeeded
2020-03-12 09:53:55.284: info:<PHONE_NUMBER>: Discovered 4 Registration API(s)

OK, I finally have some time to test this. Firstly, we have jsut replicated our usual Linux build on a clean environment using mDNSResponder, and proved that we can pass the IS-04-01 tests with DNS_SD_MODE = 'unicast' in Config.py.
nmos-cpp-node was lanuched as follows:
./nmos-cpp-node "{\"domain\":\"testsuite.nmos.tv\", \"http_port\":1080, \"logging_level\":-40, \"discovery_backoff_max\":15}"

We'll now build up the environment using Avahi instead of mDNSResponder!

Having now built up the environment with Avahi, I can confirm that I see test failures with the test suite config DNS_SD_MODE='unicast' in three test casess, IS0401Test.test_15, test_16 and test_21. So at least that reproduces what you experienced, @wsneijers!
However, I tried the change you reported worked for you (https://github.com/sony/nmos-cpp/issues/128#issuecomment-598099844), and it only makes things worse for me, with many more test failures, starting from test_02.
I will attempt to debug.

Nice to see it at least reproduces (half the battle is won :) ). However it strange, I tested it on multiple targets: embbedded (ARM system), my PC (x86) and a laptop (x86). They all worked after doing that modification. Though I'm not on the latest develop!

This was a fresh x64 Ubuntu 18.04 with Avahi 0.7.
By the way, did you try mDNSResponder, Wesley?

Okay, strange I test as well on ubuntu 18.04 with avahi 0.7 (tried 0.8 as well, no difference). I did not test with mDNSResponder. Is this still something you want? Because my preference goes out for avahi in the end (because the target product already uses it).

Up to you. DNS-SD has been by far the most development time-wasting technology in the NMOS stack. So many gotchas. Finally, we've been using mDNSResponder with success (with our patches) on all platforms in multicast and unicast. So, although I'll try to make Avahi build work also, it's not top priority.

Hi, has there been any updates on this? We came across the same problem running Centos 7 and Avahi with test 15, 16 and 21 failing, and came to the same solution as above const auto earliest_timeout_ = std::chrono::seconds(0); in resolve. Any timeout above 0 seconds also results in the tests failing.

HI @MarcusMathiassen. In the background, we are looking at a refactor of the way we package and use the dns_sd.h API in nmos-cpp, which may help with this issue. However, there are so many corner cases in the different environments to work through, we won't switch to it until it's undergone enough testing. In the mean time, as above, I believe building nmos-cpp with mDNSResponder is one way to pass all the tests reliably.

I've recently spent some time looking at this again.
In my current environment I found that the change that @wsneijers suggested and @MarcusMathiassen confirmed also works for me, provided that I also modify config.json "registration_request_max" to be sufficiently less than the NMOS Testing Tool's DNS_SD_ADVERT_TIMEOUT.
Marcus identified that changing the timeout to any value greater than 0 also resulted in the tests failing. I confirmed this, if we mean whole seconds, but found that e.g. milliseconds(100) worked fine. This made me realise that the underlying issue is that when set to 1 second, the extra pass round the resolve loop was using up the entire time to the earliest timeout of the browse function.
The original change to make the earliest timeout non-zero in 6a26bdbb6d8ea636b4f81672663384b063bca2ff was required to resolve an issue reported by @rhastie outlined in https://github.com/sony/nmos-cpp/issues/99#issuecomment-566758202, which as far as I remember was required when using mDNSResponder in order to ensure at least one fully-resolved response was provided using DNSServiceResolve and DNSServiceGetAddrInfo.
There are a lot of combinations to test, since although we're using dns_sd.h as an attempt to abstract DNS-SD, it's behaviour clearly depends on many things:

Windows, Linux, Mac
Avahi, mDNSResponder (with patches)
Whether running on same or different host than e.g. testing tool, DNS server
Whether running on host with multiple interfaces and/or multiple IP addresses per interface

Without refactoring the use of dns_sd.h entirely, maybe the following would help:
0 < earliest timeout in mdns_details::getaddrinfo <= earliest timeout in mdns_details::resolve < earliest timeout in mdns_details::browse < maximum acceptable response time e.g. 1 second
We have to remember that the NMOS Testing Tool advertises 6 registries, which is not likely to be common in real deployments, and also that testing with everything running on a single host is not going to give response delays representative of a real deployment.
It would help if the GitHub Actions testing were updated to include some unicast DNS-SD configurations at least.
Then I propose testing with e.g. mdns_details::getaddrinfo earliest timeout = 200ms, mdns_details::resolve earliest timeout = 200ms and mdns_details::browse earliest timeout = 1 second.
@lo-simon Do you have some time to help work on this?

resolved by #250


To extract thumbnail using scrapping script

Is your feature request related to a problem? Please describe.
Currently, no cover art is present.
Describe the solution you'd like
To extract thumbnails from youtube using the scraping script.
Describe alternatives you've considered
An option is to use data API.
Additional context
Add any other context or screenshots about the feature request here.

Any updates @anupm12 ?

Okay , no worries @anupm12 👍

@stealthanthrax I tried but could not.
I'm no longer working on this issue.

@anupm12 , if you are facing any specific issues, maybe I can suggest an alternative.

If it's any help , try rendering images on the client side instead of the server side using this library https://www.npmjs.com/package/album-art


[5.4] Fix Query Builder breakage with PHP 7.3

remove undefined operator variable from compact method
this undefined variable breaks 5.4 on php 7.3
Fixes #26936

Please can this be tagged as 5.4.37 so that composer will pull this fixed version?

@ian-nisbet we don't tag new releases for 5.4 anymore. Please upgrade to the latest version of the framework.

I understand, but it was a bug fix that was pushed just a few weeks ago. Without a tag, it almost seems pointless fixing it in the repo.
I can't upgrade yet, as management won't allow upgrade until the summer, as the whole site will need acceptance testing again.

This does seem a rather reasonable request, have to say I agree with @ian-nisbet on this one. Not sure I understand the point of ever merging it if there would never be a new release.

@JacobBennett because if we make the exception for this time, people will ask for it all the time on w/e version and thus defeats the purpose of having a versioning policy in the first place. It also encourages people to stay on older unsupported versions and increases the risk of them staying on versions which miss out on critical bug and security fixes.
You can still require the fix added here by doing "laravel/framework": "5.4-dev" although I very much want to advice against that and just upgrade to a newer version.

Thanks for taking the time to explain it @driesvints!


tinKey: Can we get examples for PRF implementation?

Please guide me to the right issue or doc if I have missed it.

Hi @kushalhalder,
You may create an encrypted keyset (encryption is optional but highly recommended https://developers.google.com/tink/generate-plaintext-keyset) that implements the PrfSet primitive:
tinkey create-keyset \
  --key-template HMAC_SHA256_PRF \
  --out-format json \
  --out encrypted_prf_keyset.json \
  --master-key-uri ... \
  --credentials ...

Then one can read the keyset, obtain a keyset handle and a primitive. E.g., in Python reading an unencrypted keyset:
  # Initialise Tink
  try:
    prf.register()
  except tink.TinkError as e:
    logging.error('Error initialising Tink: %s', e)
    return 1

  # Read the keyset into a keyset_handle
  with open(FLAGS.keyset_path, 'rt') as keyset_file:
    try:
      text = keyset_file.read()
      keyset_handle = cleartext_keyset_handle.read(tink.JsonKeysetReader(text))
    except tink.TinkError as e:
      logging.exception('Error reading key: %s', e)
      return 1

  # Get the primitive
  try:
    prfset_primitive = keyset_handle.primitive(prf.PrfSet)
  except tink.TinkError as e:
    logging.error('Error creating primitive: %s', e)
    return 1

  with open(some_input_path, 'rb') as input_file:
    input_data = input_file.read()
    output_data = prf_primitive.primary().compute(
        input_data, output_length=16)

An example for Python and AEAD: https://github.com/google/tink/tree/master/examples/python/encrypted_keyset. See also: https://github.com/google/tink/blob/master/docs/PRIMITIVES.md#pseudo-random-function-families.
Hope this helps!


Beats

To Do:

Fix NAN loss function
Better understand the code in general, including Kaldi, to be able to determine the nature of the embeddings, and how to choose it from the filter bank.
Tweak config parameters, obtain best scores, test on multiple datasets, try to recreate the results from their paper

@raphaelschwinger Hi,  I made a commit for fixing NAN loss functio 2bf0ee8f9be3bf905c5b92691d61573c20406d02


Handle video call to a user with multiple sessions active

Hi,
Since to make a call we need to use the full JID, so how we can manage this if the targeted user has multiple sessions active (let say he's online on multiple devices).
Do we just try to initiate video call to every session he has and see which one he responds?
Thanks

Jingle Message Initiation solves this problem:
http://xmpp.org/extensions/xep-0353.html

@stpeter Thanks for the response. It looks like it will solve the problem yes.
I see that this extension is not yet supported by Stanza.io. And even in Prosody (XMPP server) that I use, I don't see 0353  supported as well.
Tough luck for me :) I might need to resort to initiate video calling to every available resource for that user until both Stanza and Prosody support this extension :)

XEP-0353 isn't something that your server needs to support, it just piggybacks on standard XMPP message semantics. :-)
I suspect that Jingle Message Initiation is supported somewhere in the Otalk stack so let's find out if @legastero or @fippo knows exactly where...

I think @xdumaine has an implementation

Ooh, yeah, I do, but unfortunately we aren't using the xmpp bits of otalk (except for jxt). I can definitely help with how I implemented it - it wasn't too difficult.

@stpeter @fippo Thanks for the info!
@xdumaine Do you modify stanza library for this feature, or is it more higher level modification? Thanks

@xdumaine What was the implementation? May I have that?

@wmfairuz @itsazzad The solution is JMI (xep-0353) as noted above. When initiating a call, instead of sending a session-intiate, send a jmi propose, and respond from the accepting client with a JMI proceed. You just need a client implementation that follows the spec. Unfortunately we never built it into otalk directly, though that could be useful.


[Feature request] - Elasticsearch and Kibana via kubernetes operator

Hey,
I just check efk template and I would like to ask I you have plan to implement Elasticsearch and Kibana via kubernetes operator. Currently there is a good helm charts https://github.com/upmc-enterprises/elasticsearch-operator that allow to deploy:

ElasticSearch cluster
Kibana
Cerebro

I have tested in Minikube and it works fine.
I can implement those changes and create PR if you are not working on it?

As I understand, there is no plan to support addons that are not a core components inside kubespray.


Cell value extraction along a tilted line

Right now it is possible to extract cell IDs along an arbitrary line. However, the underlying Cartesian DCCRG grid will actually yield a zigzag line. Given that the numerical value within a spatial cell is uniform, this is ok; otherwise we may need some interpolations or smoothing.
I have been thinking about this mostly because of spatial FFT. If we want to choose a line and perform FFT along the line, we need to be careful about the unit of k: should we divided by dx, or a modified dx' as a function of theta where theta is the angle between x and the line?
Look at the question, e.g. 2D FFT for rotated and shifted image

As can be seen here, cell extraction along a tilted line seems to work fine. It also avoids boundary issues where applying a matrix rotation may end up with unavailable values if the rotation angle is large.
I will close this for now, as the Fourier transformation unit is irrelevant.

My 1st idea of dx' = dx / |cos(theta)| is totaly wrong: if theta = pi/2, dx goes to infinity!
By performing an spatial FFT along a resampled extracted line, dx would be better calculated with the actual data points' coordinates
norm(coords[:,end] .- coords[:,1]) /(length(coords) - 1)


Scaling fails when using the unicode-math package the prime (') appears too high.

Description
Scaling fails when using the unicode-math package the prime (') appears too high.
Add info or delete as appropriate:

Relevant for XeTeX
Issue tracker has been searched for similar issues?
Links to <tex.stackexchange.com> discussion if appropriate

Minimal example demonstrating the issue
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}% filename only please!
\begin{document}
$y'$\Large$y'$
\end{document}

Further details

Possibly a duplicate of https://github.com/wspr/unicode-math/issues/275


ContextHub is not defined

Hi Team,
We are getting a console error "ContextHub is not defined" on search page when coming back from the asset details page. We are not sure why it comes up randomly. Attached the screenshot of error for the reference.

Any input to resolve this would be very helpful.
Thanks.

Not sure - 1.9 hasnt changed in years. Maybe something has changed in AEM that is breaking this?
Can you update to ASC v2?

Please reopen if you are still having the issue.


added remember me checkbox at login

Please use extjs references instead of global ids.

Hi Anton,
Can you approve this pull request?
Thanks
Erez

I can, but can you please just do one more thing. Rename references from txtXxx to xxxField.

Merged, thanks.

I have done some minor refactoring. Can you please stop shortening the words for no reason. That's for future pull request. As for this one, I have tried the feature and the problem is that we still show login dialog. I think we shouldn't. Can you please fix it.

Yes I can, but it will have to wait till Sunday morning

That's fine. It can wait till Sunday. Thanks


Added run button (no debug // approx 3 times faster)

Noticed when doing some of the solutions for PCTC R2 that sometimes with the longer questions the debug mode with injected breakpoints was struggling a little so added an (initially hidden) RUN button.
Better like this (hidden initially?). I had some feedback from my brother's son that he was a bit confused initially when he first used it by the debug button because he was looking for a run button. At the other end of the spectrum we have those who just want to step through all the code line by line and don't really understand breakpoints yet so perhaps the best combo might be a
[STEP] [RUN] [RUN NO-DEBUG]
?

SplitButton working well; I think this is ready to pull in to main now if you are happy with it. Took out the option to show it then; just always have it (as drop down option) but with DEBUG as default. Refactored the Challenge.tsx onDebug whilst I was at it to reduce a bit of duplicate code. If possible could you add a "run without debugging" shortcut key to the pyeditor? It seemed easy enough but then I'd have gone with ctrl+F5 but it has winctrl + ctrlcmd (mac??) so can we make it work with both or better just to go with F6? Thanks.


Fix user can edit tag name to existing tag name in X:Y format

Details

Currently, if we edit a tag name in X:Y format, we can edit it to the existing tag name. This PR fix it.
Fixed Issues

$ https://github.com/Expensify/App/issues/45067
PROPOSAL: https://github.com/Expensify/App/issues/45067#issuecomment-2217636309
Tests

Same as QA Steps

[x] Verify that no errors appear in the JS console

Offline tests

Same as QA Steps
QA Steps

Open workspace tag page
Add 2 new tags in X:Y format
Open the 2nd tag and try to edit the name to the 1st tag name
Verify an error that the tag already exists is shown

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/user-attachments/assets/f7384e2b-3200-4327-be56-bd5d8b91ecd1

Android: mWeb Chrome

https://github.com/user-attachments/assets/c38a3362-a24a-4949-9ade-e695568b30c0

iOS: Native

https://github.com/user-attachments/assets/38fab47f-66b4-4cb4-887a-9e0a9ef3ab5b

iOS: mWeb Safari

https://github.com/user-attachments/assets/854c47f8-8d0d-4e5a-88e5-e02720c8f2e0

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/4b0fb3d9-e2c4-4157-a4ed-dd41b5623608

MacOS: Desktop

https://github.com/user-attachments/assets/85d3003c-3a88-4f4e-8c60-180a3bde9875

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@bernhardoj this probably doesn't need to CP'd, right? Since this PR fixes a case in a PR that fixed a bug in staging & prod...

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/Beamanator in version: 9.0.20-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Beamanator yeah, I don't think this needs a CP since https://github.com/Expensify/App/pull/46556 probably is not on staging yet, and also this isn't a regression but fixing another existing bug in prod.

FYI I believe this was deployed to prod yesterday, from this checklist - #47356


Code by type

Thank you for providing this awesome service.
Do you think it would be possible to differ the size for the following categories:

functionality (the actual code providing the functionality)
test (code containting tests)
doc (code/files containting documentation and maybge also example code).

Thank you for your issue! However this feature is not currently possible with Tokei. To understand that you would need a language specific parser that understands what parts of code are documentation, tests, etc. Which is not something I plan to add to tokei.


Nidoran/eng 1969 tooltip

Please refer to the Pull Request description from here

@onlyahost @kafkasamsa can someone please review my PR. It's been sitting in here forever. Thanks in advance...


feat(dns) import and add DNS records for updates.jenkins.io

Prerequisite for the Update Center brownout 1 (see https://github.com/jenkins-infra/helpdesk/issues/2649)
It adds a new A DNS record aws.updates so it will be easy to defined a CNAME pointing to it (and changing the CNAME when needed for brownouts).
It also imports and updates a few existing records.
Notes:

Cleanup a non-idempotent change in vnets
Import records which are currently defined in jenkins-infra/azure. Need a PR to remove them. Rationale is that using CNAME here ensure operation safety (that is the purpose of the whole repository) of top-level items.

Plan: 3 to import, 1 to add, 3 to change, 0 to destroy.


Input file overwritten without warning if the file extension is not (\.ome)?\.tiff?

Some TIFF-based formats such as SVS commonly use an extension other than .tiff. With current latest version via pip install generate-tiff-offsets, download https://openslide.cs.cmu.edu/download/openslide-testdata/Aperio/CMU-1.svs and place in a test directory:
$ ls -og
total 173392
-rwxrwxrwx 1 177552579 Nov  6 15:51 CMU-1.svs
$ generate_tiff_offsets --input_file CMU-1.svs
$ ls -og CMU-1.svs
-rwxrwxrwx 1 66 Nov  6 15:54 CMU-1.svs
$ cat CMU-1.svs
[157121040, 157593686, 175414110, 177087892, 177463730, 177551836]

The output looks correct, but I would have expected it to be placed in a separate CMU-1.svs.json file instead of overwriting the input file.

Interesting.  @melissalinkert Would you be able/willing to make a PR?


add tweet muting

add context menu option for tweets to mute it so that it and any tweets referencing it do not appear in your timelines

Too complicated for a 3rd party to implement. Complain to twitter.


[Feature discussion]: add a that_is_good_data branch to HF datasets with reports

Amazing project!
For datasets that are hosted on Hugging Face, it would be amazing to maintain versions without the reported examples as an alternate that_is_good_data branch - that would go a long way to collaboratively improving evals 🤗

or just use the native Pull requests feature on HF repos, no?

The issue I see with that is that a large category of users will be more interested in having directly comparable results than having an evaluation with fewer mistakes - so I'd strongly recommend to leave the main branch untouched until the owners are ready for a new release
The way I'd see that work would be:

people update the branch when they notice an error
repo owners decided to release v1.1 (etc.) when there are enough fixes to justify an update
people using the eval dataset report the version number

Thanks for these suggestions! We'll come out with a longer term roadmap soon :)


Windows: Dockerfile 2GB clarification Hyper-V

Signed-off-by: John Howard<EMAIL_ADDRESS>Adds explicit clarification of using -m 2GB for Hyper-V containers to ensure the utility VM has enough memory to complete the operation successfully.  @johnstep

This is one for 1.13 so that the documentation is accurate.


Update HTTPS V1 Shim to work with new coreHTTP changes

Description

Because coreHTTP requires a response to return successfully, the shim is updated to pass the smallest valid HTTP response so that HTTPClient_Send can return a successful status provided there are no errors from sending the request.
Checklist:

[x] I have tested my changes. No regression in existing tests.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/bot run checks


Renamed hyphenation to Hyphenation

Renamed hyphenation to Hyphenation to fix build and run on case sensitive file systems

Thanks!


Execution failed for task ':path_provider_android:compileReleaseJavaWithJavac'.

Steps to reproduce

Changed pubspec.yaml from this:

name: boatconnect_app
description: "A new Flutter project."
publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ^3.5.3

dependencies:
  flutter:
    sdk: flutter

  # Dipendenze per le icone
  font_awesome_flutter: ^10.0.0

  # Dipendenze per la mappa
  latlong2: ^0.9.1

  #flutter_polyline_points
  flutter_polyline_points: ^2.1.0

  # pacchetti http per fare richieste HTTP (per la Directions API)
  http: ^1.2.2
  dio: ^5.7.0

  # Dipendenze per il salvataggio dei dati in modo sicuro
  flutter_secure_storage: ^8.0.0

  # Dipendenze per le icone in stile iOS
  cupertino_icons: ^1.0.8

  # Dipendenze per la geolocalizzazione
  mapbox_gl: ^0.15.0

  # Dipendenze per la gestione dello stato
  provider: ^6.0.5

  # Dipendenze per la gestione delle preferenze
  flutter_typeahead: ^4.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter

  # Dipendenze per le icone dell'app
  flutter_launcher_icons: ^0.9.0

flutter_icons:
  android: true
  ios: true
  image_path: "assets/images/BoatLogo.png"

  flutter_lints: ^5.0.0

flutter:
  uses-material-design: true

  assets:
    - assets/icons/boat_location.png
    - assets/images/eventi.png
    - assets/images/blog.png
    - assets/data/cities.json

to this:
name: boatconnect_app
description: "A new Flutter project."
publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ^3.5.3

dependencies:
  flutter:
    sdk: flutter

  # Dipendenze per le icone
  font_awesome_flutter: ^10.0.0

  # Dipendenze per la mappa
  latlong2: ^0.9.1

  #flutter_polyline_points
  flutter_polyline_points: ^2.1.0

  # pacchetti http per fare richieste HTTP (per la Directions API)
  http: ^1.2.2
  dio: ^5.7.0

  # Dipendenze per il salvataggio dei dati in modo sicuro
  flutter_secure_storage: ^9.2.2

  # Dipendenze per le icone in stile iOS
  cupertino_icons: ^1.0.8

  # Dipendenze per la geolocalizzazione
  mapbox_gl: ^0.15.0

  # Dipendenze per la gestione dello stato
  provider: ^6.0.5

  # Dipendenze per la gestione delle preferenze
  flutter_typeahead: ^4.0.0
  shared_preferences: ^2.3.3

dev_dependencies:
  flutter_test:
    sdk: flutter

  # Dipendenze per le icone dell'app
  flutter_launcher_icons: ^0.11.0

flutter_icons:
  android: true
  ios: true
  image_path: "assets/images/BoatLogo.png"

  flutter_lints: ^5.0.0

flutter:
  uses-material-design: true

  assets:
    - assets/icons/boat_location.png
    - assets/images/eventi.png
    - assets/images/blog.png
    - assets/data/cities.json

CONFIG FILES OF GRADLE
-- android\settings.gradle:
    pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "8.1.0" apply false
    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
}

include ":app"

-- android\gradle.properties:
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true

flutter.minSdkVersion=19

-- android\build.gradle:
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.buildDir = "../build"
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
 subprojects {
        afterEvaluate { project ->
            if (project.hasProperty('android')) {
                project.android {
                    if (namespace == null) {
                        namespace project.group
                    }
                }
            }
        }
    }
subprojects {
    project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

-- android\gradle\wrapper\gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip

-- android\app\build.gradle:
plugins {
    id "com.android.application"
    id "kotlin-android"
    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
    id "dev.flutter.flutter-gradle-plugin"
}

android {
    namespace = "com.MajorBit.boatconnect_app"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = flutter.ndkVersion

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId = "com.MajorBit.boatconnect_app"
        // You can update the following values to match your application needs.
        // For more information, see: https://flutter.dev/to/review-gradle-config.
        minSdk = flutter.minSdkVersion.toInteger()
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig = signingConfigs.debug
        }
    }
}

flutter {
    source = "../.."
}

Actual results
I'VE TRIED THE SOLUTION ON THIS BUT FOR ME IS NOT WORKING!
https://github.com/flutter/flutter/issues/157979
Logs

Logs

warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':path_provider_android:compileReleaseJavaWithJavac'.
> Could not resolve all files for configuration ':path_provider_android:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for JdkImageTransform: C:\Users\antol\AppData\Local\Android\sdk\platforms\android-34\core-for-system-modules.jar.
         > Error while executing process C:\Users\antol\AppData\Local\Programs\Android Studio 2\jbr\bin\jlink.exe with arguments {--module-path C:\Users\antol\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\temp\jmod --add-modules java.base --output C:\Users\antol\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\jdkImage --disable-plugin system-modules}

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

Flutter Doctor output

Doctor output

[√] Flutter (Channel stable, 3.24.4, on Microsoft Windows [Versione 10.0.26100.2454], locale it-IT)
    • Flutter version 3.24.4 on channel stable at C:\dev\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 603104015d (5 weeks ago), 2024-10-24 08:01:25 -0700
    • Engine revision db49896cf2
    • Dart version 3.5.4
    • DevTools version 2.37.3

[√] Windows Version (Installed version of Windows is version 10 or higher)

[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at C:\Users\antol\AppData\Local\Android\sdk
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/windows-android-setup for more details.

[X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[!] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.12.0)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.12.35506.116
    X Visual Studio is missing necessary components. Please re-run the Visual Studio installer for the "Desktop
      development with C++" workload, and include these components:
        MSVC v142 - VS 2019 C++ x64/x86 build tools
         - If there are multiple build tool versions available, install the latest
        C++ CMake tools for Windows
        Windows 10 SDK

[√] Android Studio (version 2024.2)
    • Android Studio at C:\Users\antol\AppData\Local\Programs\Android Studio 2
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-12282718-b509.11)

[√] IntelliJ IDEA Community Edition (version 2024.2)
    • IntelliJ at C:\Users\antol\AppData\Local\Programs\IntelliJ IDEA Community Edition
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[√] VS Code, 64-bit edition (version 1.95.3)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.100.0

[√] Connected device (2 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Versione 10.0.26100.2454]
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 131.0.2903.70

[√] Network resources
    • All expected network resources are available.

! Doctor found issues in 3 categories.

Sorry but i've added those lines in the configuration of gradle,  i've run flutter clean and then pub get, but the error still persist

Kindly share the current state of the files you modified.
Thank you


ImageCache.get().clear() is not working on CustomCachedImage

CustomCachedImage always show first user image
Image url like {DOMAIN_NAME}/api/profile/images/cropped
<CustomCachedImage
     component={Thumbnail}
     large
     source={{
     uri: profileImage(),
     headers: {
        Authorization: oauth.token_type + ' ' + oauth.access_token
     },
}}/>

ImageCache.get().clear().done(() => {
    // some code
});

@Nitroman605 @mayur-novus thanks for your advice, I used  /api/profile/images/cropped?uuid={UUID} to fix the issue.
Thanks again.


FIX: qrcode scanner on legends, by updating the library

updating qr reader lib to latest version for vue1

Codecov Report

Merging #1714 (1a77185) into main (dd1c17f) will decrease coverage by 0.22%.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main    #1714      +/-   ##
==========================================
- Coverage   49.06%   48.85%   -0.22%
==========================================
  Files          47       47
  Lines        7091     7091
==========================================
- Hits         3479     3464      -15
- Misses       3612     3627      +15

see 2 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Fix a conflict between measurement tools and the export (print) panel

This PR fixes a conflict between the measurement tools and the export (print) panel where the measuring tools remain active when opening the print tool and thus led to a conflict when selecting the print frame and vice versa
@terrestris/devs please review

Subjected to extensive refactoring after review took place. Requesting for a new review of these changes @terrestris/devs


[DBRE-3747] set long query auto cancel (180s)

Exemple:

And below it's ok

And of course a check on pg_stat_activity table confirm the query is actually killed 👍

we have a nice log for the example of a cloudsql PG when it happen
2024-01-05 14:56:04.284 UTC [2604083]: [3-1] db=redash,user=redash ERROR:  canceling statement due to user request

Looks nice 👍 👍
Maybe test it on a mysql too (since it might be slightly different internally to kill the query)


Development

Fixing missing package in setup.py. What do you think about using:
packages=find_packages(),
You could even use:
package_dir={'':'Source'},
packages=find_packages('Source'),
if you want to move setup.py back to the root dir...
Not sure where the GPServer commit came from - too tired to examine tonight, will figure out tomorrow...

Looks good, merged.


Migration from old-style settings to the new ones?

I've updated plugin today and haven't noticed new EnvFile tab, so thought it's broken (I'm on PyCharm EAP build, so I've assumed things could break quite easily). Thanks to a picture in README.md, I've figured it all out, though.
However, "EnvFile" tab was empty, and my .env file was only mentioned as ENV_FILE_PATH=/full/path/to/.env and ENV_FILE_IS_ENABLED=true variables in the vanilla "Environment variables" section (which don't seem to have any effect with the new version).
Maybe it would be a good idea to automatically migrate those to a new-style configuration?

I thought about that but such functionality would've added more complexity and I'm not sure it would've worked flawlessly... So I decided to to implement it and add a warning to the README. I understand that it causes some inconvenience but since it's a one-time migration I hope it's not too troublesome.

Ah, yes, if it's not straightforward then it makes sense. I've just thought previous settings had clean mapping to the new ones.
I've missed readme text when upgrading plugin, only noticed it when the process misbehaved and I found out there are no settings anymore where they used to be, and went to GitHub to ask about this.


[Port dspace-7_x] MediaFilter over large repository result in downtime

Manual port of #9273 by @abollini to dspace-7_x.
While doing some cleanup of our 8.0 board, I've realized this PR was never ported back to 7.x.  This is a cherry-picked port of the original commits to main.

Merging as this still passes its detailed ITs.


my -> app

上文说的是 appHighlight 这个自定义指令, 但是在下边的描述中说的是 my 前缀, 所以这边是不是应该是 my 前缀才对呢?
注意：

新版本的文档位于aio分支下，master分支下是老版本的文档。
原则上不再接受对老版本的PR。

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/ to sign.
Once you've signed (or fixed any issues), please reply here (e.g. I signed it!) and we'll verify it.
What to do if you already signed the CLA
Individual signers

It's possible we don't have your GitHub username or you're using a different email address on your commit. Check your existing CLA data and verify that your email is set on your git commits.

Corporate signers

Your company has a Point of Contact who decides which employees are authorized to participate. Ask your POC to be added to the group of authorized contributors. If you don't know who your Point of Contact is, direct the Google project maintainer to go/cla#troubleshoot (Public version).
The email used to register you as an authorized contributor must be the email used for the Git commit. Check your existing CLA data and verify that your email is set on your git commits.
The email used to register you as an authorized contributor must also be attached to your GitHub account.

ℹ Googlers: Go here for more info.
I signed it !