Unable to delete a View on the canvas

*Problem
Selecting and deleting a view on the canvas fails. Nothing obvious in the console, doesn't seem to be a cursor-focus issue since no code gets deleted
Video
https://user-images.githubusercontent.com/2945037/118661527-17d38a80-b7e7-11eb-9325-5953272af993.mp4
https://utopia.app/p/51345c80-immovable-object/

@maltenuhn I don't seem to be able to reproduce this and that view isn't even in the linked project for some reason.

@seanparsons Me neither, it probably ~fixed itself~ was fixed by one of the many selection or UUID-related points. Fingers crossed for that at least!


import numpyas np bug

I turned it off because it was making
import numpy as np

into
import numpyas np

Which is not workable.

This bug in fixed  in latest version. Please use importmagic=0.1.5

Cool, I was hoping so! Really looking forward to switch importmagic functionality back on.

Fixed.


ci: replace CI with new model

:tada: This PR is included in version 1.7.3 :tada:
The release is available on:

v1.7.3
GitHub release

Your semantic-release bot :package::rocket:


Explicit # fmt: on/off indentation level

Pull Request Test Coverage Report for Build 776

0 of 0   changed or added relevant lines in 0 files are covered.
31 unchanged lines in 3 files lost coverage.
Overall coverage increased (+0.2%) to 96.168%

Files with Coverage Reduction
New Missed Lines
%

blackd.py
2
97.22%

tests/test_black.py
4
97.83%

black.py
25
95.19%

Totals

Change from base Build 772:
0.2%

Covered Lines:
2911

Relevant Lines:
3027

💛  - Coveralls

Thanks!


Unable to install

Hello,
Seems that several people are unable to install this.
All of us get the following error message in home assistant version 0.97.2 Hassio system 184

19-08-28 02:14:50 INFO (SyncWorker_8) [hassio.docker.addon] Start build ceecc69e/amd64-addon-landroids:0.71

19-08-28 02:14:57 ERROR (SyncWorker_8) [hassio.docker.addon] Can't build ceecc69e/amd64-addon-landroids:0.71: The command '/bin/ash -o pipefail -c npm run build-prod' returned a non-zero code: 3

Also check https://community.home-assistant.io/t/control-worx-landroid-s-via-hassio/57456/68
Thanks for looking into this

Why do we need this in the Dockerfile?

RUN npm run build-prod

@stefanlaheij Why do we need this in the Dockerfile and how can we change it that it doesn't throw an error?

RUN npm run build-prod

Hi @ronmichel,
this is for building the application. You also see this line in the Dockerfiles from the repo that is pulled.

Same error on 98.4
19-09-09 19:23:44 INFO (SyncWorker_19) [hassio.docker.addon] Start build ceecc69e/armv7-addon-landroids:0.71
19-09-09 19:24:09 ERROR (SyncWorker_19) [hassio.docker.addon] Can't build ceecc69e/armv7-addon-landroids:0.71: The command '/bin/ash -o pipefail -c npm run build-prod' returned a non-zero code: 3

Any solution on this error @stefanlaheij ?

Same error on 98.5
[hassio.docker.addon] Can't build ceecc69e/amd64-addon-landroids:0.71: The command '/bin/ash -o pipefail -c npm run build-prod' returned a non-zero code: 3
Hope on a solution!

@stefanlaheij
I did the following with the dockerfile and now it works:
ARG BUILD_FROM
FROM $BUILD_FROM

RUN apk add --no-cache jq wget git nodejs nodejs-npm
RUN mkdir -p /usr/src/landroid-bridge
WORKDIR /usr/src/landroid-bridge

RUN cd /usr/src && \
    git clone https://github.com/virtualzone/landroid-bridge.git && \
    cd /usr/src/landroid-bridge

RUN apk --no-cache --virtual build-dependencies add \
    python \
    make \
    g++ \
    && npm install

RUN npm run clean
RUN npm run grunt
RUN npm prune --production
RUN apk del build-dependencies
COPY run.sh /
RUN chmod a+x /run.sh

COPY config_template.json /usr/src/landroid-bridge/config.json

VOLUME /data

EXPOSE 3000

CMD [ "/run.sh" ]

(just run the three commands for npm run build-prod seperately and move apk del build-dependencies to a later stage)

Thanks @ronmichel
I will update the Dockerfile with these changes!

Thanks for the update but it seems still not to install.
When I install this it hangs my systems as it consumes all the memory.
Also other users report the same problem.
Please reopen and check
Thanks

My System is a Rasberry 3B+ with 32bit hassos. Which System are you using? Build takes ~10minutes and runs without problems.

Hello
I have hassio running on ubuntu linux on a vm.
See also the comments in https://community.home-assistant.io/t/control-worx-landroid-s-via-hassio/57456/78
Regards


bn - Add support for Bengali Language

Requesting a new feature. Bengali language translation.
I am willing to contribute.

Hi @tazihad  , Sorry for the delay.
Unfortunately, each language (community-driven or officially supported) adds additional maintenance costs so we're prioritizing new languages based on a combination of site metrics and community support. No plans to add Bengali translations but will keep an eye on site. Thanks


chore(master): release 0.7.2

:robot: I have created a release beep boop
0.7.2 (2024-10-01)
🚀 Features

allow to define benchmark behavior at all levels (a86ced9)

✨ Polish

display explicit warning about samples statistical (82d08ea)
refine variable name (ced909a)
use isObject() helper in more places (d7f20f4)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

0.7.2
:sunflower:


Updates not in Effect, Pull request #20463

I'm submitting a ...
[ ] bug report
[ ] feature request
[ ] question about the decisions made in the repository
[X] question about how to use this project

Summary
I have just updated the Token Icon, links, and Mint Address. But unable to see changes in effect after 1+ Hours, neither in Solana Explorer nor in the wallet.
The list of changes made is listed in detail in this issue.
Considering that I have a few innocent questions:

How this project reflects on-chain data and allows edit access to these features on Solana.
How much time it usually takes for changes to take effect in explorer & wallets?
Are there any further steps needed to be performed in order for it to work properly?
Am I missing anything in the process?

Let me know if you need further details from me regarding changes.
My thanks & Regards.

https://github.com/solana-labs/token-list#scannerwallet-hasnt-updated-yet might help

It's updated @keone it just took a while. Thanks


DataFusion weekly project plan (Andrew Lamb) - Dec 25, 2023

Follow on to Dec 18 2023:
Boilerplate Overview
The idea of this ticket is make my plans for DataFusion visible, largely for my own personal organizational needs, but also to:

Try some different ways to communicate / coordinate in the community
Help provide an interesting summary of what is happening in DataFusion this week

It would be great if anyone else who has plans like this for DataFusion could try to make them visible somehow as well
My (personal) plans for this week

[ ] https://github.com/apache/arrow-datafusion/issues/8491
[x] Shepherd final Bloom Filter clean up PRs: https://github.com/apache/arrow-datafusion/pull/8442

Project Queue (list of future projects)

[ ] https://github.com/apache/arrow-datafusion/issues/6780
[ ] https://github.com/apache/arrow-datafusion/issues/8227 (specifically, https://github.com/apache/arrow-datafusion/issues/8078)

Projects I hope to help review and coordinate

[ ] Memory explosion in HashJoin outputs: https://github.com/apache/arrow-datafusion/issues/7848  from @korowa
[ ] Making function packages more modular: https://github.com/apache/arrow-datafusion/issues/8045
[ ] Improve planning speed https://github.com/apache/arrow-datafusion/issues/5637 (e.g with benchmarks https://github.com/apache/arrow-datafusion/issues/8638 )

Algorithm for (my) prioritizing PR reviews
Note there are many committers who can and review and merge PRs, so this is not the priorities of the project as a whole, just the approximate algorithm I am using
Priority:

Bug fixes (where something is just incorrect), especially regressions (where it used to work and now does not)
Improvements directly related to features needed for InfluxDB (my employer)
Documentation and test improvements (I view these as very strategically important)
PRs that I think are strategically important
Other new features / additions to functionality

The current strategically important projects in my head are:

Making function packages modular and easier to mix/match: https://github.com/apache/arrow-datafusion/issues/8045
Improving performance of high cardinality aggregation (I have dreams of working on this over Christmas break)

Thus, if you are interested in contributing to DataFusion and are interested in a fast turn around time I would recommend looking into bug fixes / test improvements / documentation / etc.
If you propose adding new functionality, the review cycle will likely be longer. You can make it a shorter cycle by looking at the comments on other recent PRs and following the same model (e.g. ensure there are tests in sqllogictest for example, the CI passes, includes documentation, etc)

DataFusion

[ ] https://github.com/apache/arrow-datafusion/pull/8562
[ ] https://github.com/apache/arrow-datafusion/pull/8558
[ ] https://github.com/apache/arrow-datafusion/pull/7581

DataFusion

[x] https://github.com/apache/arrow-datafusion/pull/8653
[x] https://github.com/apache/arrow-datafusion/pull/8654
[ ] https://github.com/apache/arrow-datafusion/pull/8562
[ ] https://github.com/apache/arrow-datafusion/pull/8558
[ ] https://github.com/apache/arrow-datafusion/pull/7581

DataFusion

[ ] https://github.com/apache/arrow-datafusion/pull/8658
[ ] https://github.com/apache/arrow-datafusion/pull/8562
[ ] https://github.com/apache/arrow-datafusion/issues/8668
[ ] https://github.com/apache/arrow-datafusion/pull/7581

DataFusion

[ ] https://github.com/apache/arrow-datafusion/pull/8675
[ ] https://github.com/apache/arrow-datafusion/pull/8669
[ ] https://github.com/apache/arrow-datafusion/pull/8667
[ ] https://github.com/apache/arrow-datafusion/pull/8562
[ ] https://github.com/apache/arrow-datafusion/pull/8636
[ ] https://github.com/apache/arrow-datafusion/pull/8659
[ ] https://github.com/apache/arrow-datafusion/pull/8664#issuecomment-1871219638
[ ] https://github.com/apache/arrow-datafusion/pull/7581
[ ] https://github.com/apache/arrow-datafusion/pull/8625#pullrequestreview-1797135821

Arrow

[ ] https://github.com/apache/arrow-rs/pull/5249

DataFusion

[x] https://github.com/apache/arrow-datafusion/pull/8695/files
[ ] https://github.com/apache/arrow-datafusion/pull/8672
[ ] https://github.com/apache/arrow-datafusion/pull/8562
[ ] https://github.com/apache/arrow-datafusion/pull/8636
[ ] https://github.com/apache/arrow-datafusion/pull/8659
[ ] https://github.com/apache/arrow-datafusion/pull/8664#issuecomment-1871219638
[ ] https://github.com/apache/arrow-datafusion/pull/7581
[ ] https://github.com/apache/arrow-datafusion/pull/8625#pullrequestreview-1797135821

Next up: https://github.com/apache/arrow-datafusion/issues/8704


Add new hpcSummary view with user queue rollup

Steps:

launch portal
open admin/hpc/hpcsummary

Expected behaviour:
There is an option or a view to see data rolled up by user. For example, in the detailed view we might see three rows for userid = 'demouser' with queue being tizard, short and bigmem. We want a view that combines all of these for the one user.
Actual behaviour:
This isn't available.

Done and pushed to dev branch.


Add WaitN to the multi-tenant RateLimiter

What this PR does:
Adds WaitN to the multitenant RateLimiter's interface. This is provided by the underlying rate.Limiter, so this is as simple as exposing it. See https://pkg.go.dev/golang.org/x/time/rate#Limiter.WaitN .
Copying the docs from there:

WaitN blocks until lim permits n events to happen. It returns an error if n exceeds the Limiter's burst size, the Context is canceled, or the expected wait time exceeds the Context's Deadline. The burst limit is ignored if the rate limit is Inf.

So this is useful when we don't want to directly error out and discard the task, but wait to adjust the pace.
Which issue(s) this PR fixes:
n/a
Fixes #
Checklist

[x] Tests updated
[ ] CHANGELOG.md updated - the order of entries should be [CHANGE], [FEATURE], [ENHANCEMENT], [BUGFIX]

Can you please add a changelog entry before merging?


Make stepContentView match parent width in stepContent

First, thanks for making everything protected and putting things in fine grained methods so it's very easy to extend and alter the behavior of this library.
I'm not sure if this is a bug or just an improvement, but I think that the individual stepContentViews should be just the width of their parent stepContent and not wrap it's contents which is the standard behavior with addView().
I suggest changing setUpStep(int stepNumber) to:
protected void setUpStep(int stepNumber) {
        LinearLayout stepLayout = createStepLayout(stepNumber);
        if (stepNumber < numberOfSteps) {
            // The content of the step is the corresponding custom view previously created
            RelativeLayout stepContent = (RelativeLayout) stepLayout.findViewById(R.id.step_content);
            // start new
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
            stepContent.addView(stepContentViews.get(stepNumber), params);
            // end new
        } else {
            setUpStepLayoutAsConfirmationStepLayout(stepLayout);
        }
        addStepToContent(stepLayout);
}

I have the same issue. Must use a full width of the step container.

@Benjoyo you mentioned the library is very easy to extend and modify, but unfortunately that has not been my experience. I attribute this to my shallow knowledge of java, but how do I implement your changes?
I tried creating my own class CustomVerticaStepperFormLayout, which extends VerticalStepperFormLayout, and overrided the setUpStep method. Unfortunately, the new method is not being called. The code for CustomVerticalStepperFormLayout is in this codeshare.
Within my code, I'm calling the builder method as follows:
   //This is a reference to the stepper widget inside my view.
    VerticalStepperFormLayout verticalStepperForm = findViewById(R.id.activate_tickets_stepper);

    // Setting up and initializing the form
    //mySteps: array of strings that represents title for steps
    CustomVerticalStepperFormLayout.Builder.newInstance(verticalStepperForm, mySteps, this, this)
            .showVerticalLineWhenStepsAreCollapsed(true)
            .materialDesignInDisabledSteps(true)
            .primaryColor(accentColor)
            .primaryDarkColor(primaryColor)
            .stepTitleTextColor(primaryColor)
            .displayBottomNavigation(false)
            .buttonPressedTextColor(accentColor)
            .init();

Any help would be greatly appreciated!

I finally figured out the problem! For those of you with the same issue, I simply replaced my widget with:
<com.example.testuser.testproject.CustomVerticalStepperFormLayout
android:id="@+id/activate_tickets_stepper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true" />
and replaced the VerticalStepperFormLayout object with CustomVerticalStepperFormLayout.

First of all, sorry for the immense delay in my response; after a long period of abandonment it is only recently that I have found the time to work on this library again.
Regarding the issue, this is now implemented in the new version of the library, so please go check it out if you are still interested.


Do not override misc env set before sourcing oh-my-zsh

Sourcing oh-my-zsh happens in zshrc, which will override settings of
profile and zshenv.  Treat misc values, PAGER and LESS, as default
settings without overriding existing values.
Fixes: #1, robbyrussell/oh-my-zsh#3016

:+1*

Thanks!

Thank you!
On Wed, Nov 16, 2016, 00:39 Marc Cornellà<EMAIL_ADDRESS>wrote:

Thanks!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/robbyrussell/oh-my-zsh/pull/5231#issuecomment-260806077,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEvdx-cyOGNa2XKgV3h0HAOJBPK1cw0lks5q-kKZgaJpZM4JM_Hj
.


Add BusKill

BusKill is a cross-platform, open-source hardware and software project that uses a hardware tripwire/dead-man-switch (a usb cable with a magnetic breakaway) to trigger your computer to lock or shutdown if the user is physically separated from their machine.

https://github.com/BusKill/buskill-app

Please consider adding a link to BusKill in your Physical access section, next to the mention of usbkill (which hasn't been updated in over 6 years).

Looks cool - @maltfield want to propose a PR with it and some section cleanup?

@drduh sure, please see PR:

https://github.com/drduh/macOS-Security-and-Privacy-Guide/pull/419

Nice! Thank you!


fix duplicate basis function selection in GLM & GEE mode

currently, some GEE and GLM models are erroring out because the same basis function is being selected at multiple steps of the feed-forward algorithm. oddly, this does not occur in all models, only a subset. this likely does not impact the GLMM mode due to the GLMM mode's downstream LASSO-based pruning of basis functions.

the hotfix i added in 621866e didn't actually fix the problem, so back to the drawing (read: debugging) board we go ...

fixed


Window.softinput_mode fix for "pan" and "below_target" modes when using kivy virtual keyboard.

Fixes inconsistent Kivy Virtual Keyboard display when using Window.softinput_mode = 'below_target'  or Window.softinput_mode = "pan", with the docked keyboard mode enabled.
Fixes: #7700

Maintainer merge checklist

[x] Title is descriptive/clear for inclusion in release notes.
[ ] Applied a Component: xxx label.
[ ] Applied the api-deprecation or api-break label.
[ ] Applied the release-highlight label to be highlighted in release notes.
[ ] Added to the milestone version it was merged into.
[ ] Unittests are included in PR.
[ ] Properly documented, including versionadded, versionchanged as needed.

Something unexpected is happening during runtime with click locations (See video)
Added some minor suggestions

I have to check the cause, but maybe you're more updated than me about this argument right now:
Screen.Recording.2022-01-16.at.18.51.09.mov
from kivy.config import Config
Config.set('kivy', 'keyboard_mode', 'systemanddock')

from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder

kv = """
BoxLayout:
    orientation: 'vertical'
    spacing: dp(20)
    TextInput:
        size_hint_y: None
        height: dp(45)
        hint_text: "input_type:null (default) and keyboard_suggestions: False"
        write_tab: False
        keyboard_suggestions: False
    TextInput:
        size_hint_y: None
        height: dp(45)
        hint_text: "input_type:null (default) and keyboard_suggestions: True"
        write_tab: False
        keyboard_suggestions: True
    TextInput:
        size_hint_y: None
        height: dp(45)
        hint_text: "input_type:text and keyboard_suggestions: False"
        write_tab: False
        input_type: 'text'
        keyboard_suggestions: False
    TextInput:
        size_hint_y: None
        height: dp(45)
        hint_text: "input_type:text and keyboard_suggestions: True"
        write_tab: False
        input_type: 'text'
        keyboard_suggestions: True
    BoxLayout:
        size_hint: 1, 1/2
"""

class Test(App):
    def build(self):
        Window.softinput_mode = 'below_target'
        return Builder.load_string(kv)

Test().run()

Fixed! Thanks!


Running logic within the provider based on external data source?

I have an old module written with Backbone which calculates some stuff periodically. There are some events when data changes. I need to glue this together with React components.
I can create provider with proper actions and reducers, but I don't like idea of creating a component that would essentially just dispatch update actions based on events. Sounds dirty to me.
However I suppose that I cannot really access dispatch within provider, can I?

You can access dispatch within a provider by using a store enhancer or by using the thunk middleware.  However, the recommended way to keep a provider's state in sync with external data sources is to create a replicator and use redux-replicate, which is really just a fancy store enhancer that handles the state initialization and updates for you.
I had to take a few weeks off from working on all of this, but I'm able to get back into it now.  I'm currently in the middle of making some pretty good changes, many of which were inspired by our discussion over in #11.  Hopefully by this weekend I'll have everything published.  The readmes and examples are getting a makeover as well, so those should hopefully be much better too!

Also, if you can show me an example of what exactly you need to do, I should be able to better help you solve the problem.  :)

Yes, I been looking over examples and spotted the enhancer. Sounds like a good way to go.
function createEnhancer(attributes) {
	return (next) => (reducer, initialState) => {
		const store = next(reducer, initialState);
		attributes.on('change', (attributeModel, changedProperty, newValue) => {
			store.dispatch(
				actions.update(attributeModel.get('id'), changedProperty, newValue)
			);
		});
		return store;
	};
}

Haven't tried it yet as I had to side track to something else, but looks like a good way to go.

@timbur, I have a question related to this:
I am looking to use replicators for managing state synchronisation between client/backend. I like the concept of not having actions know about any external API, and leave that responsibility to a "plug-and-play" replicator instead.
I can see how replicators are awesome for event-based, real-time syncing or in situations with localStorage, where you just replicate JSON or with the example from redux-replicate docs, where you just listen on updates via some socket connection.
But how would you solve listening for incoming data, when the API is completely pull-based?
Example:
Let's suppose I've set up a "notifications" provider. I want to mark a notification as "read".
Now, in my React component I have a button "Mark as read" which when clicked, will trigger the following flow:
1: Notification provider's action markAsRead(notificationId) is fired.
2: Notification reducer calculates state. e.g.:
case MARK_NOTIFICATION_AS_READ:
  return {
    ...state,
    ...[action.notificationId]: {
      ...state[action.notificationId],
      read: true
  }

3: Notification replicator fires onStateChange, which in turn fires the HTTP request. e.g.:
onStateChange(key, state, nextState, action) {
  // Does this switch even make sense? Feels like an odd approach.
  switch(action.type) {
    case MARK_NOTIFICATION_AS_READ:
       clientApi.post(`notifications/${action.notificationId}`, { read: true })
    break
  }
}

This is where it falls apart from me. How do I follow up on that async request? What if it fails? How do I "roll back" the state change. I don't have access to store.dispatch from within onStateChange.
What am I missing? Should replicators even be used for this scenario, or should the API calls happen in the actions instead as otherwise done in Flux?

@Anifacted I'll pass the store as the 5th argument in a patch.  That should solve your problem right?  Earlier versions of redux-replicate included the store but I was a dummy and forgot to include it with the latest version lol.
That said, the reason I forgot is actually because provide-page includes a Form component which makes it easy to trigger actions on both the client and server, while also allowing your app to function for users with JavaScript disabled.  So when using provide-page (and its Form component to trigger actions), you won't need to create a replicator for client-server communication.  Any replicator(s) will typically be used only for storing/retrieving data to/from your database and/or for real-time functionality via sockets.
But yeah it should definitely be possible to have custom client-server communication via replicators (especially for cases where you want to integrate with other services), so including the store as a 5th argument should solve any problems there.

Also, sorry for the delay.  I've been a bit under the weather lately so I haven't been running on all cylinders lol.  I am almost finished working out the kinks with everything and updating the boilerplates and examples.  And at which point I'll try to update everyone on best practices for all of this which should hopefully help out quite a bit.  I think building apps of any size and scale is about to get a lot easier.  😀

@timbur That makes things a lot easier, thanks! I figured that there was probably some deeper reasoning behind not exposing the store in this part of the lifecycle, and that it might be related to some conceptual ideal, hence I thought I was missing something fundamental about how replicators are supposed to work.
I am definitely not pro adding features in an ad-hoc manner whenever a specific need arises (which may be edge-casey), but if this does not break with any ideal pattern, then good thing it was caught 👍
And thank you for reacting quickly. No need to apologise for anything - I respect your efforts highly! Feel better soon! :)

Alrighty!  All of the replication stuff is basically finished now and the README is up to date and should hopefully contain all of the info needed to really integrate providers with external data sources.  Please let me know if you have any questions!


Feature request: better support for typing async imports

Currently, typescript has great support for ES6 style imports - e.g.
import * as $ from "jquery";

function doSomething(): void {
  $("#foo")...
}

typescript is able to know that "jquery" here is whatever defines the jquery module, and $ gets the type associated with jquery's exports.
However, if you try to async load code in typescript, it tends not to know the types.  E.g. in AMD, the following code would make sense:
function doSomethingAsync(): void {
  require(["jquery"], function($) {
    $("#foo")...
  });
}

but this leaves $ with the type any (and noImplicitAny would complain about this).  The options to handle this right now are:

use definition files.  Annoying because we end up with definition files for pure typescript, which presumably already declare all their types; it's a lot of unnecessary overhead.
leave code untyped / make the any explicit.
duplicate the types all over the place - e.g. here, declare the jquery type inline. This really isn't maintainable.
don't do async imports.  This is not really an option for large applications that care about performance.

While I've describe the situation for AMD, my understanding is that other forms of async module loading (such as conditional require() calls in commonjs) suffer the same problems.
note: unlike #3100 I am neither suggesting new syntax, or that typescript should handle loading async code in any way; I would just like to see it be able to strongly type such code as it already handles ES6-style imports, and leave the implementation details of module loading to actual module loaders like node.js or requirejs.

function doSomethingAsync(): void {
    let x = require(['jquery'], function ($) {
        $('#foo');
    });
}
declare function require(modules: ['jquery'], f: ($: JQueryStatic) => void);

Is not that much extra code to maintain. Module import syntax and semantics need to converge instead of having more variants supported by more tools. There are proposals to add new forms of imperative imports to ECMAScript. If that happens I imagine TypeScript would transpile these into corresponding syntax for the target module format.

@aluanhaddad but where does the JQueryStatic symbol come from?  I think it'd have to be a definition file.
And maybe jquery wasn't the best example.  Replace it with some pure typescript module, written with ES6 imports.  Importing it with require now needs a whole type definition file?  seems like a lot of added friction.

Module import syntax and semantics need to converge instead of having more variants supported by more tools

If by this you mean we should have a single way to do async imports, then sure, I can jump on board with that; but the fact remains there is no "es6+ async import" spec.  But as someone who writes code that targets the browser, we need a solution that can do both sync and async imports; wishing away async imports may work server side, but it's not a rational choice in the browser.

JQueryStatic comes from a file e.g. jquery.d.ts that you downloaded or installed via a package manager. It is the same file which provides the $ declarations which you use in non async import contexts. Of course that brings us directly to your second point.

And maybe jquery wasn't the best example. Replace it with some pure typescript module, written with ES6 imports. Importing it with require now needs a whole type definition file - for something that didn't need a definition file before? seems like a lot of added friction.

If the TypeScript file has exports we can use them just like we would from a declaration file. Even if it were a declaration file, TypeScript would retain imports for the corresponding module if we use any values from it in value position.
I agree there is an issue here but it is not really a TypeScript issue as much as an issue with ES Modules. ES Modules couple declaration and definition very heavily. I don't have a good solution.

By the way there are some proposals you may find of interest.
Nested import declarations
import()

If the TypeScript file has exports we can use them just like we would from a declaration file. Even if it were a declaration file, TypeScript would retain imports for the corresponding module if we use any values from it in value position.

I'm not totally clear what you mean by this.  Probably it'll be more clear with an example: let's suppose I have a file foo.ts which compiles to module foo that I want to async load:
foo.ts:
export function blah(a: A, b:B) : void {
  ...
}
export function blahblah(c: C, d: D): E {
  ...
}

And then within bar.ts I want to do something like:
require(["foo"], (foo) => {
  ...
})

Now I can manually type foo as {blah: (a: A, b: b) => void, blahblah: (c: C, d: D) => E} but this is ugly because now I'm completely re-specifying everything in foo, with no real check that this definition is accurate.  Also, unlike the jquery case, there's no existing JQueryStatic type I could reuse here.  I suppose I  could write a definition file for foo.ts, but this is a lot of redundant code.  Ideally, foo.ts should serve as it's own definition file (not sure if that's a thing yet?)
Anyhow, to be totally clear: I'm hoping for a solution soonish - probably before ES6 settles on any standardized way of doing things.  Fwiw, I looked over those two proposals - nested imports doesn't seem to address how to do them asynchronously, but import() and the await import idea discussed in it both sound like they could solve the problem.  But anyhow I don't have a great grasp on what the timeline for those proposals getting standardized / implemented is, so it seems like we should figure out how to make our current abstractions work?
With only minor additions of syntax to typescript, I guess what I would like to see would be something like this:
require(["foo", "bar"], function(foo: TypeOfModule("foo"), bar: TypeOfModule("bar")) {
  ...
});

Where we'd add this TypeOfModule builtin (open to better naming suggestions) that would take a string literal and return the type of the module it corresponds to - so TypeOfModule("foo") would result in the same type as Foo in import * as Foo from "foo";
Now I'll admit that I don't love what I'm suggesting because it means we end up duplicating our module names, and need to also check that the types of the arguments to the callback match the order of the module names in require's first arg; but this can be statically verified with TSLint or something similar.  This proposal seems to be the right tradeoff between "practical" (probably not hard to implement) and "doesn't suck to maintain code written like this" - though long term I'd hope for something better.
To do an even better job on AMD require, we'd need a way to express the constraint that if require's first argument (deps) is an array of string literals, the second argument should be a callback with type (...args: *deps.map(TypeOfModule)) => void where roughly the * means python-style tuple unpacking (so our variadic function can have specific types on each argument) and deps somehow magically references the first argument of require.  I suppose we could throw away the variadic-abilities and only support async loading a fixed number of modules at a time, but we still have the matter than even in the simple case of require(["a"], (a) => ...) the type of the second arg to require depends on the value of the first arg - which I believe isn't currently expressible in typescript, at least not without having special cases for every actual invocation.  But this all seems like a lot of complexity to add when an actual standardized async import spec looks to be coming within the next year.

I would add that implementing this would not be as simple as that, since it probably needs to work as a type operator, e.g.
load(moduleName:string): shapeof moduleName;

moreover, anything we do here will need to respect the module resolution logic we have today, and other commandline options paths, baseUrl, rootDirs, etc..
it is worth noting that given how the compiler is architected, this is not a trivial change.

sure, that's totally understandable - I'd definitely want it to use the
same module-resolution logic that already exists.
In my opinion it's a worthwhile change, since it fills a real need we have
to make types work well with module loading systems that aren't es6 imports

mainly since es6 imports don't yet solve all of our problems.  One day
hopefully they will, but if we can have some intermediate ground sooner it
would be much appreciated.

On Mon, Oct 17, 2016 at 2:41 PM Mohamed Hegazy<EMAIL_ADDRESS>wrote:

I would add that implementing this would not be as simple as that, since
it probably needs to work as a type operator, e.g.
load(moduleName:string): shapeof moduleName;
moreover, anything we do here will need to respect the module resolution
logic we have today, and other commandline options paths, baseUrl,
rootDirs, etc..
it is worth noting that given how the compiler is architected, this is not
a trivial change.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/TypeScript/issues/11611#issuecomment-254342656,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABBnd8zsuIrmgOW6LQRp0X8YY__dwWjuks5q0-tpgaJpZM4KWonR
.

Worth noting that there is a related proposal in TC39 for asynchronus imports, see https://github.com/domenic/proposal-dynamic-import.

wouldn't implementing the TC also require a lot of this work to happen?  what I'm hearing is that this isn't trivial because the module resolution code isn't properly abstracted / easy to use in another place; and any ES7+ async imports deal will have the same challenge during implementation, right?

yes. I am just adding a related topic.

@dgoldstein0 I really curious how often you run into this problem. I have spent a lot of time working on TypeScript + AMD and TypeScript + SystemJS projects. The only times when I found myself needing to write
require(['dep1', 'dep2', 'depN'], (dep1, dep2, depN) => {
  ...
});

or
Promise.all(['dep1', 'dep2','dep3'].map(dep => SystemJS.import(dep)))
  .then(([dep1, dep2, dep3]) => {
    ...
  });

were to load very specific, very large bundles. This was fairly rare (~3-4 times in a medium sized app) so the burden of manually typing them was not significant.
I am not saying my experience is representative, but I am curious how often this comes up.

That's a good question.  The general answer though is not enough - we have
a fairly large amd codebase - 2500 files, and I think over 1500 excluding
tests - and we have a rather large performance problem, which we are hoping
to solve by async loading more code.  So the answer is that we probably
have a few dozen async imports in our codebase, but I'm trying to push for
having a lot more, which is part of why I want to reduce friction to
writing them.
 I have spent a lot of time working on TypeScript

AMD and TypeScript + SystemJS projects. The only times when I found
myself needing to write

require(['dep1', 'dep2', 'depN'], (dep1, dep2, depN) => {
...
});
or
Promise.all(['dep1', 'dep2','dep3'].map(dep => SystemJS.import(dep)))
.then(([dep1, dep2, dep3]) => {
...
});
were to load very specific, very large bundles. This was fairly rare (~3-4
times in a medium sized app) so the burden of manually typing them was not
significant.
I am not saying my experience is representative, but I am curious how
often this comes up.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/TypeScript/issues/11611#issuecomment-255604992,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABBndxoQnIaTr8ff4ri4VCkR58udZ2pJks5q26b3gaJpZM4KWonR
.

More than two dozen explicit dynamic imports would a be a lot of XHRs from a production point of view.
I don't think your approach will improve performance during development if you are loading single files since the the api calls in the emitted JavaScript are already async on a per module dependency basis and get cached by RequireJS. This is really something that helps with bundles, otherwise, I believe you will just make your life harder. I say this especially because require returns void so you will end up using more callbacks and so on.

We are doing bundling too, and use a bunch of tricks parallelize module
loading too.  I'm extremely aware of AMD semantics.
For some context: The idea of our async loading is going to be for code
that's not immediately needed, and often never used.  Like for modals that
most users don't view on an average page load.  Currently these are almost
all synchronous dependencies so slow down time to initial interactivity,
which is extremely undesirable.
Anyhow as we do more async loading we'll definitely figure out more
optimizations to employ.  The request here is just to make it easy to async
load without having to jump through too many hoops to get the types correct.
On Wed, Oct 26, 2016, 2:55 AM Aluan Haddad<EMAIL_ADDRESS>wrote:

More than two dozen explicit dynamic imports would a be a lot of XHRs from
a production point of view.
I don't think your approach will improve performance during development if
you are loading single files since the the api calls in the emitted
JavaScript are already async on a per module dependency basis and get
cached by RequireJS. This is really something that helps with bundles,
otherwise, I believe you will just make your life harder. I say this
especially because require returns void so you will end up using more
callbacks and so on.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Microsoft/TypeScript/issues/11611#issuecomment-256301669,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABBnd_YaDGy20O12vLcQroORiI44PBvhks5q3yOHgaJpZM4KWonR
.

I believe the await import() support in typescript 2.4 solves this problem.  Haven't gotten around to using it yet (still on typescript 2.3 at the moment) but I'll reopen this issue if it doesn't.


build: build zip archive in parallel and in one pass

Use the apache compress library to zip in parallel
Avoid the temporary zip file and copy by adding the unknown files directly while building the apk

Notes:

It changes the exception types if one of the file is removed while we're generating the apk
It will conflict a bit with https://github.com/iBotPeaches/Apktool/pull/3410 i'll do the merge in one PR or the other if they are both accepted.

We've had a pattern over the last decade of adding apache compress, ripping it back out and here we are adding it back. I do like this idea of further parallelization, but now that its merged my focus will be digging into the exact reasons we ripped out apache compress to remember if we are approaching a similar mistake.
If you are up to rebasing this to the newer parallelization model - I believe it should mostly work.

Use the apache compress library to zip in parallel
Avoid the temporary zip file and copy by adding the unknown files directly while building the apk

Notes:

It changes the exception types if one of the file is removed while we're generating the apk
It will conflict a bit with https://github.com/iBotPeaches/Apktool/pull/3410 i'll do the merge in one PR or the other if they are both accepted.


Remove build types

Please review/test carefully as this touches a lot of places.
Fixes #129.

LGTM, tested it on several repos

LGTM


A Maze of Twisted Wormholes, None Alike

Issue:
Lots of broken wormholes: mine, Rob's, now Dave's.
Symptom:
wormhole send and wormohole receive return an error.
$ wormhole send
Traceback (most recent call last):
  File "/usr/bin/wormhole", line 11, in <module>
    sys.exit(wormhole())
  File "/usr/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/wormhole/cli/cli.py", line 182, in send
    from . import cmd_send
  File "/usr/lib/python2.7/site-packages/wormhole/cli/cmd_send.py", line 7, in <module>
    from twisted.internet import reactor
  File "/usr/lib64/python2.7/site-packages/twisted/internet/reactor.py", line 38, in <module>
    from twisted.internet import default
  File "/usr/lib64/python2.7/site-packages/twisted/internet/default.py", line 56, in <module>
    install = _getInstallFunction(platform)
  File "/usr/lib64/python2.7/site-packages/twisted/internet/default.py", line 44, in _getInstallFunction
    from twisted.internet.epollreactor import install
  File "/usr/lib64/python2.7/site-packages/twisted/internet/epollreactor.py", line 24, in <module>
    from twisted.internet import posixbase
  File "/usr/lib64/python2.7/site-packages/twisted/internet/posixbase.py", line 18, in <module>
    from twisted.internet import error, udp, tcp
  File "/usr/lib64/python2.7/site-packages/twisted/internet/tcp.py", line 28, in <module>
    from twisted.internet._newtls import (
  File "/usr/lib64/python2.7/site-packages/twisted/internet/_newtls.py", line 21, in <module>
    from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
  File "/usr/lib64/python2.7/site-packages/twisted/protocols/tls.py", line 63, in <module>
    from twisted.internet._sslverify import _setAcceptableProtocols
  File "/usr/lib64/python2.7/site-packages/twisted/internet/_sslverify.py", line 38, in <module>
    TLSVersion.TLSv1_1: SSL.OP_NO_TLSv1_1,
AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'

Fix:
http://stackoverflow.com/questions/42225773/install-scrapy-on-mac-successful-but-run-error
pip install Twisted==16.4.1
$ sudo pip install Twisted==16.4.1
Collecting Twisted==16.4.1
  Downloading Twisted-16.4.1.tar.bz2 (3.0MB)
    100% |████████████████████████████████| 3.0MB 406kB/s
Requirement already satisfied: zope.interface>=3.6.0 in /usr/lib64/python2.7/site-packages (from Twisted==16.4.1)
Requirement already satisfied: setuptools in /usr/lib/python2.7/site-packages (from zope.interface>=3.6.0->Twisted==16.4.1)
Requirement already satisfied: six>=1.6.0 in /usr/lib/python2.7/site-packages (from setuptools->zope.interface>=3.6.0->Twisted==16.4.1)
Requirement already satisfied: appdirs>=1.4.0 in /usr/lib/python2.7/site-packages (from setuptools->zope.interface>=3.6.0->Twisted==16.4.1)
Requirement already satisfied: packaging>=16.8 in /usr/lib/python2.7/site-packages (from setuptools->zope.interface>=3.6.0->Twisted==16.4.1)
Requirement already satisfied: pyparsing in /usr/lib/python2.7/site-packages (from packaging>=16.8->setuptools->zope.interface>=3.6.0->Twisted==16.4.1)
Installing collected packages: Twisted
  Found existing installation: Twisted 17.1.0
    Uninstalling Twisted-17.1.0:
      Successfully uninstalled Twisted-17.1.0
  Running setup.py install for Twisted ... done
Successfully installed Twisted-16.4.1
[dlwillson@intecrowd-vboxws ~]$ wormhole send
Text to send:

Notes:
Even though that fixed a box, I remain confused about the actual problem, because another box has Twisted (17.1.0) and it works fine. (i.e. no downgrade needed)

see also: https://github.com/scrapy/scrapy/issues/2473

Dave's fixed by downgrading Twisted and re-broke after upgrading Twisted.

On Mac OSX using pip, wormhole broke when upgraded from 0.9.1 to 0.9.2 (though I'm sure it's a dependency that caused the breakage).
sudo -H pip install --ignore-installed magic-wormhole (resulting in 0..9.2 installed)
This fixes it:
sudo -H pip install --ignore-installed twisted==16.6.0
I don't know what that does because pip list shows the same output before/after that command, including twisted 17.1.0.

Downgrading Twisted to v16 worked on Rob's machine, too.

That sounds like you have an older pyOpenSSL, and the newer Twisted requires a newer one. I don't think it's magic-wormhole specific.
Could you try running just python -c "from twisted.internet import reactor" on that box, in both the twisted-17.1.0 case and the downgraded case? If everything is happy, that command will exit without printing anything, but if it's unhappy, then it should fail with that same "AttributeError" traceback you saw from invoking magic-wormhole. If that's the case, then at least we've removed magic-wormhole from the potential home of the problem.
It looks like twisted-17.1.0 was the first release to have a hard requirement that pyOpenSSL provides SSL.OP_NO_TLSv1_1. Twisted-16.6.0 and earlier used getattr(SSL, "OP_NO_TLSv1_1", 0) and could survive if pyOpenSSL didn't have it. Twisted correctly declares its dependency on the newer pyOpenSSL, but maybe some version of pip isn't respecting that declaration.
Try this:
% python
> import OpenSSL
> print OpenSSL
> print OpenSSL.__version__
> [name for name in dir(OpenSSL.SSL) if name.startswith("OP_NO_")]

that should tell you where pyOpenSSL is being imported from, what version it is, and a full list of all the OP_NO_ symbols it provides. That might give us a clue as to what's broken about it. My hunch is that you've got something ancient like pyOpenSSL-0.13.
Installing magic-wormhole directly into /usr/ with sudo pip means you're either using or replacing the other python libraries up there too. I don't know whether pip will see the dependency and upgrade your system pyOpenSSL for you, or if it will ignore it (and then you get runtime errors like this).
In general, my recommendation is to install magic-wormhole (and other python applications) into a virtualenv, where pip can install everything you need without affecting the rest of your system. I haven't found a nice way to do this for multiple users though (e.g. installing it once in /usr/local vs installing it with pipsi into ~/.local/ for every user on that box). You might check out Glyph's presentation at the last PyCon on the subject: https://www.youtube.com/watch?v=5BqAeN-F9Qs .
If you can't do that, then my recommendation is to upgrade the dependencies, rather than downgrade Twisted. I haven't yet looked at everything magic-wormhole needs from Twisted to determine what the oldest version we can possibly use is, but my usual assumption (not necessarily a good one) is it's at least whatever version of Twisted was present when I made the release. So running against a significantly older Twisted might run into other problems. If you discover those, let me know and I'll make magic-wormhole correctly declare a dependency upon the newer one. But the result will be the same: more demands from pesky software asking you to upgrade everything :).

Thanks for the detailed explanation and link to the video. You're right that I have an old pyOpenSSL (0.13.1). Perhaps you could update your install instructions (for non-python developers) since pip install magic-wormhole wasn't very helpful to me.
I think I took two wrong turns trying to follow those directions. I used sudo. OK, I see that isn't a good idea. Because the Mac python install is protected from sudo, I used -ignore-installed and that results in getting a "successful" install that doesn't work.
So yeah, a virtualenv might solve my problem. But what I don't see (because the docs seem to be written for python developers) is, once I've installed wormhole in a virtualenv, where does my next python application go? Do I have to switch virtualenvs every time I want to run one or the other?
In the meantime, maybe installing python with homebrew allows me to use pip more easily. So I'll try that.

Perhaps magic-wormhole's dependencies ought to be updated to include twisted[tls]>=something?  twisted[tls] will unfortunately be satisfied even by versions of Twisted which don't include the tls extra, and pip install -U twisted sadly won't upgrade the TLS dependencies.

For what it's worth, this isn't really a bug in magic-wormhole, or indeed in twisted; it's actually a bug in Pip https://github.com/pypa/pip/issues/988 that, I believe, is being worked on by a GSoC intern this year.

I agree that this is a pip bug. So this issue could be closed.
My workaround was to install with homebrew, which saved me from pip and Apple's shipped python.

I'm happy to increase our twisted[tls] dependency to something versioned. Any recommendations on what version would provoke the right down(up?)stream dependencies?

We now depend upon twisted[tls] >= 17.5.0 (to ensure we've got access to an API that fixes #68). I think that ought to fix this as a side-effect. Closing it out.. thanks everyone for the help!


texture size limitation

is it possible to somehow hack the 1024x1024 texture limitation?
I'm currently using 2048x3040 and the tiles outside 1024x1024 is just ignored.

default mode in current (v5) implementation doesnt depend on that limitation.
As soon as you specify
PIXI.tilemap.Constant.boundCountPerBuffer = 4;

RMMV behaviour kicks in and starts combining 4 textures into one big.
There are other constants. Please look at them. In v4x its by default, but you can easily switch it off.

But then, of course, you need to raise number of used texture units.

well, what I'm trying is to change in atlas frame coordinates to out of 1024x1024 range:
  "collon7": {
    "frame": {"x":1728,"y":384,"w":32,"h":32},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
    "sourceSize": {"w":32,"h":32},
    "pivot": {"x":0.5,"y":0.5}
  }

If I do so, this frames just does not show up. Also, I put boundCountPerBuffer =4 in the very beginning of index file
import * as PIXI from 'pixi.js'
(window as any).PIXI = PIXI
PIXI.tilemap.Constant.boundCountPerBuffer = 4;

versions used:
    "pixi-tilemap": "^2.0.0",
    "pixi.js": "^5.1.5",

with
  "collon7": {
    "frame": {"x":992,"y":384,"w":32,"h":32},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
    "sourceSize": {"w":32,"h":32},
    "pivot": {"x":0.5,"y":0.5}
  }

and with:
  "collon7": {
    "frame": {"x":1024,"y":384,"w":32,"h":32},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32},
    "sourceSize": {"w":32,"h":32},
    "pivot": {"x":0.5,"y":0.5}
  }

this is the tilemap I'm using

boundCountPerBuffer =4

Default mode in v5 should work, you dont need that line.
Please make a demo for me, I'll look whats wrong.

This is the line that makes pixi-tilemap work with any textures: https://github.com/pixijs/pixi-tilemap/blob/master/src/Constant.ts#L7

And here is it in build: https://github.com/pixijs/pixi-tilemap/blob/master/dist/pixi-tilemap.js#L206
Well, it seems that I just forgot to publish the build :)

OK, I re-published it in dist folder, please take a "new" one. I dont know how did that happen.

А ты ещё на
https://t.me/gamedevforweb
https://t.me/web_gl
не добавлялся? :)

I have updated to 2.0.1 and it was finally solved when I added
PIXI.tilemap.Constant.boundCountPerBuffer = 1

If I change it to 4 then tiles that are out of 1024x1024 range would again be not visible

I have changed to 1 too. I render texture render amount to be 40876 and it breaks in the middle around 1xxxx in the webgl.

@jjhesk look in readme, it has special setting for uint32 stuff

thanks. i got it resolved @ivanpopelyshev


Reports missing Epoch telemetry when there are no marked regions

I just ran a test with geopmbench with the following config:
{"loop-count": 100,  "region": ["dgemm-unmarked"],  "big-o": [250.000000]}

In src/geopmbench_main.cpp, I commented out the calls to setup, enter, and exit "model-init".  I wanted to ensure there were no user marked regions in the code.
I ran with 1 rank and 42 OMP threads.  I was using the monitor:
geopmlaunch srun -N 1 -n 1 \
    --geopm-ctl=process \
    --geopm-report=dgemm_report \
    --geopm-trace=dgemm_trace \
    -- geopmbench dgemm_config.json

The report contains the following:
##### geopm 1.0.0+dev102g2e5e862 #####
Start Time: Fri Jan 09 13:58:57 1970
Profile: /home/bgeltz/build/geopm/bin/geopmbench
Agent: monitor
Policy: {}

Host: mcfly15
Region unmarked-region (0x00000000725e8066):
    runtime (sec): 103.48
    sync-runtime (sec): 103.431
    package-energy (joules): 28851.8
    dram-energy (joules): 2255.15
    power (watts): 278.947
    frequency (%): 94.9585
    frequency (Hz): 1.99413e+09
    mpi-runtime (sec): 0
    count: 0
Epoch Totals:
    runtime (sec): 103.377
    sync-runtime (sec): 0
    package-energy (joules): 0
    dram-energy (joules): 0
    power (watts): 0
    frequency (%): 0
    frequency (Hz): 0
    mpi-runtime (sec): 0
    count: 100
    epoch-runtime-ignore (sec): 0
Application Totals:
    runtime (sec): 103.49
    package-energy (joules): 28858.3
    dram-energy (joules): 2255.52
    power (watts): 278.852
    mpi-runtime (sec): 0
    ignore-time (sec): 0
    geopmctl memory HWM: 96368 kB
    geopmctl network BW (B/sec): 0

Note the absence of telemetry for the "Epoch Totals" aside from the runtime.
Other things I tried:

Calling geopm_prof_region for "model_init" but not calling enter or exit.  The problem persists.
#1 and calling enter then exit as the very next line of code.  The problem persists.  There is a tiny amount of runtime attributed to "model_region" and a count of 1.  There is no other data for this region or the Epoch.
Leaving src/geopmbench.cpp unaltered from dev, increasing ranks per node to 4, OMP_NUM_THREADS to 10, and dropping the big-O to 10.  With this configuration I'm seeing more interesting behavior:

Sometimes the epoch region has telemetry, sometimes it does not.  Here are the reports from 2 jobs I ran back to back from #3 above:
##### geopm 1.0.0+dev102g2e5e862 #####
Start Time: Fri Jan 09 14:59:57 1970
Profile: /home/bgeltz/build/geopm/bin/geopmbench
Agent: monitor
Policy: {}

Host: mcfly15
Region model-init (0x00000000644f9787):
    runtime (sec): 0.0227634
    sync-runtime (sec): 0.025455
    package-energy (joules): 6.56476
    dram-energy (joules): 0.587677
    power (watts): 257.897
    frequency (%): 133.384
    frequency (Hz): 2.80107e+09
    mpi-runtime (sec): 0
    count: 1
Region unmarked-region (0x00000000725e8066):
    runtime (sec): 17.4387
    sync-runtime (sec): 17.3989
    package-energy (joules): 4858.34
    dram-energy (joules): 364.284
    power (watts): 279.232
    frequency (%): 98.2754
    frequency (Hz): 2.06378e+09
    mpi-runtime (sec): 0
    count: 0
Epoch Totals:
    runtime (sec): 17.4018
    sync-runtime (sec): 0.025455
    package-energy (joules): 6.56476
    dram-energy (joules): 0.587677
    power (watts): 257.897
    frequency (%): 133.384
    frequency (Hz): 2.80107e+09
    mpi-runtime (sec): 0
    count: 100
    epoch-runtime-ignore (sec): 0
Application Totals:
    runtime (sec): 17.4742
    package-energy (joules): 4868.26
    dram-energy (joules): 365.053
    power (watts): 278.597
    mpi-runtime (sec): 0
    ignore-time (sec): 0
    geopmctl memory HWM: 99152 kB
    geopmctl network BW (B/sec): 0

Then:
##### geopm 1.0.0+dev102g2e5e862 #####
Start Time: Fri Jan 09 15:01:04 1970
Profile: /home/bgeltz/build/geopm/bin/geopmbench
Agent: monitor
Policy: {}

Host: mcfly15
Region model-init (0x00000000644f9787):
    runtime (sec): 0.0228891
    sync-runtime (sec): 0.0203346
    package-energy (joules): 5.36884
    dram-energy (joules): 0.511658
    power (watts): 264.025
    frequency (%): 133.343
    frequency (Hz): 2.8002e+09
    mpi-runtime (sec): 0
    count: 1
Region unmarked-region (0x00000000725e8066):
    runtime (sec): 17.4284
    sync-runtime (sec): 17.394
    package-energy (joules): 4856.98
    dram-energy (joules): 363.942
    power (watts): 279.232
    frequency (%): 98.2786
    frequency (Hz): 2.06385e+09
    mpi-runtime (sec): 0
    count: 0
Epoch Totals:
    runtime (sec): 17.3916
    sync-runtime (sec): 0
    package-energy (joules): 0
    dram-energy (joules): 0
    power (watts): 0
    frequency (%): 0
    frequency (Hz): 0
    mpi-runtime (sec): 0
    count: 100
    epoch-runtime-ignore (sec): 0
Application Totals:
    runtime (sec): 17.464
    package-energy (joules): 4865.7
    dram-energy (joules): 364.639
    power (watts): 278.613
    mpi-runtime (sec): 0
    ignore-time (sec): 0
    geopmctl memory HWM: 99148 kB
    geopmctl network BW (B/sec): 0

I'm still digging.  I see I got telemetry with the #3 config if there was some amount of sync-runtime.  I need to separate the multi-rank behavior from the single-rank behavior.

I just ran another experiment with --geopm-region-barrier passed to the launcher.  This was with 4 ranks, 10 threads, big-O set to 10.0.
There's 0 sync-runtime for the Epoch, and no telemetry.
It's intermittent though.  If I run enough times, I'll get one with telemetry.  The majority of the time, the telemetry besides the runtime is zero.  When I do get output, there's a teeny amount of sync-runtime:
Epoch Totals:
    runtime (sec): 17.4215
    sync-runtime (sec): 0.025474
    package-energy (joules): 6.70612
    dram-energy (joules): 0.584732
    power (watts): 263.253
    frequency (%): 133.336
    frequency (Hz): 2.80005e+09
    mpi-runtime (sec): 0
    count: 100
    epoch-runtime-ignore (sec): 0

This problem goes at back to at least the following commit:
e195b4e


Add Ability to Disable View Draggability

It would be nice to be able to make views which are currently draggable non-draggable. Maybe like this:
Current: public void setViewDraggable(View child, View dragHandle)
Possibe:  public void setViewDraggable(View child, View dragHandle, boolean isDraggable)

Add this method in class to disable view draggability. Then u can disable, throw by for loop every view in list
public void disableViewDraggable(View child, View dragHandle){
        if (null == child || null == dragHandle) {
            throw new IllegalArgumentException(
                    "Draggable children and their drag handles must not be null.");
        }
        if (this == child.getParent()) {
            dragHandle.setOnTouchListener(null);  //set null
            draggableChildren.delete(indexOfChild(child));
        } else {
            Log.e(LOG_TAG, child + " is not a child, cannot make draggable.");
        }
}


Actually use the safeFormatAndMounter...

Please don't merge yet, I need to run e2e...

ok, tests are passing.


feat: handle docker file sharing permissions on start-up

Description:

Related issue(s):
Fixes #818, #819
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

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

Project coverage is 63.49%. Comparing base (067415f) to head (9daa40a).

Files with missing lines
Patch %
Lines

src/services/DockerService.ts
0.00%
5 Missing :warning:

Additional details and impacted files

@@            Coverage Diff             @@
##             main     #830      +/-   ##
==========================================
- Coverage   63.72%   63.49%   -0.24%
==========================================
  Files          30       30
  Lines        1213     1219       +6
  Branches      145      146       +1
==========================================
+ Hits          773      774       +1
- Misses        419      424       +5
  Partials       21       21

Files with missing lines
Coverage Δ

src/constants.ts
100.00% <100.00%> (ø)

src/services/DockerService.ts
9.09% <0.00%> (-0.33%)
:arrow_down:


Rolling reduction with a custom function generates an excesive use of memory that kills the workers

What happened?
Hi, I have been trying to use a custom function on the rolling reduction method, the original function tries to filter the nan values (any numpy function that I have used that handles nans generates the same problem) to later apply some simple aggregate functions, but it is killing all my workers even when the data is very small (I have 7 workers and all of them have 3 Gb of RAM).
What did you expect to happen?
I would expect less use of memory taking into account the size of the rolling window, the simplicity of the function and the amount of data used on the example.
Minimal Complete Verifiable Example
import numpy as np
import dask.array as da
import xarray as xr
import dask

def f(x, axis):
    # If I replace np.nansum by np.sum everything works perfectly and the amount of memory used is very small
    return np.nansum(x, axis=axis)

arr = xr.DataArray(
    dask.array.zeros(
        shape=(300, 30000),
        dtype=float,
        chunks=(30, 6000)
    ),
    dims=["a", "b"],
    coords={"a": list(range(300)), "b": list(range(30000))}
)

arr.rolling(a=252).reduce(f).chunk({"a": 252}).to_zarr("/data/test/test_write", mode="w")

MVCE confirmation

[X] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
[X] Complete example — the example is self-contained, including all data and the text of any traceback.
[X] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
[X] New issue — a search of GitHub Issues suggests this is not a duplicate.
[ ] Recent environment — the issue occurs with the latest version of xarray and its dependencies.

Relevant log output
KilledWorker: Attempted to run task ('nansum-overlap-sum-aggregate-sum-aggregate-e732de6ad917d5f4084b05192ca671c4', 0, 0) on 4 different workers, but all those workers died while running it. The last worker that attempt to run the task was tcp://<IP_ADDRESS>:39937. Inspecting worker logs is often a good next step to diagnose what went wrong. For more information see https://distributed.dask.org/en/stable/killed.html.

Anything else we need to know?

I tried to run the example on a Jupyter notebook without using the Dask Cluster and it killed the kernel and I saw a big memory increase also. I also tried on another machine with 32 Gb of RAM (regularly I have like 16 Gb free) and it was able to process it but it consumed all the free memory, here is the result of the memory_usage function of the memory profiler package:
Memory usage (in chunks of .1 seconds): [246.31640625,<PHONE_NUMBER>5,<PHONE_NUMBER>, 1150.5390625, 1789.0078125, 1888.203125, 1511.92578125, 1296.50390625, 1565.1484375, 1823.390625, 2025.6875, 2304.3125, 2706.73828125, 3887.546875, 5178.89453125, 6193.85546875, 7219.06640625, 8253.33203125, 9304.140625, 10351.60546875, 11411.53125, 12410.203125, 13292.63671875, 13770.1953125, 13784.63671875, 13784.63671875, 13784.63671875, 13784.6171875, 13761.09375, 13761.09375, 13761.09375, 13761.09375, 13766.8203125, 13776.703125, 13601.1875, 13417.3125, 13283.19140625, 13276.8046875, 13218.0625, 13042.3515625, 12917.93359375, 12714.50390625, 12666.5546875, 12671.796875, 12712.88671875, 12767.6796875, 12801.01171875, 12589.9140625, 12485.4375, 12385.5, 12373.0, 12319.39453125, 12309.60546875, 12285.734375, 12330.01171875, 12458.54296875, 12606.453125, 12740.640625, 12845.2109375, 12883.2265625, 12990.2890625, 13096.703125, 13193.58984375, 13285.7421875, 13402.71875, 13513.7578125, 13645.5625, 12831.83203125, 11979.36328125, 11036.71875, 11119.0546875, 11300.5859375, 11449.26953125, 10326.234375, 9076.390625, 7625.1953125, 6399.33203125, 5302.48046875, 5043.8984375, 5375.59375, 5729.92578125, 6166.53515625, 6595.8671875, 7056.74609375, 6804.97265625, 5494.52734375, 4114.66015625, 2318.25, 1032.25,<PHONE_NUMBER>5,<PHONE_NUMBER>5]

It'll almost certainly die without dask.
rolling.contruct will

first copy the data to pad with NaNs
create a giant virtual view of that copy (no additional memory)
now apply your function. nan* functions tend to copy data, so this is a copy of the giant virtual array. That is what you're observing. Your f needs to be careful about copying its inputs.

What would be the correct way to avoid copying the giant virtual array? my original function is very similar to the standard rolling sum but with the difference that it has to sum only the last N valid values, with N < window_size.
I was thinking in using the map_overlap function of Dask to simulate the rolling, but I'm not sure if something like that would work.

3. nan* functions tend to copy data, so this is a copy of the giant virtual array.

Ah, thanks @dcherian , that explains the difference between the nansum & sum

What would be the correct way to avoid copying the giant virtual array? my original function is very similar to the standard rolling sum but with the difference that it has to sum only the last N valid values, with N < window_size.

Ideally you want to compose existing functions. If that's not possible, you could use numba, or even run in a python loop over each item (which would be very slow but would finish).
I think the xarray question is answered so I'll close...

@max-sixty Sorry for bothering you with this closed issue, but I have tried to use Numba and also tried to run a simple Python loop but none of them works as expected if I'm using Dask (if I just use a regular Numpy array the memory use is normal), do you know if I'm doing something wrong? or do you think that it can be an error on Dask side?
Functions tested:
import numbagg as nba
import numpy as np
import numba as nb

def f(x, axis):
    def _f(x, axis):
        return nba.nansum(x, axis=axis)
    # Trying to use map blocks instead of apply along axis to see if there is any difference
    arr = x.map_blocks(_f, dtype=float, axis=axis, drop_axis=axis)
    return arr

def f(x, axis):
    # Using numba nansum directly with dask apply along axis
    return da.apply_along_axis(func1d=nb.nansum, arr=x, axis=axis, dtype=x.dtype)

def f(x, axis):
    return da.apply_along_axis(func1d=np.nansum, arr=x, axis=axis, dtype=x.dtype)

def f(x, axis):
    # Using numbagg nansum directly with dask apply along axis
    return da.apply_along_axis(func1d=nba.nansum, arr=x, axis=axis, dtype=x.dtype)

Can you get it to work on a small array without dask?
If you want to have a custom function we'll likely need to write it in numba, unless we can compose it from existing functions.
We want a function that takes an array+window and returns an array, so it doesn't need to run for each position in the array.
For example, move_nan_sum is the function in numbagg for calculating a moving sum — it runs once over an sequence.
Does that make sense at all?

Yes, I can make it work with small arrays without Dask, I replaced the Dask arrays with Numpy arrays and used the Numbagg nansum function and everything went well in terms of memory use (even the example that I sent uses 10x less memory).
Yes, that makes sense, thanks for the explanation. Now that I see it, it is a little bit harder to implement custom functions with the reduction function (at least for me). If this is useful for someone else I think that using the map_overlap function of Dask is a good workaround to some of the rolling functionalities (like the sum that can be converted into a cumsum with the map overlap), for me, it solved the memory issue and also made faster some specific calculations like the sum.


Use L1 data-transport-layer  have error

.env config file:
SYNC_SOURCE=l1
FAULT_DETECTOR__L1_RPC_PROVIDER=http://13.213.5.:8545
DATA_TRANSPORT_LAYER__RPC_ENDPOINT=http://13.213.5.:8545
ethereumoptimism/data-transport-layer:latest have error:
dtl_1             | {"level":50,"time":1670923715489,"extra":{"message":"TypeError: Cannot read properties of null (reading 'from')","stack":"TypeError: Cannot read properties of null (reading 'from')\n    at Object.getExtraData (/opt/optimism/packages/data-transport-layer/dist/src/services/l1-ingestion/handlers/sequencer-batch-appended.js:27:38)\n    at runMicrotasks ()\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at async L1IngestionService._syncEvents (/opt/optimism/packages/data-transport-layer/dist/src/services/l1-ingestion/service.js:277:39)\n    at async L1IngestionService._start (/opt/optimism/packages/data-transport-layer/dist/src/services/l1-ingestion/service.js:156:17)\n    at async L1IngestionService.start (/opt/optimism/packages/common-ts/dist/base-service/base-service.js:33:9)\n    at async Promise.all (index 1)\n    at async L1DataTransportService._start (/opt/optimism/packages/data-transport-layer/dist/src/services/main/service.js:69:13)\n    at async L1DataTransportService.start (/opt/optimism/packages/common-ts/dist/base-service/base-service.js:33:9)\n    at async /opt/optimism/packages/data-transport-layer/dist/src/services/run.js:78:9"},"msg":"Caught an unhandled error"}
How can I solve this problem？？ optimism is the chain that takes me the most time!! 😭😭😭😭
Always unable to provide services。

This usually means there's an issue with your L1 RPC endpoint. Are you running Geth? Have you confirmed that the L1 RPC is working as expected?

Hi !
I also have an issue with syncing from L1. It's not from the dtl but from. default detector and healthcheck. Somehow they don't work at all. I changed multi L1 RPCs and can confirm they worked normally.
simple-optimism-node-healthcheck-1     | {"level":50,"time":1670967611269,"msg":"target client not connected"}
simple-optimism-node-healthcheck-1     | {"level":50,"time":1670967616272,"msg":"target client not connected"}
simple-optimism-node-healthcheck-1     | {"level":30,"time":1670967617218,"log":"<IP_ADDRESS> - GET /metrics HTTP/1.1 200 - - 6.397 ms\n","msg":"server log"}
simple-optimism-node-healthcheck-1     | {"level":50,"time":1670967621278,"msg":"target client not connected"}
simple-optimism-node-healthcheck-1     | {"level":50,"time":1670967626284,"msg":"target client not connected"}
^[^Gsimple-optimism-node-healthcheck-1     | {"level":50,"time":1670967631289,"msg":"target client not connected"}
simple-optimism-node-dtl-1             | {"level":30,"time":1670967631827,"eventName":"SequencerBatchAppended","numEvents":41,"durationMs":46970,"msg":"Processed events"}
simple-optimism-node-healthcheck-1     | {"level":30,"time":1670967632218,"log":"<IP_ADDRESS> - GET /metrics HTTP/1.1 200 - - 6.374 ms\n","msg":"server log"}
simple-optimism-node-fault-detector-1  |
simple-optimism-node-fault-detector-1  | ><EMAIL_ADDRESS>start
simple-optimism-node-fault-detector-1  | > ts-node ./src/service.ts
simple-optimism-node-fault-detector-1  |
simple-optimism-node-fault-detector-1  | {"level":30,"time":1670967635114,"msg":"starting app server"}
simple-optimism-node-fault-detector-1  | {"level":30,"time":1670967635130,"port":7300,"hostname":"<IP_ADDRESS>","msg":"app server started"}
simple-optimism-node-fault-detector-1  | {"level":30,"time":1670967635130,"msg":"initializing service"}
simple-optimism-node-fault-detector-1  | /opt/optimism/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger/src.ts/index.ts:269
simple-optimism-node-fault-detector-1  |         const error: any = new Error(message);
simple-optimism-node-fault-detector-1  |                            ^
simple-optimism-node-fault-detector-1  | Error: could not detect network (event="noNetwork", code=NETWORK_ERROR, version=providers/5.7.1)
simple-optimism-node-fault-detector-1  |     at Logger.makeError (/opt/optimism/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger/src.ts/index.ts:269:28)
simple-optimism-node-fault-detector-1  |     at Logger.throwError (/opt/optimism/node_modules/@ethersproject/providers/node_modules/@ethersproject/logger/src.ts/index.ts:281:20)
simple-optimism-node-fault-detector-1  |     at JsonRpcProvider.<anonymous> (/opt/optimism/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:483:23)
simple-optimism-node-fault-detector-1  |     at step (/opt/optimism/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
simple-optimism-node-fault-detector-1  |     at Object.throw (/opt/optimism/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
simple-optimism-node-fault-detector-1  |     at rejected (/opt/optimism/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
simple-optimism-node-fault-detector-1  |     at processTicksAndRejections (node:internal/process/task_queues:96:5) {
simple-optimism-node-fault-detector-1  |   reason: 'could not detect network',
simple-optimism-node-fault-detector-1  |   code: 'NETWORK_ERROR',
simple-optimism-node-fault-detector-1  |   event: 'noNetwork'
simple-optimism-node-fault-detector-1  | }
simple-optimism-node-fault-detector-1  | npm ERR! Lifecycle script `start` failed with error:
simple-optimism-node-fault-detector-1  | npm ERR! Error: command failed
simple-optimism-node-fault-detector-1  | npm ERR!   in workspace<EMAIL_ADDRESS>simple-optimism-node-fault-detector-1  | npm ERR!   at location: /opt/optimism/packages/fault-detector
simple-optimism-node-fault-detector-1 exited with code 1

p/s : L2 syncing work normally
Do you have any suggestions ?
Thanks

yes, i running Geth is the latest version. All other chains are connected to geth.for example: polygon ，There is no problem。
I really don't know how to set Optimism to synchronize from L1
@smartcontracts
If I synchronize from l2(with alchemy), an error will be reported after the synchronization is completed：
Synchronizing unconfirmed transactions from Layer 2 (Optimism)

Ah fault detector and healthcheck will report errors when the L2 client isn't open to requests yet. I need to fix that...


Babel, IE and JS dependencies

[x] Use Babel to be able to support ES6 feature on IE.

JS Minifier tool comparison in our example:

Tool
File size (in comparison to the original file)

[reference]
162Ko

terser
120.6Ko (-25%)

babel-minify
96.4Ko (-40%)

babel-minify gives slightly better results.

Babel seems to do perfectly the job.
Without it, the current state of this project doesn't work on IE11 (for example because of the use of default parameters, etc.). With it, it works directly.
I think we should go on in this direction, and use widely ES6.

I didn't measured any performance lost using the webots.min.js produced by Babel. It is certainly safe and for sure simpler to use it everywhere as-is.

I only have issues with the EC6 Array.includes() function on IE11. Babel propose to install the polyfill module to support this, but I have issues with its installation. As we are using this only twice, I think we could avoid this EC6 feature.

I think this PR gives a good basis to go on with this project.
I didn't tried to merge JS dependencies into a single one yet.
Once merged, we could adopt EC6 features (like the classes :-)) in other PR (probably one PR per feature).

👍

This Makefile when invoked twice in a row seems to repeat useless operations and is very verbose (tested on Windows)

I think I also solved this:
I use now a standard npm "package.json" to define the required dependencies (this allow to have a better control on them, like to define which version we would like,  and on future Babel presets if any, and to remove the warnings mentioned above).
The remaining stdout is also removed (by the "silent" argument, and by piping stdout to /dev/null).
I also solved the Array.includes issue I have yesterday (I understood how to include Babel's polyfill correctly.

👍

👍

I am now fully satisfied with the behavior of this Makefile. May I let you check it?

It's working as expected, better than before, thank you.
@stefaniapedrazzi Could you also check this PR? I think it's an important stage we should all agree.

test me

Build Passed :ok_hand:
You can safely merge 'enhancement-threejs-dependencies' into 'feature-threejs-in-webotsjs'.


openapi spec

Current dependencies on/for this PR:

main

PR #20   👈

This stack of pull requests is managed by Graphite.


Couldn't install distrobox container first time at phase 4

setup.log
Also, a comment that scripts failed a few times at "Running steam once to generate startup files.", after it had reinstalled Steam each time, eventually I realised that I had to quit the instance of Steam that had autolaunched and relaunch Steam.

Please download latest version from this repo and try again, there were a lot of changes and it might work now (or say why it didn't work)

Open new issue if you still can't get it to work


cart.on 'checkout' event order problem

I have a simple site that has 2 products.  These products are sometimes sold by deal sites and redeemed through our site using a discount code.
I have created a process to check for these "free" items, amount = 15.99 and discount_amount = 15.99 and if subtracting those <= 0.00 it processes those free items and removes from cart on checkout.
Problem is that often the cart will still try to push all of those products to paypal and it appears that in those instances, the cart.on checkout is never fired.
Here is my code:
paypal.minicart.cart.on('checkout', function(evt) {
	$('.minicart-submit').hide();
	$('Please Wait...').insertBefore('.minicart-submit');

    var products = paypal.minicart.cart.items();
    var freeProducts = new Array();
    for (var i = 0; i < products.length; i++) {
        if (parseFloat(products[i]._data.amount) == parseFloat(products[i]._data.discount_amount)) {
            alert('Adding free product: '+products[i]._data.item_number);
            freeProducts.push(products[i]);
            paypal.minicart.cart.remove(i);
        }
    }
    alert('sending '+freeProducts.count+' for processing');
    processCart(freeProducts);
    evt.preventDefault();
    return false;

});

We are launching a Living Social deal in about 5 days and I have spent hours trying to figure this out.
please help! :)
Thanks in advance,
Jason

Check out my comment on the issue: https://github.com/jeffharrell/minicart/issues/239

Thanks to the PR from @jakeday this should be fixed as part of 3.0.6.


Fix #3 add a way to customize http client timeout

NB: you could merge this after #5 in order to avoid rebase.

this PR target thr following commit only: 237ed060f4e74340093d6d9f75db84b7027b6746
Fix #3 add a way to customize http client timeout

Looks good to me for now. I might add it as a constructor parameter eventually, especially if more options get added. I'm thinking adding an options object after returnClasses. We'll see. For now I'm happy with this PR!


Add numeric value of colors to color palette in sprite editor

Having something like this would help in teaching students how they can use the numeric representation of a color, instead of having to pick it out of list.

Specifically, this can come into play a lot when dealing with things like choosing a random color by obtaining a random value between 1 and 15, so that when they come across something like that it doesn't seem quite as foreign to them.

@samelhusseini what are your thoughts on this? The idea is for the sprite editor to show the index of each color superimposed over the palette. Right now you can get the info by hovering over the color but that's pretty hidden.
Personally I'm not a fan of the two-tone font approach and wonder if there is a different way to do it. Maybe a cutout of the color swatch with the number:

Okay, fine with me!

Looks a little cluttered in practice. Let's discuss this at the design meeting this week.

We decided to not to do this in the UI meeting.


Improving codecov

Codecov Report

Merging #48 (7ccfd87) into main (a051153) will increase coverage by 36.28%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##            main      #48       +/-   ##
==========================================
+ Coverage   0.00%   36.28%   +36.28%
==========================================
  Files         36       36
  Lines       1651     1651
==========================================
+ Hits           0      599      +599
+ Misses      1651     1052      -599

Impacted Files
Coverage Δ

solo/utils/dali_dataloader.py
0.65% <0.00%> (+0.65%)
:arrow_up:

solo/args/utils.py
4.16% <0.00%> (+4.16%)
:arrow_up:

solo/methods/dali.py
5.15% <0.00%> (+5.15%)
:arrow_up:

solo/args/dataset.py
9.09% <0.00%> (+9.09%)
:arrow_up:

solo/utils/classification_dataloader.py
13.33% <0.00%> (+13.33%)
:arrow_up:

solo/methods/linear.py
18.00% <0.00%> (+18.00%)
:arrow_up:

solo/methods/simclr.py
24.19% <0.00%> (+24.19%)
:arrow_up:

solo/methods/swav.py
24.70% <0.00%> (+24.70%)
:arrow_up:

solo/args/setup.py
25.00% <0.00%> (+25.00%)
:arrow_up:

solo/methods/nnclr.py
25.00% <0.00%> (+25.00%)
:arrow_up:

... and 26 more

Continue to review full report at Codecov.

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


6006 metadata inconsistencies if owner assignment fails because of table movement

This closes #6006.

@Kartones CR this, please (last test failed only because test organization name collision).

:+1:


Wrong trash cost in search results

In search results displayed as a checklist, the trash cost of the Revised Core Set's Snare! is displayed as 6, rather than 0. It is correct in the card data, and it is displayed correctly on the card page and in search results displayed as spoilers.

Oh that’s interesting. Thanks so much! I’ll look into it.

How peculiar! The card data shows the right cost.
https://github.com/Alsciende/netrunner-cards-json/blob/master/pack/core2.json#L1773

Can't reproduce this on my local instance.

There was an error in the database which I have corrected, fixing this issue. I don't know where the error came from (RevCore Snare! having strength 6), so I can't promise future errors like it won't pop up but the fix was relatively easy, so I'll close this as fixed.

Cool. I was going to theorise that the database had a strength or agenda point value. I'll keep an eye out for any other weird things.
Maybe the database should have some validation ensuring that those values can only be set if it's a valid card type?

That's a goal of mine, but I don't know enough about how the overall system works yet to make any real suggestions on implementation. If you know anything about PHP, I'd love to hear your thoughts!


Upgrade lib-ui and switch to imported usePaginationState and useSortState

Blocked by https://github.com/konveyor/lib-ui/pull/50. Will also need to resolve #399 in the process.

closing as new development is moving to:
https://github.com/kubev2v/forklift-console-plugin


Chess: Move C7 to C3

Please do not change the title. Just click "Submit new issue". You don't need to do anything else :D

@tmchuynh done! Successfully played move c7c3 for current game.
Thanks for playing!


Is the max seq len constraint not respected if postpend EOS or prepend static is enabled?

@Oufattole, how is this accounted for currently? Couldn't the current code have an issue with this?

This was only partially true -- the EOS case was handled by a resolver, but that is likely erroneous, and will be captured in #99