Support deprecating properties

OpenAPI 3.0 added support to deprecate properties of Schema objects: https://stackoverflow.com/a/49872992/11213244
Kompendium lacks this. Perhaps fields annotated annotated with @Deprecated can be marked as deprecated in the OpenAPI spec.

you can use enrichment
https://bkbn.gitbook.io/kompendium/index-2/enrichment

How would this work with generic types? Say I want to deprecate a field for my type but my response is a Set of that type. My Enrichment must be for Set however, then I can not deprecate fields of T

hmm can you give it a shot and let me know if you get an error? that would be useful.
if you can get it to error out, lets reopen this issue for that specifically.

I am not sure how I would set a field for a type in a set using Kompendiums TypeEnrichment. Say you have a responseType Set and you want to enrich Animal and set the field color to deprecated.

@brizzbuzz Pinging in case you missed my reply


Remove deprecated check in Major version upgrade util composite action

Description
Version upgrade test framework was not running maven tests with verify scripts after upgrade because the check for change-migration-mode step outcome is not applicable since this step is no longer present in the major version upgrade util composite action.
This commit will remove that check from the major version upgrade util composite action.
Signed-off-by: Rohit Bhagat<EMAIL_ADDRESS>Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is under the terms of the Apache 2.0 and PostgreSQL licenses, and grant any person obtaining a copy of the contribution permission to relicense all or a portion of my contribution to the PostgreSQL License solely to contribute all or a portion of my contribution to the PostgreSQL open source project.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Three checks JDBC tests, major version upgrade tests for empty database and minor version upgrade tests for empty database are failing even without my changes


Discussion of Limits, Features and Properties and Exposing Them

[x] make a field for every single vulkan property/limit/feature in the order it appears in the 1.0,1.1,1.2,1.3 structs and then the extensions in the order they appear on vulkan.gpuinfo.org
[ ] we should document all decisions to not expose in the comments near the commented out declaration actual source code of the header, due to:
duplication (same feature different ext or merged into core)
pointlessness
assumption/requirement of availability for the engine
obscurity (like YUV images and HW video extensions)
[ ] remove isSwapchainSupported and expose it as a feature (KHR_swapchain extension)
[ ] move all the GLSL define stuff to ILogicalDevice, since we care about ENABLED features we can use, not potentially available ones

I'll fix the comments and add the extension names, I'll correctly query
these using their extensions.
On Thu, 9 Jun 2022, 4:21 pm Mateusz Kielan, @.***>
wrote:

@.**** commented on this pull request.
In src/nbl/video/CVulkanPhysicalDevice.h
https://github.com/Devsh-Graphics-Programming/Nabla/pull/357#discussion_r893408106
:

       /* Vulkan Core 1.2 */

       /* Vulkan 1.2 Core  */
       m_properties.driverID = static_cast<E_DRIVER_ID>(vulkan12Properties.driverID);
       memcpy(m_properties.driverName, vulkan12Properties.driverName, VK_MAX_DRIVER_NAME_SIZE);
       memcpy(m_properties.driverInfo, vulkan12Properties.driverInfo, VK_MAX_DRIVER_INFO_SIZE);
       m_properties.conformanceVersion = vulkan12Properties.conformanceVersion;

       /* Vulkan Core 1.3 */

       /* Vulkan 1.3 Core  */

Also when we go further to get extensions strings based on "enabled
features", we should check for API version and if it wasn't high enough we
should add the corresponding extension providing those features. for
example when user wants to enable descriptor indexing stuff and
descriptorIndexing is either in core 1.2 or VK_EXT_descriptor_indexing so
if API version is 1.1 we add VK_EXT_descriptor_indexing to our extensions
string we give to device creation params
why not always just use the extension?
Is it possible to get a core 1.2 API implementation which does not
advertise VK_EXT_descriptor_indexing or will not understand it properly?
—
Reply to this email directly, view it on GitHub
https://github.com/Devsh-Graphics-Programming/Nabla/pull/357#discussion_r893408106,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACTZR4LEQXCGWZHQYDNP543VOHLELANCNFSM5XDWMO2Q
.
You are receiving this because you were mentioned.Message ID:
@.***>

Summary
Treat as-if VK_EXT_texel_buffer_alignment is always enabled
See https://github.com/Devsh-Graphics-Programming/Nabla/pull/357/files#r895536075
There should be no distinction between enabled Extensions and enabled Features
Over time, extensions migrate to next Vulkan core versions (1.4, 1.5, etc.) and become enabled as a feature (or just perma-enabled).
We want to avoid having to change our API and move extensions to features.
Basically lets treat Nabla as Vulkan version 1.9999999 and have our own "core" feature set which we expose.
This means having a bool for every single non 1.1 core (our minimum Vulkan required version) extension, so far we only have the booleans for extensions that advertise additional sub-features that can be supported and enabled/disables.
We need the rest.
SDeviceFeatures should have a operator<
Basically what I'd imagine the usage of the API to be like.
RARE: Creating a physical device with all advertised features/extensions:
auto features = physicalDevice->getFeatures();

ILogicalDevice::SCreationParams params = {};
params.queueParamsCount = ; // set queue stuff
params.queueParams = ; // set queue stuff
params.enabledFeatures = features;
auto device = physicalDevice->createLogicalDevice(params);

FREQUEST: Choosing a physical device with the features
IPhysicalDevice::SRequiredProperties props = {}; // default initializes to apiVersion=1.1, deviceType = ET_UNKNOWN, pipelineCacheUUID = '\0', device UUID=`\0`, driverUUID=`\0`, deviceLUID=`\0`, deviceNodeMask= ~0u, driverID=UNKNOWN
// example of particular config
props.apiVersion = 1.2;
props.deviceTypeMask = ~IPhysicalDevice::ET_CPU; // would be good to turn the enum into a mask
props.driverIDMask = ~(EDI_AMD_PROPRIETARY|EDI_INTEL_PROPRIETARY_WINDOWS); // would be goot to turn the enum into a mask
props.conformanceVersion = 1.2;

SDeviceFeatures requiredFeatures = {};
requiredFeatures.rayQuery = true;

SDeviceLimits minimumLimits = {}; // would default initialize to worst possible values (small values for maximum sizes, large values for alignments, etc.)

// TODO: later add some stuff for requiring queue families, formats and minimum memory heap sizes

auto physicalDeviceCandidates = api->getCompatiblePhysicalDevices(props,requiredFeatures,minimumLimits,numSwapchains,supportedSwapchains,/*optional: would enforce tighter checks to actually accept compatibility, like formats, present modes and surface caps*/swapchainSupportDecider);
if (physicalDeviceCandidates.empty())
{
   logError();
   exit();
}

// TODO: later iterate through candidate devices (fullfilling all the required criteria) to find the "best" one
// std::sort(physicalDeviceCandidates.begin(),physicalDeviceCandidates.end(),SDefaultPhysicalDeviceOrder());
auto physicalDevice = physicalDeviceCandidates.begin();
assert(requiredFeatures < physicalDevice->getFeatures());
assert(minimumLimits < physicalDevice->getLimits());

auto device =
// this would be wrong, because during device creation we would enable additional features either due to:
// - dependencies (like buffer address for raytracing)
// - backend force-enabling them (like in OpenGL, where extensions are just enabled, you have no choice)
// assert(requiredFeatures != device->getEnabledFeatures());
assert(requiredFeatures < device->getEnabledFeatures());

SDeviceFeatures and SDeviceLimits should have a operator<
Basically to let us establish if features or limits are a superset of the requested.
If you need a != operator then define it as
inline bool operator!=(const & other) const
{
    return *this<other || other<*this;
}

We should probably change the SFormat....Usage structs to contain the [E_FORMAT::COUNT] array inside themselves
Would probably need a Capabilities nested struct def for the array type, and also add default initializers to the structs.
This would make it easier to implement the requiredFormats for getCompatiblePhysicalDevices()

Can you explain this more? I don't get what you mean exactly. It seems that we don't expose format support like vulkan does.
Also the other stuff is more related to this PR https://github.com/Devsh-Graphics-Programming/Nabla/pull/356 I put a link to this there

We should probably change the SFormat....Usage structs to contain the [E_FORMAT::COUNT] array inside themselves
Would probably need a Capabilities nested struct def for the array type, and also add default initializers to the structs.
This would make it easier to implement the requiredFormats for getCompatiblePhysicalDevices()

Can you explain this more? I don't get what you mean exactly. It seems that we don't expose format support like vulkan does.
Also the other stuff is more related to this PR #356 I put a link to this there

Our current API, returns the format usages "one by one"
        virtual const SFormatBufferUsage& getBufferFormatUsages(const asset::E_FORMAT format) = 0;

        virtual const SFormatImageUsage& getImageFormatUsagesLinear(const asset::E_FORMAT format) = 0;
        virtual const SFormatImageUsage& getImageFormatUsagesOptimal(const asset::E_FORMAT format) = 0;

this makes it hard to extend it in the future to "reuse" the same struct (sanely, without fancy containers, iterators, templates, heap memory allocations) to express the "required" formats and their usages to the device selector.
However if we had
struct SFormatBufferUsages
{
    struct SUsage
    {
        // what SFormatBufferUsage is right now, plus a default constructor that sets all usage bits to false
    };

    // whether `this` is a subset of `other`
    inline bool operator<(const SFormatBufferUsages& other) const;

    SUsage m_formatUsages[asset::EF_COUNT] = {};
};
        virtual const SFormatBufferUsages& getBufferFormatUsages() = 0;

struct SFormatImageUsages
{
    struct SUsage
    {
        // what SFormatImageUsage is right now, plus a default constructor that sets all usage bits to false
    };

    // whether `this` is a subset of `other`
    inline bool operator<(const SFormatImageUsages& other) const;

    SUsage m_formatUsages[asset::EF_COUNT] = {};
};
        virtual const SFormatImageUsages& getImageFormatUsagesLinear() = 0;
        virtual const SFormatImageUsages& getImageFormatUsagesOptimal() = 0;

It would get a lot easier to "request" a format, we'd simply start with a default initialized struct (no usages for any format), and then just fill out the formats and their usages we require.
Then verifying that a physical device can be a candidate would be as easy as
candidate = candidate && requiredBufferFormatUsages<physicalDevice->getBufferFormatUsages() && requiredImageFormatUsagesLinear<physicalDevice->getImageFormatUsagesLinear() && requiredImageFormatUsagesOptimal<physicalDevice->getImageFormatUsagesOptimal();

P.S. You can nuke IVideoCapabilityReporter and IVideoDriver now, we've covered all their features.

We should probably change the SFormat....Usage structs to contain the [E_FORMAT::COUNT] array inside themselves
Would probably need a Capabilities nested struct def for the array type, and also add default initializers to the structs.
This would make it easier to implement the requiredFormats for getCompatiblePhysicalDevices()

Can you explain this more? I don't get what you mean exactly. It seems that we don't expose format support like vulkan does.
Also the other stuff is more related to this PR #356 I put a link to this there

Our current API, returns the format usages "one by one"
        virtual const SFormatBufferUsage& getBufferFormatUsages(const asset::E_FORMAT format) = 0;

        virtual const SFormatImageUsage& getImageFormatUsagesLinear(const asset::E_FORMAT format) = 0;
        virtual const SFormatImageUsage& getImageFormatUsagesOptimal(const asset::E_FORMAT format) = 0;

this makes it hard to extend it in the future to "reuse" the same struct (sanely, without fancy containers, iterators, templates, heap memory allocations) to express the "required" formats and their usages to the device selector.
However if we had
struct SFormatBufferUsages
{
    struct SUsage
    {
        // what SFormatBufferUsage is right now, plus a default constructor that sets all usage bits to false
    };

    // whether `this` is a subset of `other`
    inline bool operator<(const SFormatBufferUsages& other) const;

    SUsage m_formatUsages[asset::EF_COUNT] = {};
};
        virtual const SFormatBufferUsages& getBufferFormatUsages() = 0;

struct SFormatImageUsages
{
    struct SUsage
    {
        // what SFormatImageUsage is right now, plus a default constructor that sets all usage bits to false
    };

    // whether `this` is a subset of `other`
    inline bool operator<(const SFormatImageUsages& other) const;

    SUsage m_formatUsages[asset::EF_COUNT] = {};
};
        virtual const SFormatImageUsages& getImageFormatUsagesLinear() = 0;
        virtual const SFormatImageUsages& getImageFormatUsagesOptimal() = 0;

It would get a lot easier to "request" a format, we'd simply start with a default initialized struct (no usages for any format), and then just fill out the formats and their usages we require.
Then verifying that a physical device can be a candidate would be as easy as
candidate = candidate && requiredBufferFormatUsages<physicalDevice->getBufferFormatUsages() && requiredImageFormatUsagesLinear<physicalDevice->getImageFormatUsagesLinear() && requiredImageFormatUsagesOptimal<physicalDevice->getImageFormatUsagesOptimal();

P.S. You can nuke IVideoCapabilityReporter and IVideoDriver now, we've covered all their features.

Ok I'll do this in the FeatureAPI PR


rollup problem with rxjs

Hi,
i use<EMAIL_ADDRESS>in mac Sierra.
I am following the angular official guide for the compilation aot.
I have a problem with a rollup. This is my configuration file
import rollup      from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs    from 'rollup-plugin-commonjs';
import uglify      from 'rollup-plugin-uglify'
export default {
entry: 'main.js',
dest: 'dist/build.js',
sourceMap: true,
sourceMapFile: 'aot/dist/build.js.map',
format: 'iife',
plugins: [
nodeResolve({jsnext: true, module: true}),
commonjs({
include: 'node_modules/**'
}),
uglify()
]
}
I always get the same error:
🚨   'Subject' is not exported by ../node_modules/rxjs/Subject.js
I also tried:
include: 'node_modules/rxjs/**',
namedExports: {
'node_modules/rxjs/Subject.js': [ 'Subject' ]
}
but it does not work.
Help me, please!
(
angular-cli: 1.0.0-beta.26
node: 7.2.0
os: darwin x64
@angular/common: 2.4.4
@angular/compiler: 2.4.4
@angular/compiler-cli: 2.4.4
@angular/core: 2.4.4
@angular/forms: 2.4.4
@angular/http: 2.4.4
@angular/platform-browser: 2.4.4
@angular/platform-browser-dynamic: 2.4.4
@angular/platform-server: 2.4.4
@angular/router: 3.4.4
)

@feof the cli will handle AOT compilation for you. ng build --aot --prod for production builds

ok, but if you have ideas you would like to understand the problem

@feof since rollup isn't used by the cli this may be a better question for stackoverflow since it isn't an issue with the cli itself

Heya @feof, the guide you are reading is meant to be used with the Official Quickstart (https://github.com/angular/quickstart), and not with the CLI.
The way to build projects with the CLI is using ng build. The flags @deebloo mentioned should give you a pretty good prod build.


[MLLIB] SPARK-1473, SPARK-1303: New Feature Selection and Discretization Algorithms

Information Theoretic Feature Selection Framework
The present framework implements Feature Selection (FS) on Spark for its application on Big Data problems. This package contains a generic implementation of greedy Information Theoretic Feature Selection methods. The implementation is based on the common theoretic framework presented in [1]. Implementations of mRMR, InfoGain, JMI and other commonly used FS filters are provided. In addition, the framework can be extended with other criteria provided by the user as long as the process complies with the framework proposed in [1].
-- Improvements on FS:

Support for sparse data (in progress).
Pool optimization for high-dimensional
Improved performance: 150 seconds by selected feature for a 65M dataset with 631 attributes.

Minimum Description Lenght Discretizer
This package also contains an implementation of Fayyad's discretizer [2] based on Minimum Description Length Principle (MDLP) in order to treat non discrete datasets.
-- Improvements on discretizer:

Support for sparse data.
Multi-attribute processing. The whole process is carried out in a single step when the number of boundary points per attribute fits well in one partition (<= 100K boundary points per attribute).
Support for attributes with a huge number of boundary points (> 100K boundary points per attribute). Extremely rare situation.

This work has associated two submitted contributions to international journals which will be attached to this request as soon as they are accepted This software has been proved with two large real-world datasets such as:

A dataset selected for the GECCO-2014 in Vancouver, July 13th, 2014 competition, which comes from the Protein Structure Prediction field (http://cruncher.ncl.ac.uk/bdcomp/). The dataset has 32 million instances, 631 attributes, 2 classes, 98% of negative examples and occupies, when uncompressed, about 56GB of disk space.
Epsilon dataset: http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary.html#epsilon. 400K instances and 2K attributes.

Contributors

Sergio Ramírez-Gallego<EMAIL_ADDRESS>(main contributor and maintainer).
Héctor Mouriño-Talín<EMAIL_ADDRESS>David Martínez-Rego<EMAIL_ADDRESS>
References
[1] Brown, G., Pocock, A., Zhao, M. J., & Luján, M. (2012).
"Conditional likelihood maximisation: a unifying framework for information theoretic feature selection."
The Journal of Machine Learning Research, 13(1), 27-66.
[2] Fayyad, U., & Irani, K. (1993).
"Multi-interval discretization of continuous-valued attributes for classification learning."

Can one of the admins verify this patch?

@sramirez Thanks for contributing! To expedite the code review, please do consider splitting this PR into small PRs. We can start with the proposal for feature selection interfaces, and then algorithms. JIRAs like "Feature selection for high dimensional dataset" are used for general discussion. We should create concrete JIRAs for each part of this PR.
In the feature selection interface PR, please keep the public APIs minimal and list break changes if there are any. We should avoid any break changes if they are unnecessary. Please also check the Java API compatibility by creating unit tests in Java. It would be nice to have a design doc posted on the JIRA page, e.g., https://issues.apache.org/jira/browse/SPARK-3530.
For each algorithm PR, please list references and document its scalability with some benchmark results. If there are changes to the original algorithm, it would be nice to implement the original algorithm exactly in the first PR and then make changes in follow-up PRs.

@mengxr OK! I will divide this PR in two parts: one for discretization and the other for the feature selection framework. And I will create two concrete JIRAs for each part.
Regarding feature selection interface, maybe I should leave the ChiModel without any change. I propose two interfaces for each task: DiscretizerModel and SelectorModel. SelectorModel is a copy from ChiSqSelectorModel that I made as common interface for my FS algorithms.
The references are listed in this PR. We have made a redesign of this state-of-the-art algorithms following our own choices. So, the original algorithm are thought to be executed sequentially. If you want, I can give you some results, as I did for this first algorithm. However,  the complete results are not public as they have been submitted to a non-free access scientist journal (Machine Learning Journal).

Are the two follow-up PRs replacing this one? then can this be closed?
I also generally ask: is the algorithm something that can start life outside Spark? I think that's a better path in general. However adding generic interfaces to the ML framework seems like something that does belong in core Spark.

Yes, this PR can be closed. Here, we propose two distributed version for two sound algorithms in data reduction. I have included the two associated references. The generic interface is necessary if we want to homogeneize the selection and discretization module. The only thing I have done is to remove the selector model from ChiSq and to put it in a general interface for the subsequent selection methods. The same for the method compress used in this method. If not so, the code will be repeated across many methods.


window instantly opens and closes in a second (win 11 arm64 build newest release)

window instantly opens and closes in a second (win 11 arm64 build newest release)

Hi @OneAndOnlyBarrettt, ffuf is not GUI but Command Line,
Have you tried to run it in your cmd or PowerShell?

Closing this by now, please re-open if you have more information.


[Tizen] Add Tizen Studio CLI to docker images

Problem
Currently it's not possible to create proper Tizen application package (*.tpk) with Tizen docker image.
Change overview
This commit adds Tizen Studio CLI into the Tizen docker image. Also, it setups app's author certificate for signing the application. With that setup it will be possible to pack Tizen application into the tpk package as follows:
tizen package -t tpk --sign CHIP -- <TizenAppBuildDir>

Testing
Created Tizen application package with connectedhomeip/chip-build-tizen docker image.

@hrajendran-samsung Could you check whether changes proposed here are OK?

@hrajendran-samsung Could you check whether changes proposed here are OK?


JcloudsLocation is not releasing its customizers (BROOKLYN-427)

preRelease and postRelease of JcloudsLocationCustomizers are not being
called as expected during the release of a Jclouds machine location.
The problem is that the "setup" used in JcloudsLocation.obtainOnce includes a copy of the flags passed from MachineLifecycleEffectorTasks#stopAnyProvisionedMachines,
which includes the customizers. However, the "setup" used in the "release"
method of JcloudsLocation is taken from the JcloudsLocation itself, which
is the provisioning (i.e. parent) location, which doesn't have those
customizers in it.
It would actually make more sense to get the location customizers from
the machine location, as a given parent could have mutiple machines
with different customizers.
The changes here include an addition to the
JcloudsCustomizerInstantiationYamlDslTest#testCustomizers
to demonstrate the problem, and a fix that adds the config to
the machine location.

Addressed review comment "Can you instead add the config for JCLOUDS_LOCATION_CUSTOMIZERS..."

test failure unrelated?

let's try again

Thanks for updates, merging.


Adds psudocode for static models

Description
Initial draft of how frozen models could work. It modifies the base model to consider three scenarios:

A dynamic model (default): what we have now.
A frozen model: updated once and then use those values for any future update.
A pre-set model: pulling data from a dataset that contains the relevant variables for the whole time range of the simulations.

Obviously, appropriate data loading and validation steps will need to be put in place before creating the model. And there are likely options to optimise the code and avoid too many conditional checks at runtime. Let's focus on the features and workflow, for now.
Fixes # (issue)
Type of change

[ ] New feature (non-breaking change which adds functionality)
[ ] Optimization (back-end change that speeds up the code)
[ ] Bug fix (non-breaking change which fixes an issue)

Key checklist

[ ] Make sure you've run the pre-commit checks: $ pre-commit run -a
[ ] All tests pass: $ poetry run pytest

Further checks

[ ] Code is commented, particularly in hard-to-understand areas
[ ] Tests added that prove fix is effective or that feature works

This makes a lot sense to me - the flow of the logic for the "update once and then repeat" is very clean.
I wonder if the static_data could be use_static_data and the model class itself is then responsible for locating the update_vars in Data and checking all is well. That static data assembly could be outside of the BaseModel but it seems like a more natural home? One thing this should support is the data providing only a single time step, which then just gets re-used. Users could always just repeat the same values across all time steps, but it would be good to avoid that! It was behind my thinking on the original constant option in the Data configuration, which might be worth reviving - if a grid is loaded as a constant, use that as a constant, but it has to be explicitly flagged as constant.
There are no end of repeating patterns and sequences we might want to push in (La Niña, El Niño), but that seems like an evolution 😄

I wonder if the static_data could be use_static_data and the model class itself is then responsible for locating the update_vars in Data and checking all is well. That static data assembly could be outside of the BaseModel but it seems like a more natural home?

I'm not entirely sure what you mean here. Do you mean having a method called use_static_data that pulls the static data itself from somewhere else - outside of the model class - and put it in the relevant place in the Data object? Isn't that the intention of the _update_with_static_data method I sketched? Maybe I'm misunderstanding something.

One thing this should support is the data providing only a single time step, which then just gets re-used. Users could always just repeat the same values across all time steps, but it would be good to avoid that! It was behind my thinking on the original constant option in the Data configuration, which might be worth reviving - if a grid is loaded as a constant, use that as a constant, but it has to be explicitly flagged as constant.

I guess that the model can hold a single copy of that single step data, but then in the Data object it will need to update timestep after timestep to create the time series (when relevant), so other models can use it. I think that models that use that data should not need to worry about it being static or not, but just take the appropriate time from the Data object and go on with it, right?

I'm not entirely sure what you mean here.

Yeah - wasn't a model of clarity was it. So:

If users are providing frozen data (rather than looping the first update) then the most obvious current way to do that is for them to add those variables in the configuration. Those variable names normally wouldn't be included in the data configuration because they are calculated internally, but it is a simple existing route to setting up the model.
If the Data instance then contains the variables, we don't need to pass in an xr.Dataset to the frozen model. We can replace:static_data: Optional[xr.Dataset] = None,

withuse_static_data: bool = False,

and then the _build_static_data method is expecting to be able to find the right variables in self.Data.

I guess that the model can hold a single copy of that single step data, but then in the Data object it will need to update timestep after timestep to create the time series (when relevant), so other models can use it. I think that models that use that data should not need to worry about it being static or not, but just take the appropriate time from the Data object and go on with it, right?

Yup - agreed.

Next week, this one. If you have any update or comment on what was said above, please let me know.

I've been trying to progress on this before going on leave but I've hit a blocker - precisely because of the brand new variables system.
For the case of the frozen model - updates once and then repeat for future iterations - things are clear as the inputs are the same as a normal model. I have not implemented it but I do not foresee any problem there: it will make a local copy of the relevant data (the vars_updated) after that first iteration and just keep using that down the line.
Now, for the pre-set option things have gotten more complicated after implementing the variables system. As discussed above, that preset data will need to be passed as part of the data object, but that would mean that the model has different vars required for update when it is static or when it is not: in the first case, the pre-set data will need to be present, but in the normal case it will not, in general (or at least, not necessarily). As these variables are set before the model instances are initialised, when collecting the models, there is no way to modify them at runtime based on the model input settings (the static flag).
There are a couple of options that come to my mind, none of them satisfactory:

Create static model subclasses with the right variables, eg PlantStaticModel, but that defeats the purpose of having these simple flags to switch between model types.
Postpone the validation step to after the models have been initialised, so the flags can be used to define one or other set of variables depending on the model being preset or not, but that means risking initialising models that are incompatible, in addition not not allowing the variable system to define the model execution order (future work).
Pass the pre-set data directly to the model, without using the data object. It will be a question of updating the from_config methods of the different models to load that data if the appropriate flags and paths to the relevant file are provided in the config. This will create a local static_data: Data object that can be used to update the main data object each iteration. This might be the less problematic option if we use the same tooling of the data system to load and validate the preset data.

It will be good to have your feedback on this, so I can work on it as soon as I'm back from leave.

Yeah - that's a pain.
The last option feels cleaner.

Having said that, I haven't got my head around how we work with avoiding running code in static mode models.

If we insist that a static model can either run in frozen mode or in preset, but you have to preset all variables required by the model, then I can see a route for the static data object for preset variables. If we have a static_data attribute for BaseModel, then the super.__init__ and super.update methods could include an automatic  check if all the required variables for that method are present in static_data and then simply copy them across to data and set a flag that allows the subclass to shortcut the actual method code. Something like:

def __init__(self,  ...):

    super().__init__(data=data, static_data=static_data, core_components=core_components, **kwargs)

    if self.entirely_static_init:
        return

However that can't work if a user doesn't provide all the required variables, because the actual model code needs to run to fill in the missing variables for the method. At that point, if we are to avoid a whole ton of unpleasant if var not in self.static_data statements, we would have to run the actual model and then overwrite the calculations from static_data at the end of the method.

If we're accepting that computational expense - and I'm not sure we should - then another way we could do this might be to have a "static" flag in the data setup. That could then be added as an attribute to the variable in Data and the code to set data could then simply refuse to set "static" variables. We've gone to the expense of calculating it, but the model isn't allowed to set it. This doesn't raise an error, just logs that it is refusing to overwrite a static variable. That removes the need for code at the end of the method overwriting with the preset data.

This reminds me a little of https://github.com/ImperialCollegeLondon/virtual_ecosystem/pull/188!
Thinking about it - that "static" flag might allow us to avoid the extra static_data object.

A model might start and immediately run the super.__init__,
That runs a BaseModel._check_entirely_static method and that looks at Data noting if all the required variables are present and flagged and static.
If they are all there and static, we can set a flag to shortcut the whole method.
If only some are there and static, then we have to calculate them at each time step but refuse to actually set them and hold the static values.
And if any are there but not static - we throw an error? Attempt to provide an internally calculated variable.

I've been working on this and after a few trials and errors I think there are only 3 scenarios involving the static flag that make sense:

The flag is provided and ALL the variables that would have been created/updated in init and/or update are provided as inputs: In this case, we just bypass init and/or update. This applies to init and update independently.
The flag is provided and NOT ALL of those variables are provided, only some: We rise an error. Updating some and not others risk inconsistencies between the variables updated by the model.  This applies to init and update independently.
The flag is provided and NONE of those variables are provided: In this case we run the methods once and then bypass them in any future call. This only applies to update, since init is run only once, anyway. For those variables that are a time series, we might need to update the Data object with the previous value - which is always the same - but I'm not sure.

I will implement a prototype of how that bypassing can be done with minimal fuss.

Ok, so here you have another take at this. The code seems verbose because I tried to be thorough with the error messages, but actual lines changed are very few.
This implements two methods:

One that checks if the setup (the new init, see below) needs to be bypassed based on the presence of the static flags and the variables available in the data object.
Another that checks if the update method should be run once when if the model is static and the relevant variables are not present in the data object.

For this to work, the following changes will need to be done to all the models:

Everything in init after the super().__init__(...) call should be moved to a new abstract method called _setup. I guess we can use setup if you don't have any use for that one anymore. This method should take as input everything that is not already passed to super().__init__(...), as that will be already available.
The subclasses init method should be removed. So no custom init anymore, just custom _setup. If it is present, there will be an exception.
Subclasses will need to override _update and NOT update, as it is now. If they override update, there will be an error, as with __init__.
In the from_config method, the models will need to read a static flag from the configuration and pass it to the class constructor. If the flag is not present, the default is not being static.
Optionally, the input files will need to contain the data that will be used by the static model when it is operating in a preset model - i.e. all data provided externally.

OK, so give it some thoughts and we can move from here. The pending things/open questions are:

Do we need to update the data object even when the model is static, coping the previous entry in the case of time series?
Do we need to do anything to load the data files related to preset data?
I guess that we will need to update the schemas to allow for a static flag, right?

Do we need to update the data object even when the model is static, coping the previous entry in the case of time series?

The data object currently stores the present state of the model variables as well as time series data for inputs, i.e. regional climate projections over time. The variables that represent the current state get output at every time step (I think we currently output all of them, but it could be a user defined subset). There's nothing within the data object that records the previous state of the model itself. I feel like this means the data object doesn't need to be updated for static models as the present state is by definition unchanging.
I guess we might want to change how the data object is used so that previous values are stored (for at least some variables) at some point in the future. But I feel like this would be a fairly big refactor which would also inevitably change some of the static model logic so probably isn't worth hedging against

@davidorme , did you have a chance to look into the new version of this?

@dalonsoa I hadn't had a chance to review this new version yet.  I'll try and have a look this week - for a mix of school inset days and thesis vivas to juggle.

No rush. I was mentioning just in reference to #541

Do we need to update the data object even when the model is static, coping the previous entry in the case of time series?

The data object currently stores the present state of the model variables as well as time series data for inputs, i.e. regional climate projections over time. The variables that represent the current state get output at every time step (I think we currently output all of them, but it could be a user defined subset). There's nothing within the data object that records the previous state of the model itself. I feel like this means the data object doesn't need to be updated for static models as the present state is by definition unchanging.
I guess we might want to change how the data object is used so that previous values are stored (for at least some variables) at some point in the future. But I feel like this would be a fairly big refactor which would also inevitably change some of the static model logic so probably isn't worth hedging against

I think it should be easy to store time series of variables in the data object as long as they have a time index dimension , like the climate input data, and this time index is selected in the model when static

I think it should be easy to store time series of variables in the data object as long as they have a time index dimension , like the climate input data, and this time index is selected in the model when static

Ok, but that is not how the data object is used at the moment, right? I think that if that is to be implemented in the future, then this static model thing will need to be edited, but implementing that functionality now when it is not needed seems unnecessary.

@dalonsoa Sorry for the really slow response on this one. I agree that this is the way to go - it is a pretty clean path and has the added benefit of trapping superfluous variables in the initial data. I don't think we currently do that and that is important.
I think we could probably avoid the inner _update method if we rely on users including super.update(...). That feels like a simpler namespace but I guess does rely on that call being included, so is more brittle. Might just have talked myself out of it!

I've maybe got a mild preference for not using 'private' style class method names here for the things that model developers would have to provide.
Actually - no - I'm wrong. I think my argument was going to be that it feels more obscure, but the private name is used to indicate the important information that these functions should never be called directly as it would strip the execution of the context of the static method flags.

It seems you're having a nice discussion with yourself :) .
Yeah, I think asking people to override _whatever instead of whatever, is not a bad practice and give us the freedom to introduce any actions that we want in the middle. It also saves the developer from having to call super()..., which often is unclear if it should be call at the beginning of the overriding method, at the end or not called at all. We will do that for them.

It seems you're having a nice discussion with yourself :) .
Yeah, I think asking people to override _whatever instead of whatever, is not a bad practice and give us the freedom to introduce any actions that we want in the middle. It also saves the developer from having to call super()..., which often is unclear if it should be call at the beginning of the overriding method, at the end or not called at all. We will do that for them.

Yeah - two successive comments where I was going to suggest a change for superficially good reasons and then wanted to record why they are only superficially good reasons.

@dalonsoa Sorry it's taken me so long to get to this. I'm going through now

Ok, I'm going to crack this today, so I'll need to update a few models here and there, probably.

Ok, I've implemented the main changes and now I'm navigating through the update of the tests, which is a very painful experience. If you could have a look at the non-test files, to make sure I'm not doing anything stupid, that would be great.

I've only really looked at the plants code but the structure of those changes looks as expected.

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

Project coverage is 94.88%. Comparing base (a7efd83) to head (0a43623).

Files with missing lines
Patch %
Lines

virtual_ecosystem/core/base_model.py
65.11%
15 Missing :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #373      +/-   ##
===========================================
- Coverage    95.18%   94.88%   -0.30%
===========================================
  Files           74       74
  Lines         4380     4418      +38
===========================================
+ Hits          4169     4192      +23
- Misses         211      226      +15

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

@davidorme @vgro @jacobcook1995 @TaranRallings @alexdewar , this is complete and ready for a full review.

The ve_run example page in the docs is failing. I've grabbed the error from the action artefacts and it says: Configuration failed for models: soil,litter

Yeah, I suspected as much. Both two models - by default static - are being initialised with some variables that they are supposed to initialise - either in setup or in update - present in the Data object. As the actual error is lost, it is difficult to figure out what are the offending variables, but I'll see what I can find.

OK, I got the errors:
For "soil":
Non-static model soil requires none of the variables in vars_populated_by_first_update or vars_updated to be present in the data object. Present variables: ['soil_c_pool_microbe', 'soil_c_pool_necromass', 'soil_c_pool_lmwc', 'soil_enzyme_maom', 'soil_enzyme_pom', 'soil_c_pool_pom', 'soil_c_pool_maom']
For "litter:
Non-static model litter requires none of the variables in vars_populated_by_first_update or vars_updated to be present in the data object. Present variables: ['c_p_ratio_below_structural', 'c_n_ratio_above_structural', 'litter_pool_above_structural', 'litter_pool_above_metabolic', 'c_p_ratio_above_structural', 'litter_pool_below_structural', 'lignin_below_structural', 'lignin_above_structural', 'c_p_ratio_below_metabolic', 'c_p_ratio_above_metabolic', 'c_n_ratio_below_metabolic', 'c_n_ratio_below_structural', 'litter_pool_below_metabolic', 'c_n_ratio_woody', 'c_p_ratio_woody', 'litter_pool_woody', 'c_n_ratio_above_metabolic', 'lignin_woody']
So, the solution would be to get rid of those from the data object in the example, but chances are that will break a lot of things.

Or @jacobcook1995 is this simply that you've now implemented the calculation of things we had to feed in by hand before, and we just need to update the data? That seems quite likely - there's been a lot of movement on those models.

This error seems to be related to the content of vars_updated (rather than vars_populated_by_first_update). They are all things that the soil and litter models track but no other model uses. I'm not sure if I have misunderstood vars_updated but I assumed it was about the output from the models rather than the inputs to the models?

This error seems to be related to the content of vars_updated (rather than vars_populated_by_first_update). They are all things that the soil and litter models track but no other model uses. I'm not sure if I have misunderstood vars_updated but I assumed it was about the output from the models rather than the inputs to the models?

Actually this isn't quite right sorry, the animal model needs to know about the size of the litter pools so there is a dependancy there

I'm planning to work on #581 from next week, but for that I really need this PR agreed and merged. Is there any barrier for that to happen?

Yes, please. We really need to merge this - or ditch it altogether. I've already had to fix merge conflicts several times because - obviously - you keep working and adding stuff incompatible with the changes here, and today I've wasted 3h trying to incorporate the latest changes to the animal model without success because in the data object there's some data that should not be there.
@TaranRallings , I get this error:
virtual_ecosystem.core.exceptions.ConfigurationError: Non-static model animal requires none of the variables in vars_populated_by_first_update or vars_updated to be present in the data object. Present variables: total_animal_respiration

Either total_animal_respiration should not be in the dummy_animal_data object used by the prepared_animal_model_instance fixture or total_animal_respiration should not be one of the vars_populated_by_first_update neither vars_updated. I cannot fix that myself.
So, keeping aside this being a barrier or not, once @TaranRallings has fixed the above issue, please merge or close this PR without merging, but do not leave it lingering around for longer.


fix: show tag values with additional predicates responds correctly

Closes #

Closing this out since it does not work correct; it seems that a separate path is needed for flux predicates


Change file path behavior

Copying the path always gives a '' as the path separator. Most programming languages require a double backslash or a slash for file paths. Vice versa copying the path to a file from the IDE to files-uwp doesn't work because it only supports single backslashes.
Could you add the possibility to use slashes in the file path in files-uwp and the possibility to copy the file path from files-uwp with slashes as path separator. This could be set in the options or with a shift click on the "copy path" button.

@flimosch Can you confirm this issue still exists in the v0.7.1?

Closing this due to inactivity, please reopen it if it is still an issue in v0.7.1.


question: differences between calling sagaMiddleware.run multiple times vs using all ?

haven't dived into saga's source yet so please pardon me if this sounds like a dumb question:
I'm aware using all  is a common practise for listening to multiple dispatched actions,
sagaMiddleware.run(function* () {
  yield all([
       takeEvery(LOGIN_REQUEST,login),
       takeEvery(LOGOUT_REQUEST, logout),
  ])
});

am just curious what's the difference computationally if we do .run multiple times instead i.e. for each takeEvery ?
sagaMiddleware.run(function* () {
   takeEvery(LOGIN_REQUEST,login),
});
sagaMiddleware.run(function* () {
    takeEvery(LOGOUT_REQUEST, logout),
});

been skimming through the doc but haven't found any discussion on this; so any pointers will be appreaciated!

I see! Gotcha! Thanks!


Avatars not appearing

Title says it all. The avatars aren't appearing, I've tried changing avatars, using different ones, etc.,
I see my friend's gun, but not his avatar. Interestingly, the "avatar change" thing appears in the log.
Any help would be appreciated.

Update, I made a fork here which fixes the problem by removing these lines. I'm not sure about if this is some optimization thing that breaks if removed? It also seems to leave both avatars T-Posing, so I'm not sure. @notnotnotswipez Should I PR these changes?

It was a check to prevent avatar spam/changes if the packet contained the same avatar as the one stored, but I can see how it can be a problem. Feel free to PR

It was a check to prevent avatar spam/changes if the packet contained the same avatar as the one stored, but I can see how it can be a problem. Feel free to PR

Gotcha!

How do I download/compile this? There's no releases, and IDK how to compile a BoneLab mod.


[WIP] refactor: Refactor access_user_by_id and add access_user_by_email in zerver/lib/users.py

This adds allow_cross_realm flag to access_user_by_id to remove direct calls to
get_user_by_id_in_realm_including_cross_realm in view code.
This willl also add access_user_by_email similar to access_user_by_id to zerver/lib/users.py
to remove direct calls to get_users_including_cross_realm.

@timabbott Can you have a look?


Issue #396: Fix labels scoping, now labels from parallel groups not v…

…isible by the actions/predicates.
Closes #396.

I decided to take another route to fixing this problem, see https://github.com/pegjs/pegjs/issues/396#issuecomment-195439771 for detailed explanation. Closing.


Adding URL to failed ci(s)

Adding the URL to failed ci checks. For that changed the body of the slack message and added a struct that takes the new field in consideration. Tested it locally with some manual examples and it looked like it was working fine

Thanks!


Wrong version of Cocoapods is being installed.

From your docs, you state that you match Podfile.lock version and install that version of Cocoapods.
I have seen this a few times and it breaks our deploys....
In our Podfile.lock;
COCOAPODS: 1.8.0
From your logs;
Required CocoaPods version (from Podfile.lock): 1.8.4
The versions are not matching.
I had a problem locally where if I had 2 versions of Cocoapod gems, it would use the latest.  Is that perhaps the issue?

Update:
There is no bug in the cocoapods step.  Further investigation is showing a previous Install Fastlane step is altering my Podfile.lock.
Sorry.


Create Instance Properties Section in BrowserWindow

This corrects the documentation by adding a section for instance properties.
Fixes https://github.com/atom/electron/issues/2744

:+1:


Fresh pip install crashes on sample-config

aprsd was installed as user or root, either with pip install aprsd or pip install . from cloned repo. I'm having the same issue under both Linux/arm64 and FreeBSD/amd64.
petrus@rpi4:~ $ aprsd sample-config
Traceback (most recent call last):
File "/home/petrus/.local/bin/aprsd", line 8, in <module>
sys.exit(main())
File "/home/petrus/.local/lib/python3.9/site-packages/aprsd/main.py", line 81, in main
cli(auto_envvar_prefix="APRSD")
File "/home/petrus/.local/lib/python3.9/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/home/petrus/.local/lib/python3.9/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/home/petrus/.local/lib/python3.9/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/petrus/.local/lib/python3.9/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/petrus/.local/lib/python3.9/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/home/petrus/.local/lib/python3.9/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/petrus/.local/lib/python3.9/site-packages/aprsd/main.py", line 136, in sample_config
args = get_namespaces()
File "/home/petrus/.local/lib/python3.9/site-packages/aprsd/main.py", line 128, in get_namespaces
selected = imp.entry_points(group="oslo.config.opts")
TypeError: entry_points() got an unexpected keyword argument 'group'

Moreover, running aprsd server ignores the config i've put in .config/aprsd/aprsd.yml.
Is there a missing dependency, or something else?

Looks like python 3.9, is your cloned repo of aprsd up to date?  git pull ?

Yup py3.9, and yes i'm up to date:
~/tools/aprsd (master*) » git rev-parse HEAD
c43652dbea3c55243b1457ce3abba235d50fcea1

I just released 3.3.4 with a fix.  try upgrading and give that a shot.
pip install -U aprsd

Thanks, it now works! Didn't realize 3.9 was old... I don't python much.


Implement browse retries for minimal mdns

Problem
Minimal mDNS will retry on a failing resolve command, but not on a failing browse command. This is especially important for minimal, which relies on legacy unicast responses for the first attempt.
Change overview

adds ability to track browse requests in the ActiveResolveAttempts class
Changes minimal impl to retry browse attempts using the same mechanism
as resolves
adds tests
moves the ActiveResolveAttempts file out of minimal - reasoning:
althought this is used only by minimal, other impls could use
this and the minimal folder was meant to not include any Matter
specific details like peer id or discovery filter.
adds tests.

Testing

ran a discover where there are no matter devices  advertising - saw retries
unit tests added

/rebase


Why DIGITS inference in Semantic segmentation shows better results ... ?!

@gheinrich
Hello,
These are two inferences, one from DIGITS internal inference part and another from the code which I've found. I considered everything but DIGITS results are better and finer.
Models are exactly the same and no mistake was happened. Have you done something more in the inference part?
DIGITS's result:

My result:

import sys
from os import listdir
from os.path import isfile, join
import cv2
import numpy as np
from PIL import Image
import time
import caffe

caffe.set_mode_gpu()

#caffe.set_mode_cpu() # Use CPU for the calculations

print 'Reading the network and model'

NET_FILE = 'deploy.prototxt'
MODEL_FILE = 'snapshot_iter_1356.caffemodel'
net = caffe.Net(NET_FILE, MODEL_FILE, caffe.TEST)

directory = 'images/' # Path to the image sequence
files = listdir(directory)
files.sort()

image_files = [files[i] for i in range(0, files.__len__(), 1) if files[i][-3:] == 'jpg'] #Get only image files

print 'Starting processing'
total_time = 0 # To measure the average time taken
for file_name in image_files:
        print 'Processing image: ' + file_name
        im = Image.open(join(directory, file_name))
        in_ = np.array(im, dtype=np.float32) # Preprocess the image to make it similar to the training data
        in_ = in_[:,:,::-1]
        in_ -= np.array((97, 119, 145))
        in_ = in_.transpose((2,0,1))

        net.blobs['data'].reshape(1, *in_.shape) # Reshape the network according to the image size
        net.blobs['data'].data[...] = in_
        start = time.time()
        net.forward() # Run the network for the given input image
        end = time.time()
        print 'Time taken = ' + str(end - start)
        total_time += end - start

        out = net.blobs['score'].data # Extract the output
        out = out.argmax(axis=1) # Get the labels at each pixel
        out = out.transpose(1, 2, 0) # Reshape the output into an image
        out = np.tile(out, (1,3))
        out[out != 0] = 255 # 7 is the label 'car'
        out[out == 0] = 0

        out_file_name = file_name[:-4] + '_out.png'
        cv2.imwrite(out_file_name, out)

print 'Done'
print 'Average time taken = ' + str(total_time/image_files.__len__())

Hi,
Could you please tell us how did you solve the problem? If you did.
I am experiencing the same problem. Maybe it could help me to.
Thank you in advance.

Yes, because you have fined-tuned the model, you should rename the layer in the code also to match with the fine-tuned model, otherwise if you don't do, it will use the results of the above layers.

Actually I use C++ and I have different problem...

The image from digits seems like postprocessed, but from c++ it has different shape and somewhat "blocky" result....
But thank you for sharing your solution.

in_ -= np.array((97, 119, 145))
I am sorry, but how do you calculate this value?


Failed to add the problem to favorite. Please open the output channel for details.

node:57237) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use node --trace-warnings ... to show where the warning was created)
[ERROR] http error [code=520]
node -v
v14.7.0

@codingYH
Yes the add the problem to favorite seems expired in leetcode and I checked in leetcode-cn works well.
Let me try to fix it.

Thanks a lot! Are the company tag questions the same with Leetcode?

@codingYH
Yes the add the problem to favorite seems expired in leetcode and I checked in leetcode-cn works well.
Let me try to fix it.

I found the data was successfully posted to leetcode.com. However, in Visual Studio, It didn't work.

@jdneo
Change api to graphql seems can solve this problem. And Seems leetcode is dropping the old apis bit by bit.

@yihong0618 Cool, do you have the interest to update the cli?

@jdneo
Doing it right now, I will send a pr later.

@jdneo https://github.com/yihong0618/leetcode-cli/commit/c0f9524b6939f81d9b8ec367221a83f8cc5444b8  fixed

There is the same bug. Failed to add the problem to favorite.

I think the bug is still here.

Failed to add the problem to favorite.


Update flutter_svg dependency to ^0.17.4

The actual flutter_svg 0.17.1 is not buildable with Flutter 1.17.1 (stable).

Use this
  flutter_advanced_networkimage:     git:       url: https://github.com/jawad12345A/flutter_advanced_networkimage.git


[components]: Create chip select component

Requirement

Chip selector component
Mockups

Contributor Guide

🎨 Wireframes and designs for Layer5 site in Figma (open invite)

@senali-d @saurabh100ni I am interested in contributing to this. Where should the code be added?


Disable changes to report fields when accounting integration is connected

Details

The PR restricts creating, editing, and deleting actions for report fields when there is a workspace connection. Also the PR fixes a translation for report field type.
Fixed Issues

$ https://github.com/Expensify/App/issues/43683
PROPOSAL: N/A
Tests

Open a workspace's "Report fields" page with a connection (accounting).
Verify that there is no "Add field" button.
Verify that there are no bulk actions for report fields.
Click on any type row.
Verify that the user cannot edit the initial value.
Verify that there is no "Delete" button.
Click on a list-type row.
Click on the "List values" button.
Verify that there is no "Add value" button.
Verify that there are no bulk actions for list values.
Click on a list value row.
Verify that nothing happens.

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

Offline tests

Same as "Tests".
QA Steps

Same as "Tests".

[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/Expensify/App/assets/57314631/47f2264e-fe64-442c-8b16-06efb21d250f

Android: mWeb Chrome

https://github.com/Expensify/App/assets/57314631/2d72f7b4-a6dd-49f2-8c9f-7e64380d4aea

iOS: Native

https://github.com/Expensify/App/assets/57314631/981ed23e-57e6-4793-95ba-dad74107cb34

iOS: mWeb Safari

https://github.com/Expensify/App/assets/57314631/c3714703-82e7-48a3-82ab-1d52154bb845

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/57314631/ad5c4f6c-bbb7-4059-909c-0a767c752542

MacOS: Desktop

https://github.com/Expensify/App/assets/57314631/a66816d4-bb67-4ffa-b789-023062f74716

It is still awaiting Spanish text confirmation in Slack.

The translation was confirmed.

@shubham1206agra updated

: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/mountiny in version: 9.0.10-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 9.0.10-7 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/francoisl in version: 9.0.11-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


refactor(es/minifier): Remove wrong implementation of hoist_props

Description:
Our hoist_props implementation was completely wrong. I'll implement a correct one with a follow-up PR.
Related issue (if exists):

Closing in favor of https://github.com/swc-project/swc/pull/8593


Authentication error when using a regional endpoint

Hello,
I'm encountering the same issue described in this issue from the C# speech SDK.
I create my speech client using my JSON file credentials. Using the default endpoint - speech.googleapis.com, everything works. Though when I specify a regional API endpoint, I get the following error message
UNAUTHENTICATED: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
GoogleCredentials googleCredentials = ServiceAccountCredentials.fromStream(new FileInputStream(ResourceUtils.getFile("classpath:google-credentials.json")));
var speech = SpeechClient.create(SpeechSettings.newBuilder()
                .setCredentialsProvider(FixedCredentialsProvider.create(googleCredentials))
                        .setEndpoint("europe-west4-speech.googleapis.com:443") // without this line, everything works
                .build());

I'm unsure whether this is a bug like with the C# SDK, or just user error.

Thank you for the report. Would you share the document you followed to use europe-west4-speech.googleapis.com:443?

I used this StackOverflow question to figure out why I couldn't access my Recognizer - I had to set the regional endpoint, because I was getting the Expected resource location to be global error. I assume the URL is correct, considering that if I misspell any part of it, I will get a service not found or something in that sense. Here it says the default port is 443. After specifying the endpoint, I got an error that the required schema is <address>:<port>. I assume the code was looking for a semicolon to split by, so I added the port there. Port 444 did nothing, so again, my assumption is that nothing is listening on it, thus 443 must be the right one.

why I couldn't access my Recognizer

Would you share the document that guided you how to use Recognizer? That document should have guidance on how to set an endpoint.

Uh, I pretty much just looked at the REST docs and looked for methods that set the required params in the source code.

Thanks. From https://cloud.google.com/speech-to-text/docs/endpoints both URL and the content, I don't find it's specific to v1. What made you think it's for v1?

The fact that the "version dropdown" has the v1 selected. I might be wrong, as this is my first time using the Google docs and services.

Thank you. Will respond later this week.

Hi, I took a look at the C# issue and I believe I've seen the missing scopes issues before. I believe the client library has additional logic internally for adding some scopes to the credentials when using the client libraries. Since you're creating the GoogleCredentials yourself, I think you'll need to manually add in some default scopes for Speech: https://github.com/googleapis/google-cloud-java/blob/b4ec2449f092e6dca1c9cd169421311579b67777/java-speech/google-cloud-speech/src/main/java/com/google/cloud/speech/v1/stub/SpeechStubSettings.java#L97-L99
Could you try something like this:
    GoogleCredentials googleCredentials = ServiceAccountCredentials.fromStream(new FileInputStream("{SA_KEY_LOCATION}"));
    googleCredentials = googleCredentials.createScoped(scopes);
    ServiceAccountCredentials serviceAccountCredentials = (ServiceAccountCredentials) googleCredentials;
    serviceAccountCredentials = serviceAccountCredentials.createWithUseJwtAccessWithScope(true);
    var speechClient = SpeechClient.create(SpeechSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(serviceAccountCredentials))
            .setEndpoint("eu-speech.googleapis.com:443")
            .build());

and let me know if that works or not?
I think a possible cleaner version with the google-auth-library is to let the client library find the credentials for you. Following the logic for ADC: https://github.com/googleapis/google-cloud-java/blob/b4ec2449f092e6dca1c9cd169421311579b67777/java-speech/google-cloud-speech/src/main/java/com/google/cloud/speech/v1/stub/SpeechStubSettings.java#L97-L99
Try setting the GOOGLE_APPLICATION_CREDENTIALS env var and remove the setCredentialsProvider call from the SpeechSettings Builder. I think it should work properly and hook into our additional logic for adding scopes. Let me know if that works or not.

Glad to hear that it works by adding in scopes and/or using ADC. We will be looking to try and enhance our docs + error message(s) where possible so it is clearer as to what went wrong.
We do have a small section on authentication here: https://github.com/googleapis/google-cloud-java/?tab=readme-ov-file#authentication which may help you if you have any future auth problems.

Yeah, adding scopes worked. For a first-time Google Cloud user, the Javadoc is lacking in my opinion and the errors are not very descriptive, but the quick feedback I've gotten here definitely made up for it. I'll totally give the whole README a read, just by a quick glance it looks like there is a lot to learn from it.
Thank you

For a first-time Google Cloud user, the Javadoc is lacking in my opinion and the errors are not very descriptive

Acknowledged. Thank you for your feedback. We will work to improve both of these.


Faucet factory can be simplified

Faucet type can be made an enum kind and switch case can be simplified by binding instantiation with the type of the enum instead of a string.

Yes!
Please note the following:
Right now, the chain string is used throughout the project to access the configurations of the individual parts. Thus, this ticket incurs further changes:

The most outer layer (probably Server.ts) should identify the config for each chain.
Instead of passing chain strings around, the correct chain object from the config should be passed around (only the one of the one relevant chain).
In addition to the config, we need to pass the new faucet type enum value to all methods that require to know the faucet type (probably just the FaucetFactory).
Make sure that creating the new account and storing it in the file is still possible within Accont.ts without passing the chain name and without direct access to the config. It might be required to extract the method that gets the file name from the config into an upper layer and pass it to the function that creates a new account.

Thoughts @sarvesh-ost ?


Add automation for GHC versions

Followup to https://github.com/endoflife-date/endoflife.date/pull/6287, adds integration for the thing to keep rolling more-or-less autonomously (without regular mandatory attention).
A new script within existing framework.

Parses the source table from wiki
Fills out releases
Fixes versions dates to come from wiki tables, rather than git tags (formal version announcements sometimes precede git tag, sometimes lag behind).

I understood that
--- i/products/ghc.md
+++ w/products/ghc.md
@@ -22,6 +22,7 @@ auto:
   - git: https://gitlab.haskell.org/ghc/ghc.git
     regex: ^ghc-(?P<major>\d+)[.](?P<minor>\d+)[.](?P<patch>\d+)-release$
     template: '{{major}}.{{minor}}.{{patch}}'
+  - custom: ghc-wiki

 releases:

plus a submodule bump (maybe?), will be needed as another follow-up in the main repo.
:heavy_check_mark:  Tested locally. (Thence the diff in generated json)

@captn3m0 @marcwrobel please review, if/when time permits


Can't localize delete button

I'm trying to localize the delete button with NSLocalizedString, but the button's label doesn't change when I change the language.

Hello, @fabiocody
v2.0.2 add a new property deleteButtonLocalizedTitle that can be used for localize.
passwordContainerView.deleteButtonLocalizedTitle = "smilelock_delete"


Drawers get styled very strangely on mobile phones

Scales down the main content.

This is no longer an issue on iOS, must have been fixed in a recent version of Safari


Add perf and reliability benchmarks for Blazor

From #10449:
Scenarios
Run these in our perf lab.
Performance
Run Blazing Pizza on the VM, and spin up enough clients to saturate the CPU or thrash the memory. Figure out which resource is the most scarce, and then optimize, and repeat.
I propose we automate a canonical scenario like placing a pizza order - then measure render operations per-second for that fixed test script.

[x] Create a checked in automated performance test in our perf lab that reports render operations per-second.
[x] Analyze results and log issues for improvement for some time-boxed amount of time. As with all perf work this is open ended so the size of this item is flexible.

Capacity and Reliability
Run Blazing Pizza on the VM, and spin up a bunch of clients, but have them run the test script slowly (with pauses), let's say one operation per-second. The goal is to simulate a bunch of users in actual use of the web site to try and get a realistic estimate of a user count, and what kinds of resources your run out of first.

[ ] Create a checked in automated reliability test in our perf lab than can run for a long period of time. The number of client used for this should put the server at 75% capacity.
[ ] Analyze results for memory growth and reliability issues. The bar for this category is stricter, we need to address all issues that cause memory growth or reliability problems.

@pmkArtakMSFT any results you can share?

same question, any results you can share.. before me diving in on blazor

It looks like this issue stated with #13483 where Dan outlined some ideas on test clients/frameworks.  Will there still be a framework that the general public can use to perf test their own code or was that idea given up in in lieu of a hard coded pizza test?


module and ts

use ts refactoring init-agent-script.js code
module manage agent code
issue #136

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

Please make sure the following requirements have been met for your PR before we can continue reviewing it:

You have signed the CLA by clicking the [CLA | not signed yet] button from the comments.
The PR has passed all the CI tests and turns green. (you can execute all tests locally by running npm test)

Please make sure the following requirements have been met for your PR before we can continue reviewing it:

You have signed the CLA by clicking the [CLA | not signed yet] button from the comments.
The PR has passed all the CI tests and turns green. (you can execute all tests locally by running npm test)

I'm sorry. This is an incorrect merge. It's my error and has been rolled back.
Dear @Caesar-ch ,please take a moment to check it and submit it again after making sure there are no problems.


00000

This one should be closed.

Please provide summary, description and proper steps to reproduce the issue


go-github update

https://github.com/google/go-github/releases/tag/v32.0.0 has been released and included breaking changes to a few functions in this provider. This PR aims to maintain parity with existing functionality but will unblock work on organisation secrets (https://github.com/terraform-providers/terraform-provider-github/issues/468)

It looks like the tests are currently passing with these changes. Is this something that can be merged in or are you still waiting on https://github.com/google/go-github/issues/1546?

Is there any update on this regards?

I'd refer to @anGie44 - as she ran the tests that picked up the issue, it would be good to see if they now pass as is suggested

hi @hitmands, @andrew-waters! Unfortunately without upstream changes in the go-github library, the acceptance tests discussed above are still failing (perhaps you were referring to the Travis CI checks  @ejhayes?) good news is the PR to revert that breakage is in review https://github.com/google/go-github/pull/1571 and once that's in we can pick this one back up 👍

@anGie44 as you're already aware https://github.com/google/go-github/pull/1571 has now been merged. Let me know if this PR needs any further work

I've upgraded the lib to the newly released v32.1.0.
I'd be very grateful if someone can run the acceptance tests to ensure that the release has fixed the issue we faced.

@andrew-waters looks like this can be merged in any time.

Can I self merge @ejhayes ? First contribution :)

Good point @andrew-waters. @anGie44 are you able to merge this change in?

@hitmands are you able to merge this PR?

@hitmands Any chance to merge this?

@jcudit are you able to merge this PR?

@ejhayes yes, but in time.  This change and the feature it unblocks is tracked to be released at the end of September.  Focus is currently on cleaning up testing and releasing v3.0.0.  Once that blocker is cleared, we can get back to shipping changes like this at a more frequent pace.  🙇 for the patience on this one.

Resolving conflicts seems to have broken the tests in some way 🙃 .  I've merged b587cb0 to accomplish the upgrade instead.

Thanks for adding this feature @jcudit. I'm glad that the proposed functionality can be achieved now as it is functionality I can leverage.
I'm somewhat disappointed that this PR had to be dropped - It seems that a lack of urgency (the PR was first cut on May 28th) turned into an abundance of urgency (the merge took less than 24 hours with a fresh cut) and I didn't get the opportunity to resolve them myself.

Apologies @andrew-waters, fair concern.
I have been working through a transition with primary responsibilities. Time has been sparse for this project and I've been more aggressive with changes to compensate.
I expect us to get a few more maintainers and return to a more predictable pace in the coming months.


Test readColumnIndex and readOffsetIndex

This is a preliminary pull request to add tests for readColumnIndex and readOffsetIndex.
When available, column and offset indices were saved to:

test/files/{base_name}.column_indices.json
test/files/{base_name}.offset_indices.json

All offset indexes were parsed successfully. However, two test files had column indices that could not be parsed (both had issues when using convertMetadata on the min_values/max_values). Details are as follows:
File: test/files/adam_genotypes.parquet
This file has pages containing only null records, which results in 0-length Uint8Arrays representing INT64s being passed to the convertMetadata function. We can treat empty Uint8Arrays as null values or avoid parsing them.
File: test/files/duckdb5533.parquet
This file has pages where the min_values or max_values are variable-length Uint8Arrays, but are mapped to the INT32 Type. Specifically, Uint8Array(1) [ 0 ] results in a RangeError when passed to view.getInt32(0, true), since it is less than four bytes long. We can probably add length qualifiers to the convertMetadata function's type conditions, or simply assume that any Uint8Arrays less than the minimum length for Int32/64 already have the most/least significant bytes filled in. I personally feel that length checks might be a safer approach. It's also possible that DuckDB just generated a file with bad column indexes.

It looks like duckdb5533.parquet was actually generated by Arrow2 (Rust)

@park-brian Thanks for the great PR!
I agree that the right answer is probably length checks in convertMetadata. It does feel like these are invalid parquet files, but my preference is to be forgiving about reading parquet files in the wild. I just pushed a commit to your PR with my suggestion there.
I am reluctant to return undefined when length === 0, as I think that will incorrectly catch the case where a min/max value is actually empty string "". I am open to being convinced here though. Could also catch it with a more carefully constructed conditional in convertMetadata but I'm not sure it's necessary?
Let me know if this aligns with your thinking.

I had completely forgotten about zero-length strings! In that case, I totally agree that length checks are sufficient for both cases.

@platypii
I just noticed there might be a small typo in the indicies.js filename. I think it might be spelled indices.js. There's also indexes, which is considered a more "modern" pluralization.

@platypii I just noticed there might be a small typo in the indicies.js filename. I think it might be spelled indices.js. There's also indexes, which is considered a more "modern" pluralization.

Fair point, I mostly didn't want to use "index.js" which has special meaning. If you want to rename it to "indexes.js" or something else I would support that. I plan to review and merge this PR in the next day or so. Thanks!

Thank you! I've renamed it to "indexes" for now. Let me know if this looks good to you.

Any time! Thank you for accepting the PR. Next up: potential work on parquetQuery (still TBD)


Validate: recover needUpdate for TrapEvent

TrapEvent may not raise hasTrap when any other bundle valid, so we recover needUpdate to mark there is valid TrapEvent at this cycle.
In Validate, we use getValid to mark valid for single bundle, and needUpdate to mark valid for this cycle. We will transmit trapEvent when hasTrap, or other bundles valid.

trap event also contains cycleCnt and instrCnt information. We need to fix them before changing the transmission of trap event. Do you check them?

Sure. When hasTrap, we transmit TrapEvent to finish simulation, when other bundle valid, we transmit TrapEvent to provide excactly cycleCnt and instrCnt


Support GHC > 8.0.2

This is simply relaxing the upper bound on base and adding a Semigroup instance for HasPSK.

Not sure what to do about the hlint warnings - any preferences?

ping @centromere

Thank you @kim!

Thank you!


#25 Sequence methods

-
-

Issue
https://github.com/ripe-tech/peri-invoicing/issues/25

Decisions
- Add sequence method so it's possible to list sequences and pick sequence id instead of the sequence name

@3rdvision after mege make a new release for 0.5.0


Delux M625 mouse support

I think from the name it’s clear, I’m ready to work, wireshark is configured)), here are all kinds of logs
https://linux-hardware.org/?id=usb:1017-9015
$ sudo lsusb -d 1017:9015 --verbose

Bus 003 Device 002: ID 1017:9015 Speedy Industrial Supplies, Pte., Ltd M625 [Vendor: DELUX]
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x1017 Speedy Industrial Supplies, Pte., Ltd
  idProduct          0x9015 M625 [Vendor: DELUX]
  bcdDevice            2.10
  iManufacturer           1 SOAI
  iProduct                2 USB Gaming Mouse
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x005b
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      71
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      1 Keyboard
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     140
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      32
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
Device Status:     0x0000
  (Bus Powered)

Since this mouse would require writing a new driver, let's close this until someone volunteers to write one.

Since this mouse would require writing a new driver, let's close this until someone volunteers to write one.

yes, I myself don’t mind trying to write a driver, but there are no examples that would tell me how to do it and how

@SPRATAY
I recommend starting off by making a bare-bones program to configure your mouse
Some resources that could help you:
Reverse-engineering the protocol of SteelSeries Rival 100: https://blog.flozz.fr/2016/03/27/steelseries-rival-100-reverse-engineering-dun-peripherique-usb/ (it's in French, but something like Google Translate should do great job)
[stream] USB: Reverse Engineering and Writing Drivers: https://www.youtube.com/watch?v=is9wVOKeIjQ


Access raw commands from executor

Description
Currently, when adding an executor to a command, you cannot retrieve the raw command string.
For most argument combinations it is pretty easy to convert an Object into a String (for example: turning a Player into a String using Player#getName() or turning any primitve types into strings)
However, this gets pretty difficult when using the EntitySelectorArgument which lets you input selectors (@a, @e, etc.) which can produce the exact same result.
Thus it would be useful if the CommandAPI implemented a way to retrieve the raw command string in the executor.
Expected code
In order to implement this, the CommandAPI could add a new method to the CommandArguments class like this:
public String getFullInput() {
    // Return whatever the user entered as a command
}

Extra details
For anyone wanting to implement this, the CommandArguments class is filled with information in the CommandAPIHandler. In there, there is a method called argsToCommandArgs which populates that with content.

Implemented in 9.0.0.


Update html in 2019 winter (modify links and update footer copyright)

Update the following HTMLs

[x] index.html
[x] index_en.html
[x] guideline/index.html

What to update
all htmls

[ ] update footer copyright (2018 -> 2019).

guideline/index.html

[x] update old guideline links with strikethrough links.
[x] create new guideline links.

Since the branch for this issue is already merged, closing this issue.


Display Snackbar when device is offline

The user is not notified that the device is offline, currently there is nothing that notifies the user of the offline status.

and even if the user looses connectivity sometime while using the app then also there should be a lost connectivity message. This I plan on implementing using a BroadcastReceiver which would be called every time there is a change in network state. Whenever The connection state is lost there would be a snackbar displayed at the bottom something like this:

The snackbar would stay there until the device reconnects and then change to connection established and then go out of view.

@timabbott @kunall17 I'd like to work on this.

Cool, It would be awesome if you would implement https://github.com/zulip/zulip-android/issues/82 and after this issue you posted, when the application loads and the internet is not there we can the messages previous messages cached and display the snackbar you showed!
I'd be happy to help if you need some! :)

@kunall17 is this issue resolved or can i be of some help here?

@kunall17 @icancode23 I am also in the queue :smile:

Hi @icancode23 @abhaymaniyar I am currently working on this in PR #316 .
Any suggestions you  provide to improve the PR would be appreciated.  :smile: