Windows containers: Affinity assistant doesn't work as there's no Windows nop image

Expected Behavior
Affinity assistant should work when using tasks running on Windows with workspaces.
Actual Behavior
Affinity assistant doesn't work when using tasks running on Windows with workspaces as there's no Windows image for gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/nop (not for 0.31, 0.30 and 0.29).
Steps to Reproduce the Problem

Deploy the following pipeline

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
  name: hello-world
spec:
  pipelineSpec:
    workspaces:
      - name: workdir
    tasks:
      - name: task-win
        workspaces:
          - name: workdir
            workspace: workdir
        taskSpec:
          workspaces:
            - name: workdir
              mountPath: /workdir
          steps:
            - name: hello-windows
              image: mcr.microsoft.com/windows/nanoserver:1809
              command: ["cmd", "/c"]
              args: ["echo", "Hello from Windows Container!", ">", "C:\\workdir\\test.txt"]
      - name: task-lin
        runAfter:
          - task-win
        workspaces:
          - name: workdir
            workspace: workdir
        taskSpec:
          workspaces:
            - name: workdir
              mountPath: /workdir
          steps:
            - name: hello-linux
              image: alpine
              command: ["cat"]
              args: ["/workdir/test.txt"]

  workspaces:
    - name: workdir
      volumeClaimTemplate:
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: azurefile-csi
          resources:
            requests:
              storage: 1Gi

  taskRunSpecs:
    - pipelineTaskName: task-win
      taskPodTemplate:
        nodeSelector:
          kubernetes.io/os: windows  # runs on Windows
        securityContext:
          windowsOptions:
            runAsUserName: "ContainerAdministrator"
    - pipelineTaskName: task-lin
      taskPodTemplate:
        nodeSelector:
          kubernetes.io/os: linux  # runs on Linux

Check the event of the affinity assistant pod created on the Windows node:

Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  2m52s                default-scheduler  0/2 nodes are available: 2 pod has unbound immediate PersistentVolumeClaims.
  Normal   Scheduled         2m50s                default-scheduler  Successfully assigned default/affinity-assistant-4c53d012cf-0 to akswin1000000
  Normal   Pulling           89s (x4 over 2m49s)  kubelet            Pulling image "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/nop:v0.30.0@sha256:89cb4d5572372c7ade6b20b59bf35dc9dcd5e4cde2fa77f14888d4f7059cd767"
  Warning  Failed            89s (x4 over 2m49s)  kubelet            Error: ErrImagePull
  Normal   BackOff           53s (x7 over 2m48s)  kubelet            Back-off pulling image "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/nop:v0.30.0@sha256:89cb4d5572372c7ade6b20b59bf35dc9dcd5e4cde2fa77f14888d4f7059cd767"

Additional Info

Kubernetes version:
Output of kubectl version:

Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"clean", BuildDate:"2021-12-16T11:41:01Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-18T19:30:35Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}

Tekton Pipeline version: v0.30.0

According to https://github.com/tektoncd/pipeline/pull/3996 the nop image should be built for Windows as well.
My workaround currently is to disable the affinity assistant:
kubectl patch cm feature-flags -n tekton-pipelines -p '{\"data\": {\"disable-affinity-assistant\": \"true\"}}'

cc @imjasonh @aiden-deloryn who worked on that :)

Thanks a lot for the quick addressing! Really impressed.


Use SWF for async tasks/workflows

This commit adds support for using SWF to run asynchronous tasks and
workflows using the botoflow library. This commit includes stubbed out
functionality for handling and kicking off what could be basic tasks for
processing image uploads.
The click library is used for building a command line client for
starting activity and decider workers that process jobs as they come
in.
An SWF domain is created for developers for development and a single
activity and decider worker is started with docker compose.
Testing

follow setup instructions (ensuring an AWS profile for raster-foundry is configured)
run vagrant provision
ssh into vagrant machine
start server with ./scripts/server and wait for services to start
once services are started, in another console kick off an SWF job with ./scripts/console app-tasks-decider "rf process_image abc.tif" and observer output
log in to AWS console and browse to the SWF dashboard, select your domain, and check to see that the job was marked as a success

Notes
We've used SWF in the past with mixed success. While SWF has many desirable features, the developer and debugging experience has been less than stellar for some of the following reasons.

required to use an unfamiliar language (ruby or java)
poor console/admin interface

However, there are many attractive features that suggest it would be an appropriate choice for Raster Foundry that include the following:

a new, python based framework for SWF under the boto project
better CloudWatch metrics and dashboards that could make it easier
the ability to version jobs to make blue-green deployments easier
ability to pin jobs to a particular machine by using task lists

There are some additional risks associated with SWF or things we'll need to deal with:

botoflow is not fully stable yet, though the maintainer doesn't see any major refactors coming up
we would have to come up with a better way to view running jobs, potentially replacing some parts of the AWS console with our own console.

This PR I think demonstrates what we would want as a bare minimum for any framework -- the ability to start up workers to process jobs that are kicked off simultaneously. The fact that it is in python, follows an execution model we already know, and avoids the task of figuring out how to maintain state for workflows makes this particularly attractive as well.

This looks pretty good to me; one question I had was whether it's possible to keep a chain of activities on a particular worker, but the botoflow docs have an example of using dynamic task lists to keep all of the activities in a workflow on the same worker, so it looks like that will probably do what we need.


Fix typing errors in filtertree_data.py

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 6

Complexity increasing per file
==============================
- varats/data/filtertree_data.py  2

Clones removed
==============
+ varats/data/filtertree_data.py  -2

See the complete overview on Codacy


Ignore unexpected frames instead of dying

Following the spec we should ignore things we don't expect/understand instead of failing hard. This commit also makes the logging better in these cases.
This is needed as reactivesocket-java in fact sends a RESPONSE(complete) after each subscription frame, see https://github.com/ReactiveSocket/reactivesocket-java/issues/226.

Note that this follows the Java impl and is allowed by the spec:

An implementation MAY send an ERROR frame (with CONNECTION_ERROR error code) and close the underlying transport connection on reception of a frame that it does not understand with this bit not set.


chore(Algebra/Order/Hom/Basic): remove outParam

Remove unedeed outParam.

I have no idea why I cannot remove more outParam. For example, if I remove the second outParam in
/-- `NonArchimedeanHomClass F α β` states that `F` is a type of non-archimedean morphisms. -/
class NonArchimedeanHomClass (F : Type _) (α β : outParam (Type _)) [outParam (Add α)]
  [outParam (LinearOrder β)] extends FunLike F α fun _ => β where
  /-- the image of a sum is less or equal than the maximum of the images. -/
  map_add_le_max (f : F) : ∀ a b, f (a + b) ≤ max (f a) (f b)

I get an error ("function expected at f term has type F") in
@[to_additive]
theorem le_map_mul_map_div [Group α] [CommSemigroup β] [LE β] [SubMultiplicativeHomClass F α β]
    (f : F) (a b : α) : f a ≤ f b * f (a / b) := by
  simpa only [mul_comm, div_mul_cancel'] using map_mul_le_mul f (a / b) b

even if this theorem seems unrelated to NonArchimedeanHomClass.

@riccardobrasca, let's merge what can be merged for now. Can you post on zulip with the error? If you feel like trying to minimize it that would be helpful. Quite possibly this is a Lean 4 bug.


[e2e]: container schedule main default slsa3

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3326111727
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.container.schedule.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.container.schedule.main.default.slsa3.yml
Trigger: schedule
Branch: main
Date: Wed Oct 26 04:11:14 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3334412498
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.container.schedule.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.container.schedule.main.default.slsa3.yml
Trigger: schedule
Branch: main
Date: Thu Oct 27 04:09:05 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3334412498
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.container.schedule.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.container.schedule.main.default.slsa3.yml
Trigger: schedule
Branch: main
Date: Mon Oct 31 21:11:08 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3334412498
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.container.schedule.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.container.schedule.main.default.slsa3.yml
Trigger: schedule
Branch: main
Date: Mon Oct 31 21:29:34 UTC 2022

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/3365233020
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.container.schedule.main.default.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.container.schedule.main.default.slsa3.yml
Trigger: workflow_dispatch
Branch: main
Date: Mon Oct 31 22:36:50 UTC 2022
Tests are passing now. Closing this issue.


Using gesture to get to a previous page leads to exceptions

Steps to reproduce:

Open an example app provided in the repo
Tap login
Use the left side of the app to drag it "backwards"
Here it is, app is broken and unusable

OSes
This issue was reproduced in an example app, using chrome.
In my app it also reproduces with at least Mac OS.
Stacktrace looks something like and repeats many many times:
Error: Cannot hit test a render box that has never been laid out.
The hitTest() method was called on this RenderBox: RenderErrorBox#02fd0 NEEDS-LAYOUT NEEDS-PAINT:
  creator: ErrorWidget-[#7516c] ← Navigator-[LabeledGlobalKey<NavigatorState>#f09f1] ← Builder ← VNavigatorObserverBuilder ← RootVRouterData ← NotificationListener<VWidgetGuardMessageRoot> ← Builder ← _RouterScope ← UnmanagedRestorationScope ← Router<Object> ← IconTheme ← IconTheme ← ⋯
  parentData: <none>
  constraints: MISSING
  size: MISSING
Unfortunately, this object's geometry is not known at this time, probably because it has never been laid out. This means it cannot be accurately hit-tested.
If you are trying to perform a hit test during the layout phase itself, make sure you only hit test nodes that have completed layout (e.g. the node's children, after their layout() method has been called).

App behaves correctly if navigation bar is used instead of gestures

Test code sample (the one of VRouter pub.dev example)

import 'package:flutter/material.dart';
import 'package:vrouter/vrouter.dart';

void main() {
  runApp(
    VRouter(
      debugShowCheckedModeBanner: false, // VRouter acts as a MaterialApp
      mode: VRouterMode.history, // Remove the '#' from the url
      logs: VLogs.info, // Defines which logs to show, info is the default
      routes: [
        VWidget(
          path: '/login',
          widget: LoginWidget(),
          stackedRoutes: [
            ConnectedRoutes(), // Custom VRouteElement
          ],
        ),
        // This redirect every unknown routes to /login
        VRouteRedirector(
          redirectTo: '/login',
          path: r'*',
        ),
      ],
    ),
  );
}

// Extend VRouteElementBuilder to create your own VRouteElement
class ConnectedRoutes extends VRouteElementBuilder {
  static final String profile = 'profile';

  static void toProfile(BuildContext context, String username) =>
      context.vRouter.to('/$username/$profile');

  static final String settings = 'settings';

  static void toSettings(BuildContext context, String username) =>
      context.vRouter.to('/$username/$settings');

  @override
  List<VRouteElement> buildRoutes() {
    return [
      VNester.builder(
        // .builder constructor gives you easy access to VRouter data
        path:
        '/:username', // :username is a path parameter and can be any value
        widgetBuilder: (_, state, child) => MyScaffold(
          child,
          currentIndex: state.names.contains(profile) ? 0 : 1,
        ),
        nestedRoutes: [
          VWidget(
            path: profile,
            name: profile,
            widget: ProfileWidget(),
          ),
          VWidget(
            path: settings,
            name: settings,
            widget: SettingsWidget(),

            // Custom transition
            buildTransition: (animation, ___, child) {
              return ScaleTransition(
                scale: animation,
                child: child,
              );
            },
          ),
        ],
      ),
    ];
  }
}

class LoginWidget extends StatefulWidget {
  @override
  _LoginWidgetState createState() => _LoginWidgetState();
}

class _LoginWidgetState extends State<LoginWidget> {
  String name = 'bob';
  final _formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Row(
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Text('Enter your name to connect: '),
                Container(
                  width: 200,
                  decoration: BoxDecoration(
                    border: Border.all(color: Colors.black),
                  ),
                  child: Form(
                    key: _formKey,
                    child: TextFormField(
                      textAlign: TextAlign.center,
                      onChanged: (value) => name = value,
                      initialValue: 'bob',
                    ),
                  ),
                ),
              ],
            ),
            SizedBox(
              height: 20,
            ),

            // This FAB is shared and shows hero animations working with no issues
            FloatingActionButton(
              heroTag: 'FAB',
              onPressed: () {
                setState(() => (_formKey.currentState!.validate())
                    ? ConnectedRoutes.toProfile(context, name)
                    : null);
              },
              child: Icon(Icons.login),
            )
          ],
        ),
      ),
    );
  }
}

class MyScaffold extends StatelessWidget {
  final Widget child;
  final int currentIndex;

  const MyScaffold(this.child, {required this.currentIndex});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('You are connected'),
      ),
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: currentIndex,
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.person_outline), label: 'Profile'),
          BottomNavigationBarItem(
              icon: Icon(Icons.info_outline), label: 'Info'),
        ],
        onTap: (int index) {
          // We can access this username via the path parameters
          final username = VRouter.of(context).pathParameters['username']!;
          if (index == 0) {
            ConnectedRoutes.toProfile(context, username);
          } else {
            ConnectedRoutes.toSettings(context, username);
          }
        },
      ),
      body: child,

      // This FAB is shared with login and shows hero animations working with no issues
      floatingActionButton: FloatingActionButton(
        heroTag: 'FAB',
        onPressed: () => VRouter.of(context).to('/login'),
        child: Icon(Icons.logout),
      ),
    );
  }
}

class ProfileWidget extends StatefulWidget {
  @override
  _ProfileWidgetState createState() => _ProfileWidgetState();
}

class _ProfileWidgetState extends State<ProfileWidget> {
  int count = 0;

  @override
  Widget build(BuildContext context) {
    // VNavigationGuard allows you to react to navigation events locally
    return VWidgetGuard(
      // When entering or updating the route, we try to get the count from the local history state
      // This history state will be NOT null if the user presses the back button for example
      afterEnter: (context, __, ___) => getCountFromState(context),
      afterUpdate: (context, __, ___) => getCountFromState(context),
      child: Padding(
        padding: const EdgeInsets.symmetric(horizontal: 20.0),
        child: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              TextButton(
                onPressed: () {
                  VRouter.of(context).to(
                    context.vRouter.url,
                    isReplacement: true,
                    historyState: {'count': '${count + 1}'},
                  );
                  setState(() => count++);
                },
                child: Container(
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(50),
                    color: Colors.blueAccent,
                  ),
                  padding:
                  EdgeInsets.symmetric(horizontal: 20.0, vertical: 8.0),
                  child: Text(
                    'Your pressed this button $count times',
                    style: buttonTextStyle,
                  ),
                ),
              ),
              SizedBox(height: 20),
              Text(
                'This number is saved in the history state so if you are on the web leave this page and hit the back button to see this number restored!',
                style: textStyle,
                textAlign: TextAlign.center,
              ),
            ],
          ),
        ),
      ),
    );
  }

  void getCountFromState(BuildContext context) {
    setState(() {
      count = (VRouter.of(context).historyState['count'] == null)
          ? 0
          : int.tryParse(VRouter.of(context).historyState['count'] ?? '') ?? 0;
    });
  }
}

class SettingsWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.symmetric(horizontal: 20.0),
      child: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Text(
              'Did you see the custom animation when coming here?',
              style: textStyle.copyWith(fontSize: textStyle.fontSize! + 2),
            ),
          ],
        ),
      ),
    );
  }
}

final textStyle = TextStyle(color: Colors.black, fontSize: 16);
final buttonTextStyle = textStyle.copyWith(color: Colors.white);

Test setup:
vrouter: v1.2.0+14
Chrome - Linux
Important Note: Since I used Linux, I had to change the source code of VRouter to force VCupertinoPage to be used (like it is on Mac). This is the only difference between Mac and Linux inside VRouter so it should do the trick.

Video of the reproduced steps

https://user-images.githubusercontent.com/5128921/140401189-0d0d0d65-00f1-4752-8526-74a3f218d4ce.mp4

As you can see, this works for me.
Can you tell me if you have the issue when using precisely the same setup as me (apart from using a Mac)? If so, I will get a hold on a Mac and try again using this setup.

Example had:
vrouter: ^1.2.0+7
But upgrading the example fixed it.
Unfortunately, my app is already using v1.2.0+14.
Would investigate how to trigger it without my app.

I know VRouter had an issue with popping pages at some point. I even remember an issue with VCupertinoPage popping at some point.
For example the CHANGELOG for v1.2.0+13 is Dynamically moving VNester.child around the widget tree could cause popping issues. While it does explicitly mention VCupertinoPage it is possible that this was included.
Nothing 100% sure though, so be sure to let me know if you can reproduce the bug with the latest version !

Haha! Was able to reproduce, cool bug, for sure:
100% reproduction if mouse gets out of the window during the gesture.
And never reproduces in other cases...
It took quite a while to figure out while my reproduction rate dropped from 50% to near never :D
Seems like I'm less nervous in the late evening 🤣
https://user-images.githubusercontent.com/9092362/140412957-e6cb0d4c-11d2-423b-ab82-dfa030285617.mov

I can reproduce this issue.
I understand why the issue happen.
Applying the fix breaks other things so I will need some time to see exactly what's going on.
Thanks for the nicely written issue and that's quite impressive that you found that so specific bug ^^

Thanks for the quick reply and triage.
It’s not an urgent issue at all, but the worst thing - there’s currently no workaround without disabling the gesture. And this leads to an app death, so hopefully it’ll get its fix once.

???


Deleting Artifacts when they are linked to a Pipeline causes Unrecoverable Error

If I delete an artifact that is connected to a pipeline, the pipeline is unrecoverable.

This is a problem with the current method of downcasting. Currently, it instantiates the given target type (resulting in the deletion propogating to the data type). I will be updating it to copy the relevant info rather than instantiating it


Census Tag Set API and implementation

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Fixes #4665

Have updated: buf_size no longer used for in and out args,


Test that CoroutineMock returns MagicMock as children

Some users used to rely on CoroutineMock().whatever returning a CoroutineMock, which is in fact incorrect, as a MagicMock should be returned (there is no reason to assume that all possible attributes of a coroutine would be coroutines themselves).
However, it is still undefined behavior as there is no test checking this behavior. This must be fixed to avoid future regressions.

In fact, it's already fixed and enforced since commit e21d768c, but it was a good opportunity to enhance the way CoroutineMock child mocks are handled.


Repository implementation

Is it good idea Delete, Update and Add method in repository to invoke SaveChanges method?
public virtual Task AddAsync(TEntity entity)
{
this.DbSet.AddAsync(entity);
await this.SaveChangesAsync();
}

What if you want to add 10000 items and then save the changes? What if you want to do few different operations in one transaction? If we add save changes in repository methods it will limit its usability.


Write a contribution guide

Note on showing plan before starting work. Some general practises.

There is a good writeup over at GitHub - "Setting guidelines for repository contributors".


AMD define replacement is not always reliable

From https://github.com/jspm/jspm-cli/issues/732#issuecomment-100714216, in Kendo UI we get:
(function (f, define) {
    define([], f)
})(function () {
      <<SOURCE CODE HERE>>
}, typeof define == "function" && define.amd ? define : function (_, f) {
    f()
});

Turned into
(function() {
function define(){};  define.amd = {};
(function(f, define) {  <-- Actual start of library source
  define([], f);
})(function() {
  <<SOURCE CODE HERE>>
}, typeof define == "function" && define.amd ? define : function(_, f) {
  f();
}); <-- Actual end of library source
})();

Because the define function is passed as a function parameter, the AMD transformer doesn't detect this pass to be able to replace the call of define with System.register.
It may be preferable to alter the AMD conversion to rather include the System.register call within the dummy define function at the top rather so we can handle these cases.

@guybedford :+1:
I think the idea of replacing the define dummy function at the top would be a nice overall addition if it doesn't break other constructs.
It was confusing initially to see the following in the "bundled" source:
function define(){};  define.amd = {};

Eventually, I realized that this was "tricking" the AMD module into thinking it was within an AMD environment and to behave like an AMD "module".
In addition, by placing the System.register call at the start of the library's source code it would be easier to always locate.  Right now the System.register replacement happens in the 3rd party library wherever they happen to use the define function which can be at the start of the file, the end of the file, etc.

Another case of something similar also came up from https://github.com/jspm/jspm-cli/issues/750:
<EMAIL_ADDRESS>[...], false, function(__require, __exports, __module) {
    return (function() {
      defineFunc.apply(null, Array.prototype.slice.call(arguments, 0));
    }).call(this, __require, __module, ...);
  });

Where arguments loses the deps context throwing in the bundle.

Guy. I'm confused. Did you fix this issue or just decide it was not a bug anymore. With kendo UI, in AMD format the bundle is still breaking. I'd like to really understand the correct fix here.

@codylindley as mentioned, this bug was fixed in https://github.com/systemjs/builder/issues/228. Working on getting the next beta out really soon, just need to smooth out quite a few things still.

Sweet! Just tested now. And the bundling works with Kendo UI AMD. Thank you!
https://www.dropbox.com/s/0abez5aqrsiijvp/Screenshot 2015-10-07 15.02.45.png?dl=0

:+1:

@codylindley Do you have an example of your set up? I am running into issues myself using AMD with Kendo UI and the systemjs builder, I keep getting this error:
Uncaught Module 10 not present.
The console traces this to my app.main.js module and highlights line 3
import 'app.core'
import 'app.clubManagement'
import 'app.clubStatistics'

But my widgets are instantiated on my view ( I am using Kendo MVVM ). A bit of a head-scratcher. I am using grunt to run the builder task via the grunt-systemjs-builder module. Here is my config:
systemjs: {
            options: {
                sfx: true,
                configFile: "Scripts/systemjs.config.js",
                minify: true,
                build: {
                    mangle: false
                }
            },
            dist: {
                files: [{
                    "src":  "Scripts/app/app.main.js",
                    "dest": "Scripts/bundles/app.min.js"
                }]
            }
        }

Any thoughts? I searched on the kendo forums and couldn't find anything related to this until I found this thread.

@og-neth this is something currently being worked on in https://github.com/jspm/jspm-cli/issues/1555. I'm hoping to post out a release today with a fix for exactly this problem, please do test it out if you can later, by following the issue there.

@og-neth - You might look here:
https://github.com/codylindley/jspm-startup.
http://developer.telerik.com/featured/choose-es6-modules-today/

@guybedford Sorry for the delay in response, I was tied up with some other assignments. Yes this worked thank you so much, the latest release resolved the issue you're a master. However I am seeing some slowness when I bundle. I am using a grunt-systemjs-builder task to do the bundling since we're using grunt. However when I look in the github docs, it seems everyone is using gulp, which gets me thinking if we should switch to gulp. Do you have an opinion on that? Also I have reported the slowness here: https://github.com/yoavniran/grunt-systemjs-builder/issues/12#issuecomment-194121758

@og-neth for a fast build look at https://github.com/jackfranklin/jspm-dev-builder, which can do incremental build caching.

Also for a 400 second build, how big is your output file!?

@guybedford yeah it's a big file it's 300kb....  it's a sfx-bundle too...  so it includes all libraries we use plus our app logic.  Thanks for the link I know that systemjs and jspm are married so it's logical for me to go that route. Thanks again for your support.

@og-neth perhaps look at the source to that project - it's a very simple builder API approach that works without jspm fine.


segment_sum primitives / advanced indexing in jax.ops.index_add

Would it be useful to others (aside from me) to have better support of sorted and unsorted segment_sums?
https://www.tensorflow.org/api_docs/python/tf/math/unsorted_segment_sum
https://www.tensorflow.org/api_docs/python/tf/math/segment_sum
In numpy one way to do unsorted segment sums is to sort then call np.add.reduceat, but this doesn't seem to be in jax or autograd:
>>> import jax.numpy as np
np.add
>>> np.add
<function _one_to_one_binop.<locals>.<lambda> at 0x1430cdbf8>
>>> np.add.reduceat
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'reduceat'

Does jax.ops.index_add do what you need? It seems roughly equivalent to unsorted_segment_sum.
https://jax.readthedocs.io/en/latest/_autosummary/jax.ops.index_add.html#jax.ops.index_add

Ah, I guess it does not yet because it does not support advanced indexing. We should fix that.

Nice! Would it be hard to support the basic operators +,-,*,/ on top of add?

After playing around a little bit with the numpy version of advanced index assignment, I take it the idea is to implement the unsorted/sorted segment sums using something similar to:
ys = np.arange(5)
idxs = [0,0,1,0,1]
sums = np.zeros(2) # two slots
seg_sum = jax.ops.index_add(sums, jax.ops.index[idxs], ys)

Yup, that's the idea!

It looks like the current way of doing np.add.reduceat is jnp.ufunc(jnp.add, 2, 1).reduceat.


LinkDetach Idle timeout after 10 minutes is printed as log warning

UAMQP Package Version: 1.6.3
Operating System: debian (docker image base link)
Python Version: 3.7.16

Describe the bug
We use azure-eventhub==5.10.1 which uses uamqp==1.6.3.
I recently went over our error/warn logs and notice idle timeout connections are logged as warnings, although (as I see it) those exceptions are just a way to call the reconnect mechanism after 10 minutes of idle connection.
If that's in fact the case, could you please "except" those exceptions and not log (but probably still throw)? or log as info (which probably logged in the reconnect function anyway so probably can skip that)? like you did here
Example logging:

LinkDetach("ErrorCodes.LinkDetachForced: The link 'G14:144172915:sender-link-dec3cc59-948c-4466-8dbd-a09096da9433' is force detached. Code: publisher(link66764). Details: AmqpMessagePublisher.IdleTimerExpired: Idle timeout: 00:10:00.")
source code link

ConnectionClose("ErrorCodes.ConnectionCloseForced: The connection was inactive for more than the allowed 300000 milliseconds and is closed by container 'LinkTracker'. TrackingId:bf7dad0eb0a14e1e96b911ea22b668a2_G12, SystemTracker:gateway5, Timestamp:2023-01-08T10:13:40")
source code link

To Reproduce
Steps to reproduce the behavior:

Create a listener on event hub using above versions
Don't send any messages and wait for 10 minutes
Log warning should appear

Expected behavior
Log warning shouldn't appear for LinkDetached aftert 10 minutes of no activity (maybe log info? or no log at all?)
Screenshots

Hi @orle, thank you for the feedback and apologies for the delay in response. My team recently published an update to the event hubs sdk, 5.11.0 where we have moved to a new all python based on amqp library. We have made these info level logs now.
For any SDK related issues please open an issue at the SDK repo


Build error

Hi,
Thank you for publishing such a great work. It is very informative.
I am trying to build your code on MacOS. When i run the 'make' command, am getting the following error.
Can you please look into it? I am not able to figure out how to fix this issue. Thank you in advance.
Note: In the below error messages i had to remove few of the 'tilda' symbols as the github markup was treating it as a strikethrough. But it shouldn't effect your understanding of the error.
--------Error details--------
[ 66%] Building CXX object fmo/taxonomy-v1/CMakeFiles/fmo-taxonomy-v1.dir/algorithm-taxonomy.cpp.o
In file included from /Users/fmo_build/fmo-cpp-demo/fmo/taxonomy-v1/algorithm-taxonomy.cpp:1:
In file included from /Users/fmo_build/fmo-cpp-demo/fmo/taxonomy-v1/algorithm-taxonomy.hpp:4:
In file included from /Users/fmo_build/fmo-cpp-demo/fmo/../include/fmo/agglomerator.hpp:6:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/vector:270:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/__bit_reference:15:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/algorithm:644:
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1880:58: error: destructor called on non-final 'fmo::TaxonomyV1::Component' that has virtual functions but
non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->_Tp();}
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1742:18: note: in instantiation of member function 'std::__1::allocatorfmo::TaxonomyV1::Component::destroy'
requested here
{__a.destroy(__p);}
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1595:14: note: in instantiation of function template specialization
'std::__1::allocator_traits<std::__1::allocatorfmo::TaxonomyV1::Component >::__destroyfmo::TaxonomyV1::Component' requested here
{__destroy(__has_destroy<allocator_type, _Tp*>(), __a, __p);}
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/vector:421:25: note: in instantiation of function template specialization
'std::__1::allocator_traits<std::__1::allocatorfmo::TaxonomyV1::Component >::destroyfmo::TaxonomyV1::Component' requested here
__alloc_traits::destroy(__alloc(), _VSTD::__to_raw_pointer(--__soon_to_be_end));
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/vector:364:29: note: in instantiation of member function 'std::__1::__vector_base<fmo::TaxonomyV1::Component,
std::__1::allocatorfmo::TaxonomyV1::Component >::__destruct_at_end' requested here
void clear() _NOEXCEPT {__destruct_at_end(_begin);}
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/vector:458:9: note: in instantiation of member function 'std::__1::__vector_base<fmo::TaxonomyV1::Component,
std::__1::allocatorfmo::TaxonomyV1::Component >::clear' requested here
clear();
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/iterator:1427:74: note: in instantiation of member function 'std::__1::__vector_base<fmo::TaxonomyV1::Component,
std::__1::allocatorfmo::TaxonomyV1::Component >::__vector_base' requested here
template <class _Tp, class _Alloc> friend class _LIBCPP_TEMPLATE_VIS vector;
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/memory:1880:64: note: qualify call to silence this warning
_LIBCPP_INLINE_VISIBILITY void destroy(pointer __p) {__p->_Tp();}
^
1 error generated.
make[2]: *** [fmo/taxonomy-v1/CMakeFiles/fmo-taxonomy-v1.dir/algorithm-taxonomy.cpp.o] Error 1
make[1]: *** [fmo/taxonomy-v1/CMakeFiles/fmo-taxonomy-v1.dir/all] Error 2
make: *** [all] Error 2

Hi,
Thank you for your comment. The errors are due to some MacOS related C++ specifications. I've updated the code and it should run on MacOS now. Let me know if you have other issues.

Hi,
Thank you for your quick revert on this issue. While running 'make' on the updated code (on same MacOS), this error is coming.
[ 89%] Building CXX object desktop/CMakeFiles/fmo-desktop.dir/loop-visualizer.cpp.o
/Users/fmo_build/fmo-cpp-demo/desktop/loop-visualizer.cpp:8:10: fatal error: 'boost/range/adaptor/reversed.hpp' file not found
#include <boost/range/adaptor/reversed.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [desktop/CMakeFiles/fmo-desktop.dir/loop-visualizer.cpp.o] Error 1
make[1]: *** [desktop/CMakeFiles/fmo-desktop.dir/all] Error 2
make: *** [all] Error 2
Note: I have boost installed - the installed version is boost: stable 1.72.0. Is it an issue with this?

Hi,
The above issue got resolved. I added the below changes to CMakeLists.txt and the error got removed. [The reference can be found at https://stackoverflow.com/questions/24173330/cmake-is-not-able-to-find-boost-libraries]
SET (BOOST_ROOT "/usr/local/Cellar/boost/1.72.0_2")
SET (BOOST_INCLUDEDIR "/usr/local/Cellar/boost/1.72.0_2/include")
SET (BOOST_LIBRARYDIR "/usr/local/Cellar/boost/1.72.0_2/lib")
SET (BOOST_MIN_VERSION "1.72.0")
set (Boost_NO_BOOST_CMAKE ON)
FIND_PACKAGE(Boost ${BOOST_MIN_VERSION} REQUIRED)
if (NOT Boost_FOUND)
message(FATAL_ERROR "Fatal error: Boost (version >= 1.72) required.")
else()
message(STATUS "Setting up BOOST")
message(STATUS " Includes - ${Boost_INCLUDE_DIRS}")
message(STATUS " Library  - ${Boost_LIBRARY_DIRS}")
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif (NOT Boost_FOUND)
Thank you once again. Your work is fantastic !


feat: add trending repositories

Description
The API used in this PR gives the list of trending repositories on github.
I have used it to show a card list of all the trending repositories (first 25 repos).
API can be found here
Screenshot

Checklist

[x] API used in this PR was not used in just-calling-random-api before.
[x] API used in this PR is Public or I have permission to use it.
[x] My contribution is working.
[x] My contribution doesn't expose any API keys.
[x] My changes don't generate any new warnings.
[x] My changes don't affect any work done by other developers.

Thanks for the PR


Add StreamDeck action to allow PTT

Allow a StreamDeck key to act as a PTT for TrackAudio.
There isn't a websocket endpoint for this yet, but Pierre says it will be easy for him to add.

This can be done already using vjoy or SuperMacro Keystroke PTT.

Pierre may have convinced me to do this anyway 😅

Neither of those solutions support Mac OS X.
Apparently apps like StreamDeck and Logitech G HUB, when emitting key presses don't use standard OS X events.
Using Karabiner-EventViewer, when I tap D on my laptop keyboard, I see a KeyDown and KeyUp event. When I have a StreamDeck key set to a hotkey of D and hit it, I don't see any events in Karabiner-EventViewer event though a D will show up in my document.
This means that a StreamDeck HotKey can't be used as a keypress to trigger TrackAudio PTT. Similarly, StreamDeck HotKeys can't trigger Discord keybinds.

I'm happy to help out with the code to do this, just need to sharpen my TS skills.

It's fine, Pierre laughed at me in Discord.
It won't be hard to do but will come after the basic tx/rx/xc toggling is in place, and that's pending a massive PR on the trackaudio side that is pending some troubleshooting elsewhere.

Will do after https://github.com/neilenns/streamdeck-trackaudio/issues/23 is complete.

This is working but depends on changes on the TrackAudio side (https://github.com/pierr3/TrackAudio/issues/52)

Uhhh somehow this code got lost. WTF.

@aselder This is fully supported now using TrackAudio 1.3.0-beta-1 and v2 of the plugin.


We are building Skim - inspired by arXiv Sanity with improvements :)

Hi @karpathy, thank you for introducing arXiv Sanity Lite!
Few of my peers and I are developing Skim https://skimhq.tech - Spotify for ML World - inspired by arXiv Sanity.
Currently it supports:

Creating a list of papers as "Rack" (similar to Spotify playlist)
See similar papers based on TF-IDF based features
See popular conferences and their racks (arXiv papers bundled into racks based on their yearly proceedings) and conference statistics as well - giving you complete information about a conference :)
Search across all papers, racks, conferences and user base

We would like to discuss more and share an invite to you - so that we can collaborate on this and improve over time.
Please let us know -<EMAIL_ADDRESS>

Hi Omkar, thank you for the reference, it looks cool!  (Though I can't actually tell because I don't have an invite code :)). Arxiv Sanity has always been a bit of a little humble side project for late at nights, but it's awesome to see that it has inspired so many more serious projects that can take the core feature set and scale it up properly, without all the jank. Wish you guys all the best!

Thank you so much for the reply! The team is really inspired by your work.
I have sent you an invite on<EMAIL_ADDRESS>Request your feedback :)))
Will close this issue in some time 👍

2 months later... :-)

@prabhuomkar Was looking forward to seeing it, but apparently it's down now. Any chance of reviving it?
arxiv-sanity-lite lacks the main feature I was using arxiv-sanity-preserver for: Most retweeted as a relevance proxy: http://www.arxiv-sanity.com/toptwtr?timefilter=month

Unfortunately we couldn't get time to focus more on releasing a stable version.
But an open version (with most features) is running here: https://skim.vercel.app/


Issues with async tests using 0.8.2

This issue is similar to #671 however I believe I am using the native promise.
Given this test:
  pit.only('should login', () => {
      console.log(Promise);
      return Promise.resolve('success').then((res) => {
        expect(res).toBe('success');
        done();
    });
});

I get the following output
Using Jest CLI v0.8.2, jasmine1
Running 1 test suite...{ [Function: Promise]
  _10: null,
  _97: null,
  _61: [Function: noop],
  resolve: [Function],
  all: [Function],
  reject: [Function],
  race: [Function],
  denodeify: [Function],
  nodeify: [Function],
  enableSynchronous: [Function],
  disableSynchronous: [Function] }

● login › it should login
  - timeout: timed out after 5000 msec waiting for something to happen

my package.json deps:
  "dependencies": {
    "apsl-react-native-button"<EMAIL_ADDRESS>    "crypto-js": "^3.1.6",
    "es6-symbol": "^3.0.2",
    "key-mirror": "^1.0.1",
    "react-native": "^0.19.0",
    "react-native-button": "^1.4.2",
    "react-native-contacts": "^0.2.1",
    "react-native-gifted-spinner": "0.0.3",
    "react-native-image-picker": "^0.14.3",
    "react-native-router-flux": "^2.2.6",
    "react-native-scrollable-tab-view": "^0.3.8",
    "react-native-side-menu": "^0.18.0",
    "react-native-simple-store": "^0.1.0",
    "react-native-simpledialog-android": "^1.0.2",
    "react-native-vector-icons": "^1.2.0",
    "react-redux": "^4.4.0",
    "redux": "^3.3.1",
    "redux-logger": "^2.5.2",
    "redux-saga": "^0.9.1",
    "redux-thunk": "^1.0.3",
    "regenerator": "^0.8.42",
    "seamless-immutable": "^5.0.1",
    "tcomb-form-native": "^0.3.3",
    "underscore": "^1.8.3",
    "validate.js": "^0.9.0"
  },
  "devDependencies": {
    "babel-core": "^6.4.5",
    "babel-jest": "^6.0.1",
    "docker": "^0.2.14",
    "istanbul": "^0.4.2",
    "jest-cli": "^0.8.2",
    "react": "^0.14.7",
    "react-addons-test-utils": "^0.14.7"
  }

I'm using react-native and facebook/react-native#6104 might be the issue I'm running into.

I'm currently working on improving the testing setup guide for react-native, I'll update this task soon with new information.


copy-tex modifying double-click selection behaviour

Before reporting a bug

[x] Check common issues.
[x] Check the bug is reproducible in the demo. If not, check KaTeX is up-to-date and installed correctly.
[x] Search for existing issues.

Describe the bug:
Copy-tex modifies copy behaviour so that a hidden div with text content sandwiched between a visible div with text content and a katex element is also selected when the visible div is double clicked. See steps below:
To Reproduce:
Steps to reproduce the behavior:

Go to https://codepen.io/alexjbest/pen/XwaQgR
Double click Hello! to select the whole line
Copy the selection with ctrl-c or cmd-c or whatever
Paste somewhere and see that "Hello!goodbye!" was in the clipboard.
Go to codepen settings and disable copy-tex.js and try again, step 4. will only copy Hello.

Expected behavior:
"Hello!" should be the contents of the clipboard even when copy-tex is enabled.
Workaround:
If I add a   between the two div's the behaviour is as expected, but I really think copy-tex shouldn't necessitate this.
Environment (please complete the following information):

KaTeX Version: latest 0.10.2
Device: desktop
OS: macOS 10.13.6
Browser: Chrome
Version: 74

I can also reproduce this in safari with the same system.
This may be related to #1973 though the fix there doesn't seem to work for me.
While this is a slightly specific setup it really happens on http://www.lmfdb.xyz/Genus2Curve/Q/169/a/169/1 for instance, when clicking Show commands for Magma and trying to copy-paste the first block of magma code one inadvertently also selects the hidden sage code.

I reproduced this on Chrome on Windows, with triple clicking (the gesture for line selection).  I imagine it's something in copy-tex.js, unrelated to #1973; will take a look.

I just noticed another (probably the same/related issue.
On a page such as http://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/144/1/g/a/ we have  a section for q-expansion, where there are two options, see up to 10 terms or up to 100 terms, switching between these is toggleable with a click of a link which hides one (style="display: none;") and shows the other, with copy-tex, click dragging to select and copying copies both the hidden and visible one.
Again the issue is related to copy-tex copying things in hidden divs, which normally cannot happen.

@alexjbest Yes, that's a better description of the problem. I did investigate this back in May, but then dropped the ball. I believe copy-tex needs to be rewritten substantially to take the following approach:

Modify the DOM/style in-place to hide what we don't want (math HTML) and show what we want (math LaTeX).  Alternatively, it might be possible to copy the DOM elsewhere before making this modifications, but I'm not sure it makes too much difference, as this will all happen before the browser has a chance to display anything.
Use innerText to get the text formatting as it would be in regular copy/paste.
Put the DOM/style back as it was.

innerText should take into account whether something is visible or hidden, and generally seems to behave like copy/paste does, whereas the current plugin implements very different behavior (because I didn't originally realize the difference -- sorry!).
If anyone has time to try implementing this, it would be appreciated!  Otherwise I will try to get to it in the future (currently traveling).


Post release 3.5.0 - Adding 3.5.0 CHANGELOG and little fix for release script

What are you going to find here?

Adding 3.5.0 changelog to CHANGELOG file
Little fix to release.sh script

not applies, wrong PR


cmd/compile: apparent infinite expansion of recursive function

The following program type-checks, but appears to grow unbounded during compilation:
package main

func f[T interface{~[]P}, P any](t T) {
	if t == nil {
		return
	}
	f[[]T,T]([]T{t})
}

func main() {
	f[[]int](nil)
}

This is not surprising: the program was constructed to require an infinitely growing number of function instances.  See also #48098 and #48703: infinitely expanding instances are generally problematic.
Not sure where it is best to handle this. It seems like something that could be detected by the type-checker, but there can be an arbitrary number of functions involved in this infinite expansion. Maybe it would be easier for the compiler to enforce a limit on recursive instantiation.
CC @griesemer @danscales @randall77 @timothy-king

This is pretty similar to #48018 , which I am planning to fix by having a limit on the depth or number of instantiations for the same function/method.  This case should be handled by the same fix that I add for #48018.
(Both this case and #48018 could possibly be handled if we computed some/all dictionaries and type descriptors at run time, but we compute all dictionaries at compile time and don't want to change that.)

Thanks, please feel free to close this as a dupe of #48018 if that would be helpful, I missed that in my search for dupes. They might be slightly different but I agree that the fix should probably be the same.
Interestingly I see that @griesemer and I both suggested that the type checker could/should detect this, but I think that might be overly optimistic. Detecting this would require a lot more machinery than we currently have.
This came up because @timothy-king and I were talking about recursive instantiation. go/ssa will need a similar limit.


Storage driver for Google Cloud Storage

This driver implements the storagedriver.StorageDriver interface and uses Google Cloud Storage as storage backend.
Google Cloud Storage is a key/value  object storage (much like Amazon S3). The following convention is used to keep the filesystem notions stored in this backend:
All the objects data are stored with their full paths as names; forward slashes are used to separate path components. Names have no leading or trailing slashes. Folders are not explicitly stored, and are derived by "prefix queries" on the cloud storage. As a result empty directories cannot be represented, but this should not be a problem.
Currently the driver is fully functional and passes all tests. The implementation of resuming of WriteStream is very inefficient at the moment. Objects on Google Cloud Storage are immutable and therefore it is not possible to append to them. The current implementation simply reads the existing object until the provided offset, and writes that contents plus the content to be appended to a new object.
Google Cloud Storage has a resumable upload feature, however, this cannot be used without making changes to the storagedriver.StorageDriver interface. Google's resumable uploads work as follows:

Create new resumable session and obtain session URL
Use url to perform PUT operations
When the upload session is finished the new object will become visible.

The size of the object must be specified when creating the session or when performing the upload of the last chunk. To be able to use this mechanism the storagedriver.StorageDriver interface should either specify the length of the complete upload to WriteStream, or pass a value marking whether a chunk is the last of the upload. Additionally the test cases would need to be updated, to no longer assume that incomplete uploads can be inspected by the Stat method, since the objects are not visible until the resumable upload has finished. Ideally, WriteStream would also have a uuid or some other identifier to make sure we know which sequences of WriteStream invocations belong to the same upload.
As an alternative to Google's resumable uploads, we could use composite objects. A composite object is a multi-part object. The different chunks could be written to separate objects and then stitched together into a composite. This is a bit of a hassle as composites can have only 1024 pieces.
My preference would be to use resumable uploads. However, it the required changes to the storagedriver.StorageDriver interface are not possible, using composite objects would be a viable alternative.
By default the tests of this driver are skipped, as they rely on having a storage bucket hosted on Google AppEngine. To enable the test, the following environment variables need to be set:

REGISTRY_STORAGE_GCS_PROJECT : the name of a Google AppEngine project
REGISTRY_STORAGE_GCS_BUCKET : the name of a storage bucket of that project

Authentication, specify either of the following

REGISTRY_STORAGE_GCS_KEYFILE : the private key file of a service account (in JSON format)
GOOGLE_APPLICATION_CREDENTIALS : the name of a google application credentials file

Note that the URLFor method requires REGISTRY_STORAGE_GCS_KEYFILE to be set, as the private key is used to sign the generated URLs
Todo for this driver:
Improve resume writing
Related: #221

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "storage-gcs" git@github.com:aibaars/distribution.git somewhere
$ cd somewhere
$ git rebase -i HEAD~7
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

As this is the first time I write any Go code, I would greatly appreciate suggestions for code improvements. Furthermore I am wondering wether I did the right thing wrt adding extra dependencies.

@endophage as is the author of #221 and might be interested in this PR.

Thanks @aibaars !
That's impressive work.
Maintainers will take a look into this soon.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "storage-gcs" git@github.com:aibaars/distribution.git somewhere
$ cd somewhere
$ git rebase -i HEAD~8
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

I added a commit to address the comments by @noxiouz and rebased to resolve merge conflicts in:

AUTHORS
docs/storagedrivers.md (due addition of Aliyun OSS documentation link on the same line)

@aibaars : this is tentatively looking good.
It's quite difficult to review because there are so many changed files that github won't display diffs.  Can you squash your code commits into one, and I will review that one commit.  Thanks.

@RichardScothern Thanks of the review. To make further review easier I rebased into three commits:

first: modification of Godeps/Godeps.json
second: add files of new dependencies (i.e the ones specified by the first commit)
third: the actual implementation.

This should make it easy to validate that I did the right thing wrt dependencies, and subsequently review the final commit, containing the actual code.

thanks @aibaars . I'll take another look this week.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "storage-gcs" git@github.com:aibaars/distribution.git somewhere
$ cd somewhere
$ git rebase -i HEAD~4
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "storage-gcs" git@github.com:aibaars/distribution.git somewhere
$ cd somewhere
$ git rebase -i HEAD~5
editor opens
change each 'pick' to 'edit'
save the file and quit
$ git commit --amend -s --no-edit
$ git rebase --continue # and repeat the amend for each commit
$ git push -f

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

@RichardScothern  I added two small commits addressing comments of others. Shall I squash those as well, or are you fine with them like this?

The commits are fine as is.  I will go over this again tomorrow.  Sorry for
the delay, but this is looking good so far.
On Wed, Sep 16, 2015 at 2:19 PM, aibaars<EMAIL_ADDRESS>wrote:

@RichardScothern https://github.com/RichardScothern I added two small
commits addressing comments of others. Shall I squash those as well, or are
you fine with them like this?
—
Reply to this email directly or view it on GitHub
https://github.com/docker/distribution/pull/756#issuecomment-140897978.

@RichardScothern I address your comments:

removed usage of json api
use WithContext instead of NewContext

The ZerosReader yields an infinite stream of 0-bytes, and is used to ensure that the copyN call never stops with an EOF. This effectively pads the existing file contents with zeros in case a write is resumed with an offset that is beyond the file's current size. The test suit expects this behaviour.

There are a few things to do here other than code:

Add documentation for configuration to https://github.com/docker/distribution/blob/master/docs/configuration.md
Add build flags so we can conditionally compile (see OSS driver for an example)
Update the dependencies since we don't use the storage/v1 package anymore
Squash your code commits

We will also need some more code reviewers: ping @endophage @stevvooe @aaronlehmann

The storage/v1 package cannot be removed because cloud/storage depends on it.

@RichardScothern  Addressed your comments and squashed the commits.

@skelterjohn Thanks for your review.

I added a comment to ListAll (and made it private)
About the order of delete operations, I tried to make the operations similar to what their counterparts on a "normal filesystem" would do. I think this makes them a bit more predictable at a fairly low price. However, if you think this is unimportant, I'd be happy to simplify the "reverse-sorting" and "reverse undo" steps.

This is my first GO program and also the first time I do anything with the GCS apis, so I might have overlooked some things. I would greatly appreciate your help:

I am not sure how to use the GCS library without supplying a project ID.
As far as I know it is not possible to supply a Range Header to the cloud/storage#NewReader function, have I overlooked something?
The WriteStream implementation is purposefully trivial and inefficient (see also the TODO in the PR description). My idea is to submit another PR once this one is merged using the compose operation. However, if you have better ideas of implementing WriteStream, let me know.

Hi Albert,
I setup a GCS account to test this out with.
I attempted to run the unit test suite - unfortunately it timed out after 10m.  I then set up a local registry with the GCS driver and pushed library/ubuntu to it.  I noticed extremely low upload throughput (a few kbps) on the large layer in that image.
As a control test I uploaded a ~30mb file via the GCS console and it finished within 2 seconds.
What have your experiences been?  Perhaps it's time to revisit WriteStream?

@skelterjohn I removed the project ID from the configuration parameters. I tried using empty string as project ID in the call to WithContext. Unfortunately WithContext panics on this, however, any arbitrary non-empty string seems to work (not surprising as the google cloud storage api does not use the project ID). Therefore I removed the project ID from the configuration and pass in  as dummy value. Not the prettiest solution, so if you have a better idea, let me know.

@RichardScothern WriteStream rewrites the entire "file" each time a chunk is appended to it.  This is extremely slow, when writing a large file in many tiny chunks. We might have to implement WriteStream in a way similar to the S3 driver https://github.com/docker/distribution/blob/master/registry/storage/driver/s3/s3.go
However, that is rather complicated, therefore I made this PR with a trivial but slow implementation first to get some early feedback and ideas, and write an improved version of WriteStream in a later PR.

Are you familiar with this:
https://golang.org/pkg/net/http/httputil/#NewChunkedWriter

@RichardScothern For me the test of the gcs driver runs in about 150s. I have a branch experimenting with the "compose"(https://cloud.google.com/storage/docs/composite-objects) operation. It seems to work fine although the compose operation is rate limited (no idea what the limit is unfortunately) so it is probably not the best solution for a busy registry with many concurrent uploads. See: https://github.com/aibaars/distribution/compare/storage-gcs...aibaars:storage-gcs-compose This should be faster on large objects written in many chunks.
In the end I think we should use google resumeable uploads. However that will require some tweaks to the storage driver interface:

WriteStream should have a parameter telling whether a chunk is the last chunk (or better know the total content length of the upload)
WriteStream should have some identifier representing the "upload transaction" corresponding to the chunk. Could use the path name for this, but it is probably better to use something unique in case of parallel uploads to the same path. I guess such an identifier could be put in the context.

@RichardScothern I tested 92eab7ea982c277f9e0fa9760924090e988eec50 with a 10GB docker image and pushing/pulling worked fine (at about 10Mb/s). Shall I add that commit to this PR, or do you prefer a separate PR for that?

@RichardScothern rebased to include the fixes from #1111. Furthermore I added the new implementation of WriteStream as a new commit.

hi @aibaars .  Thanks for the update - I'll check out the new version and test it today.

I retried the unit test and it still does not complete.  Output is here.  I used go 1.4.3 with GOMAXPROCS set to 4
I was able to use the drive with a private registry.  Pushing library/ubuntu to it (70mb total data) took about 90s which seems quite slow.   It appears most roundtrips for me take ~800ms.   What kind of performance do you see?

Regarding the project ID in the context, I don't think you need to use cloud.WithContext() at all. Just create a new context.Background() in main(), or have your functions take a Context as a parameter, and use it instead.

@RichardScothern
70MB in 90s does not sound very good. I think I got higher speeds. Let me run some tests and measure the times. Are you using a paid storage bucket, or a trial version? I am using a paid one, and I'd expect the trial version to be throttled.  I perform my tests on a machine in a data centre in Germany, so for me upload bandwidth is not a problem.
The short test (-test.short) takes about 150s. The long test takes 2000s for me, most of which is due to TestEventualConsistency and the 5GB upload test. The 5GB test being slow is for obvious reasons.
The TestEventualConsistency is even a bit slower and that might be surprising as it only uploads 32KB. The problem is that it does so in 1024 chunks of 32 bytes. Each chunk requires 3 http requests (GET the current file, PUT the next chunk, COMPOSE current and next). In addition the COMPOSE is rate-limited so an occasional back-off-and-re-try is to be expected. The overhead is easily 1s per chunk. . I could change the implementation of WriteStream to perform a full rewrite instead of compose if the file size is less than say 1MB. This would speedup the test, but it feels a bit like cheating. It'll make TestEventualConsistency much faster, but won't cover the retry code nor reaches the maximum number of composed chunks, so also won't cover the writeCompletely call if max chunks is reached.

@skelterjohn Fair point about using the current package name as alias for another. I guess this was the source of your confusion with the Contexts. Sorry for that.
The name storage is already used for cloud/storage, so I'll invent another alias for storage/api/v1. I guess simply "api" would do in this case.

No, leave as is. It's OK.
On Oct 22, 2015 4:25 AM, "Arthur"<EMAIL_ADDRESS>wrote:

@skelterjohn https://github.com/skelterjohn Fair point about using the
current package name as alias for another. I guess this was the source of
your confusion with the Contexts. Sorry for that.
The name storage is already used for cloud/storage, so I'll invent another
alias for storage/api/v1. I guess simply "api" would do in this case.
—
Reply to this email directly or view it on GitHub
https://github.com/docker/distribution/pull/756#issuecomment-150144564.

@RichardScothern for the Ubuntu image I get the same time measure as you got (around 90secs for the entire push operation). The upload of the 70MB part only takes 5 seconds (ie the progress bar from 0 to 70MB fills up in 5 secs), the rest seems to be overhead. I tried pushing the image again, and it takes about 22 seconds for docker to report that all the parts already exist. So it seems more a latency problem than throughput. See: https://gist.github.com/aibaars/fe043a1405e63579ff29
I also tried pushing the ubuntu image to an old python registry backed by GCS and it took the same amount of time. So it seems this is the speed one would expect.
Interestingly the "slow test" only took 2000s a couple of days ago, whereas today I have measured times up to 4000s. Do you know if anything substantial has changed in "master", or is google just having a bad day ?

FWIW, GCR is entirely backed by GCS and a null push (all layers exist) takes ~3 seconds (not 22).
I see roughly the same performance for a full push as you give (~90 seconds), but the client spent a significant amount of time buffering the main layer to disk (fixed in 1.9 IIRC).
If you can point me at the "slow test" image, I'd be happy to try that as well.

@mattmoor Is GCR is located in a data centre at Google? That would be rather different conditions as I have. I am running on a machine in Germany using a storage bucket in central-us.

@mattmoor The "slow test" is just the test target from the Makefile without -test.short:
go test -tags include_gcs -timeout 7200s ./registry/storage/driver/gcs

@aibaars You can also do make test-full. Although, it looks like that doesn't include the extra build tags.

@aibaars This is from my workstation (not in a Google datacenter, but on Google's network) to a US-based GCS bucket, but I'm certain eu.gcr.io/foo/bar would be equally fast in Germany, since it is backed by a GCS bucket in the EU.

@aibaars : I was testing from my work machine in San Francisco to a GCS bucket in us-east-1.  We do have a paid account but it's still in the free trial period so I'm unsure if I'm experiencing throttling.
Latency does look like an issue - I was seeing Stats take around 500-800ms (vs ~300ms to S3 in the same region).

@RichardScothern @mattmoor I just tried from a Google VM in the same zone as my bucket. A full push of ubuntu took 50s (most of it buffering image to disk) and a null push took less than 3 seconds.
The short test suite ran in 85 seconds, twice as fast as from Germany.

@RichardScothern Stat first performs a normal GET to check whether the path is a normal file. If that fails it performs a LIST to see if the path is "folder like". If the most common use of Stat is to use it on folders that means we perform two operations in the common case. In that case it might be better to try the LIST first followed by GET.
Do you know if Stat is most often called on folders or more often on files?

As a quick experiment I span up a GCE in us-east-1.  Stat times are 50-80ms.
docker push ubuntu (clean) took 43s / 65s / 44s
docker push ubuntu (already uploaded) took 7s / 5.9s / 5.86s

@aibaars : My feeling is that stat is far more commonly used for files

Can you try with 1.9.0-rc1, to avoid the buffering overhead?

I recommend against using 1.9.0-rc1. It has a push bug that will affect performance.
Current docker/docker master would be fine, though.

@RichardScothern I added another commit that should run the GET and LIST operations in the implementation of Stat concurrently. This should reduce latency. Could you check whether I did the right thing wrt go routines and channels?
I am not sure what else we could do to speed things up, do you think the code can be merged the way it is now?

hi @aibaars .  I will take a look at the new commit today and make a decision on the code.  I'm fairly happy with the code and the momentum of this PR thus far.
There is one other condition to merging, which is a commitment to maintaining the driver (responding to bug reports, implementing reasonable feature requests) for a year.  Are you able to do this?

@aibaars : I would prefer to not to have 2 IOs per stat cal - making stat assume a file first is fine.  Could you also squash your (non-dependency) commits ?

LGTM

I'm ready to merge this.  @aibaars : will you be available for a year for maintenance of this storage driver?

@RichardScothern Yes, I'll be available for maintenance of the GCS driver for a year.
Many thanks for the reviews to all!

Thank you @aibaars .  This was an excellent first contribution.


is branch for EF 3.1 still supported?

first thanks a lot again for the fix for the includeGraph.
My repo currently use EF core 3.1 and I cannot upgrade to 5.0 since I can only use LTS version of .net core
would it be possible to backport changes to the 3.1 branch when possible?

It's not actively supported, meaning new feature will not be integrated there, only some mayor bug fixes.

in this case, the includeGraph had a bug and without this fix, it's not working
hopefully the fix will get merged in 3.1 branch and I can start using the nuget package
right now i have a copy of 3.1 branch and i manually applied the fix, it's an "ok-ish" workaround but it mean that if there is any other nuget update, i will not be aware
I'm pretty sure I'm not alone using LTS release only, knowing the 3 years support vs 15 months support.

We've also ran into this issue yesterday on the 3.1 branch, so would be greatly appreciated if this could be merged into that branch!

We've also ran into this issue yesterday on the 3.1 branch, so would be greatly appreciated if this could be merged into that branch!

We're facing the same problem. It would be appreciated it could be merged! Thanks!

Hi all, once issue #547 is resolved I will look into merging the fixes into the 3.1 branch.


How do bases and segments correspond one to one?

I'm not sure what you mean. A segment, which I think is now commonly referred to as an "event" in the literature, is a slice of signal that exhibits steady statistical parameters. In theory, each segment should correspond to a change of one nucleotide in the pore.

I'm not sure what you mean. A segment, which I think is now commonly referred to as an "event" in the literature, is a slice of signal that exhibits steady statistical parameters. In theory, each segment should correspond to a change of one nucleotide in the pore.

A nanopore can hold k nucleotides (k-mer)
simultaneously. For example, k equals 5 for the pore version
R9.4. Thus, the current changes indicate the k-mers that pass
through the nanopores. I'm not sure whether each segment correspond to one nucleotide here.

A nanopore can hold k nucleotides (k-mer)
simultaneously. For example, k equals 5 for the pore version
R9.4. Thus, the current changes indicate the k-mers that pass
through the nanopores. I'm not sure whether each segment correspond to one nucleotide here.

Yes, in theory a segment should correspond to one nucleotide change in the pore. In this library, it's just a way to store a chunk of signal with stationary statistical properties. Whether the segments actually correspond to changes in the pore depends on the quality of the segmentation algorithm.

Yes, in theory a segment should correspond to one nucleotide change in the pore. In this library, it's just a way to store a chunk of signal with stationary statistical properties. Whether the segments actually correspond to changes in the pore depends on the quality of the segmentation algorithm.

everything is amazing. In the supervised machine learning, back to the very beginning, people how to know raw signal correspond to a real sequence.

everything is amazing. In the supervised machine learning, back to the very beginning, people how to know raw signal correspond to a real sequence.


Support for other emoji dates defined by task plugin

Problem
obsidian-dataview supports task date defined by the plugin obsidian-task:

due 🗓
created ➕ (which I don't think is defined by  obsidian-task )
completed ✅

This support is either when dates are defined through emoji or through inline annotation (e.g. [due:: due_date]).
There are two more dates that are defined by the task plugin:

⏳ Scheduled
🛫 Start

These cannot be queried by dataview, unless you use inline annotation.
What I'd expect
Be able to query those through scheduled and start dates defined through task plugin.
Alternatives
Have the obsidian-task  support for inline annotation; This is not at all supported at the moment, versus obsidian-dataview already supporting several emoji.
Additional context
I have seen there are often issues with emoji support (c.f. latest release), so it should be taken into consideration deciding to move forward or not.
Implementation
I am guessing updating the function function extractSpecialTaskFields(line: string): InlineField[] in /src/data-import/inline-field.ts.
E.g.
export const SCHEDULED_DATE_REGEX = /\u{23F3}\s*(\d{4}-\d{2}-\d{2})/u;
export const START_DATE_REGEX = /\u{1F6EB}\s*(\d{4}-\d{2}-\d{2})/u;

    let scheduledMatch = SCHEDULED_DATE_REGEX .exec(line);
    if (scheduledMatch )
        results.push({
            key: "scheduled",
            value: scheduledMatch [1],
            start: scheduledMatch .index,
            startValue: scheduledMatch .index + 1,
            end: scheduledMatch .index + scheduledMatch [0].length,
            wrapping: "emoji-shorthand",
        });

    let startMatch = START_DATE_REGEX .exec(line);
    if (startMatch )
        results.push({
            key: "start",
            value: startMatch [1],
            start: startMatch .index,
            startValue: startMatch .index + 1,
            end: startMatch .index + startMatch [0].length,
            wrapping: "emoji-shorthand",
        });

This could probably be refactored since we are doing the same things 5 times, only depending .
Possible bug?
BTW, I have noticed that the key used for the completed might be wrong. Don't know if there is reason for it or not, haven't push it.
Corresponding line
    if (completedMatch)
        results.push({
            key: "due", # shouldn't it be completed
            value: completedMatch[1],
            start: completedMatch.index,
            startValue: completedMatch.index + 1,
            end: completedMatch.index + completedMatch[0].length,
            wrapping: "emoji-shorthand",
        });

Your intuition about where to fix this (and that it should be refactored) are both correct, as is your bugfix!
I will get around to this when I can; I welcome a simple PR adding the feature as well.


Real index config vars

Addresses #86 . I have, in addition, taken the liberty of prepping for a new release after merge (I defer to you on this) and, following your earlier invitation, adding myself to AUTHORS.

released it as 0.11.5


[plugin|purify] enable shadow for float windows

Hi there :) I was wondering if it is possible to keep shadows for floating windows, I didn't find anything on the docs and codebase :(

Probably not going to happen by me. It shouldn't be too hard for someone else to make the necessary changes though. The purify plugin is less than 50lines of code IIRC.


Add E2E test for Actions Summary: [Trigger] EAP updates should update the fraction accordingly (may be a far future test)

### Tasks
- [ ] Add E2E automation script
- [ ] Validate test conditions

Moved to Dev Ops


fix(contrib/coreos): remove custom clock sync logic

This actually causes issues, as calling /usr/bin/timedatectl set-ntp true
actually starts systemd-timesyncd.service which stops ntpd.
We also suspect this logic is no longer necessary as
coreos/coreos-overlay#1142 has made its way to the stable channel.
fixes #3634
fixes #3386
closes #2900
replaces #3670
reverts #3300
reverts #2596

+1.  Have been running this way for some time without issue.

Code LGTM.

I'm spinning up an EC2 cluster to see how this change looks after a few days of the clocks running. Considering we saw drift of about a minute a day, it shouldn't take all that long to confirm this change.

@carmstrong I will try this on my cluster as well. How to apply this patch to an existing cluster?

How to apply this patch to an existing cluster?

Honestly, I'm not sure how to back out of the changes we've made on a running cluster. I'd try the following:

sudo systemctl stop timedate-ntp-synchronization.service
sudo systemctl stop ntpdate.service
sudo systemctl mask timedate-ntp-synchronization.service
Remove /etc/systemd/system/ntpd.service.d/debug.conf
sudo systemctl stop systemd-timesyncd.service
sudo systemctl restart ntpd.service

If that gets you in a state where ntpd stays running happily, I think that's a success.

It worked!
sudo systemctl stop timedate-ntp-synchronization.service
sudo systemctl stop ntpdate.service
sudo systemctl mask timedate-ntp-synchronization.service
sudo rm /etc/systemd/system/ntpd.service.d/debug.conf
sudo systemctl stop systemd-timesyncd.service
sudo systemctl daemon-reload
sudo systemctl restart ntpd.service

ntpd is running now, and ceph seems to agree as well.
ceph -s
    cluster d864bc00-a3cf-4df9-8966-e3ace17ebd28
     health HEALTH_WARN
            too many PGs per OSD (1536 > max 300)
     monmap e3: 3 mons at {ip-10-21-1-152.ec2.internal=<IP_ADDRESS>:6789/0,ip-10-21-1-153.ec2.internal=<IP_ADDRESS>:6789/0,ip-10-21-2-245.ec2.internal=<IP_ADDRESS>:6789/0}
            election epoch 18, quorum 0,1,2 ip-10-21-1-152.ec2.internal,ip-10-21-1-153.ec2.internal,ip-10-21-2-245.ec2.internal
     mdsmap e13: 1/1/1 up {0=ip-10-21-1-153.ec2.internal=up:active}, 2 up:standby
     osdmap e44: 3 osds: 3 up, 3 in
      pgmap v25162: 1536 pgs, 12 pools, 1806 MB data, 2052 objects
            40771 MB used, 225 GB / 280 GB avail
                1536 active+clean
  client io 1448 B/s wr, 0 op/s

I'll check again tomorrow.

I'll check again tomorrow.

Great, thank you!!

So far so good - by now, I'd have certainly seem some clock drift. @eMxyzptlk How is your cluster faring?

So far so good.
core@ip-10-21-2-245 ~ $ timedatectl
      Local time: Tue 2015-05-12 20:32:50 UTC
  Universal time: Tue 2015-05-12 20:32:50 UTC
        RTC time: n/a
       Time zone: UTC (UTC, +0000)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
core@ip-10-21-2-245 ~ $ nse deis-store-admin
root@37915674e7ba:/app# ceph -s
    cluster d864bc00-a3cf-4df9-8966-e3ace17ebd28
     health HEALTH_WARN
            too many PGs per OSD (1536 > max 300)
     monmap e3: 3 mons at {ip-10-21-1-152.ec2.internal=<IP_ADDRESS>:6789/0,ip-10-21-1-153.ec2.internal=<IP_ADDRESS>:6789/0,ip-10-21-2-245.ec2.internal=<IP_ADDRESS>:6789/0}
            election epoch 18, quorum 0,1,2 ip-10-21-1-152.ec2.internal,ip-10-21-1-153.ec2.internal,ip-10-21-2-245.ec2.internal
     mdsmap e13: 1/1/1 up {0=ip-10-21-1-153.ec2.internal=up:active}, 2 up:standby
     osdmap e44: 3 osds: 3 up, 3 in
      pgmap v39800: 1536 pgs, 12 pools, 1933 MB data, 2172 objects
            41176 MB used, 225 GB / 280 GB avail
                1536 active+clean
  client io 409 B/s rd, 819 B/s wr, 0 op/s

So far so good.

Awesome. Let's check in again tomorrow, and if neither of us are seeing clock sync, I think we're good to :ship:.

Interesting/related: https://github.com/coreos/coreos-overlay/pull/1252

Another day with no clock skew. Ready to merge pending another review.

Code LGTM.


Support Wave 8

Supports responses in Wave 8.
Note D1b is "new" in Wave 8, but existed much earlier, so I don't need to add it back -- it's already in the list of columns.

Good catch, thanks. Pushed a fix.


Is there anyway to just generate verilog design?

I would like to see some area estimation result instead of getting actual bitstreams because it takes too long time. I wonder if there a way for spatial to just generate verilog but not bitstream, so I can use Vivado to synthesis the design.
I've tried to synthesis Top.v in verilog-aws with the following code and got a lot of syntax errors.

Hi.  There was a bit of refactoring that has been ongoing for the past few weeks, but here is what you should do assuming you are on the latest version of spatial or spatial-quickstart. If you are getting weird, random errors we most likely just need to play around with the .ivy2 cache to get everything up to date.
You can generate the raw verilog for your app with any backend, but if you are using AWS_F1, you just need to run make aws-F1-hw.  If you look at the makefile, you can just comment out this line of that target and you should have everything you need. python aws.sw-resources/gen_aws_design.py $(AWS_HOME)/hdk/cl/examples/${app_name}.  You really just need the sbt "runMain spatialIP.Instantiator --verilog --testArgs aws" command to shake the verilog out of the generated Chisel.
All of the app's verilog will get written to verilog/SpatialIP.v.  You will also probably need some of the hardware templates that it copies into that directory to actually synthesize (SRAMVerilogAWS.v, RetimeShiftRegister.sv, etc).
We are just starting to put together (informal) guides on modifying parts of core Spatial, but if you just look at the figure at the end of this document it should help explain what comes out of the make [AWS-F1-]hw in the generated directory.   If you don't have DRAM streams or are using pure AXI stream interfaces and you just want the "AccelUnit" IP, you can export FRINGELESS=1 to make it not include any of the DMA Fringe stuff.  This may only work for the VCS target right now and is very experimental though.
If your goal is to get some P&R or synth numbers for a Xilinx board that isn't going to get dropped into the FPGA ecosystem, I recommend using the Zynq, ZCU, or KCU1500 backends.  If you are targeting a different board and already have the tcl scripts set up and just need verilog, we would be happy to incorporate it in the compiler as well.


fix(windows): remove correctly internal stack traces

[x] This is a small change

Description:
Just realized, when testing on a Windows laptop, that error stack traces use Unix path separator (/) nevertheless, so I've fixed both unit tests here and the production behavior too. This code is used for improving error stack traces, so they don't point to Detox internals but places in user e2e tests.

Pull Request Test Coverage Report for Build 2566

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+9.3%) to 86.142%

Totals

Change from base Build 1363:
9.3%

Covered Lines:
3712

Relevant Lines:
4151

💛  - Coveralls


Test suite introduction

Introduces the first bunch of tests proposed in #94.
Currently a lot of test cases fail which highlights some of the bugs that need to be fixed.
Run times are on the longer side and could be improved if caching was introduced in multiple places (though in my experience downloading large caches is sometimes longer than compiling everything again).

Seems like pull_request trigger will not run on PRs from forks. There is a way to implement GH Actions using pull_request_target though it will be a little trickier (might have gotten easier since the last time I tried). Still it would require the workflow to already be present in the target branch. If @kyle-mccarthy would give me permissions to push branches in this repo it would be great. master branch should be protected at this point I think.

You may preview the result in the mirror PR in my own fork https://github.com/yakovlev-alexey/nest-next/pull/1

By the way just tried enabling Fastify - failed to render a single page since Next server attempts to use res.sendHeaders. I was also unable to test next@9 where it might have worked. May make sense to drop Fastify support completely IMO


Add information from WPF VisualTreeHelper

In WPF, there is the VisualTreeHelper which allows you to browse the whole visual tree and get information out of it.
It is possible to attach to an application and get the visual tree out with information like text styles.
See https://wpfinspector.codeplex.com or https://snoopwpf.codeplex.com for examples.
We should add this as well to provide additional information for WPF applications.

Hi Roman,
I had the same Idea a while ago with a project spike called "XAML Inspector" which allows you to connect to a running, or lauch an new WPF application and then remote-control it through an agent.dll that gets loaded into the app and communicate through HTTP.  This could now merge into a new XAML-provider of FlaUI that could be written for UWP, WPF, WP10.
Regards
Christian

This is a different approach than the one from WPFInspector right? But I like the idea having a small agent so that not the whole FlaUI needs to be injected. Do you have some code already?

Yes. WPF Inspector injects the whole application including the UI with all it's problems (style inheritance,...). The idea of XAML inspector was to have a small agent, that is easy to port to any XAML based platform that streams the data through a web-socket connection to the UI (or the FlaUI provider) that allows you to remote-debug or control an application.

@ChristianMoser Did you start something already for the agent? Is there maybe some experimental code around?


feat(language-core): type support for CSS Modules API

resolve #4673

Now it can do the following things:

Thanks!


Use TypeScript

Happy new year everyone! I come bearing the gift of types 🎁
Screenshots

How to Test
Use the latest beta to test out the types:
npm install @paypal/react-paypal-js@beta

Additional Info
There are a lot of @ts-expect-error statements being used to avoid compile time errors. These are code smells and should be cleaned up before merging this PR. I could use some help with this. I would gladly accept PRs to this "typescript" branch.
I decided to keep the Proptypes with the idea that they are for runtime validation and the TypeScript types are for compile time validation. For more info see: https://stackoverflow.com/a/54690878
Related issues: #69 #53

Update: I was able to remove all the @ts-expect-error comments from the Buttons component. Hoping to do the same to the rest of the components and merge this PR next week.

Update: I was able to remove all the @ts-expect-error comments from the Buttons component. Hoping to do the same to the rest of the components and merge this PR next week.


Support for FAST3686

Hi, I can provide additional information if needed.
Standard Specification Compliant	EuroDOCSIS 3.0
Hardware Version	V2.0
Software Version	[my-is-name]_3.591.0
Model Name	FAST3686
Linux S/W Version	2.6.30-1.7.1mp3-svn19302

Hi, I need to for mine plz !
Model Name F@st3686 V1B
Standard Specification Compliant EuroDOCSIS 3.0
SFR-PC20_3.680.0-T1
Ty!

Still relevant.

@Hount what is the error you get? Unfortunately, in most cases, this means that your device uses a different API and thus is not supported.

@Hount what is the error you get? Unfortunately, in most cases, this means that your device uses a different API and thus is not supported.

"Failed to connect, please try again"
when adding the integration after installing 0.33 with HACS
I could not find more detailed info / logs yeat.

And quick connectivity tests

I can ping modem from HA
I can curl modem's login page from HA
I've tested both http://ip and plain ip as host in Sagemcom integration "Host" -field
username/ password are correct
I tested both MD5 and SHA512 encryption methods
SSL and it's verify should not be required as the modem's web ui does not use such?


[scala3] Add test for serializable generated type-class

Scala3 version of magnolia does not generate serializable typeclass when defined inside a non-serializable outer, unlike the scala 2 version. Tested in https://github.com/softwaremill/magnolia/pull/498.
It looks like the summonInline[Typeclass[p]] lambda in the CallByNeed takes a reference on the outer obejct.

@adamw since you reviewed https://github.com/softwaremill/magnolia/pull/498
This new test is only relevant for JVM, and fails for JS and native.
The project layout for magnolia looks non standard. I don't know how to add JVM only test.
Would migrating to sbt-corssproject be considered ? I can submit a PR for that.

@RustedBones our projects use https://github.com/sbt/sbt-projectmatrix, in my experience this is the only sane way to maintain projects with both simple & complex cross-platform setups. I think adding the test in scalajvm would do the trick (as opposed to scala), see e.g. here.

Ok, let's stick with sbt-projectmatrix.
At the moment, there isn't a scala folder. The project defines fake project root and overrides the scalaSource. (btw, this setup does not work well with intelliJ and requires to manually add source to get indexer working).
What about standardizing the project layout like this and create a scalajvm source folder in the test project ?

Any take on this one?
There is probably a trick to avoid this but I couldn't find any other alternative

It would be great if this PR can be reviewed / merged, since it's blocking scio migration towards Scala 3.

@turb ah sorry, this somehow fell through the cracks. There's a conflict, otherwise it looks good.

@turb would you be able to create an updated PR maybe?

@turb would you be able to create an updated PR maybe?

I suppose @RustedBones may prefer to do it himself since it's his PR, but if he's busy I will.

Thanks all! :)


refactor(start_planner): add rss safety check function

Description
refactoring and add checkSafetyWithRSS
This is a PR mimicking the changes in the PR

Tests performed

Not applicable.
Effects on system behavior

Not applicable.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

If the function is completely the same, I want to move to common.

@kosuke55

If the function is completely the same, I want to move to common.
I agree with that.
Is it ok to move to start_goal_planner_common?

@kyoichi-sugahara sorry for the delay.

Is it ok to move to start_goal_planner_common?
yes ok!

@kosuke55
The function is able to be moved to common without any issues, so I've moved it to common!
I'll check the evaluator result.

no degression so will merge


Only search for swiftc and Clang on macOS

platformTest tries to test all "supported" tool chains on a given OS
We assumed that if the OS was not Windows, we must be on Linux and
we must support GCC/Clang/swiftc.
On macOS, GCC is usually just a wrapper around Clang, so we detect
GCC as missing.  This causes tests to fail in platformTest because
we cannot find a GCC tool chain.
Context

Contributor Checklist

[ ] Review Contribution Guidelines
[ ] Sign Gradle CLA
[ ] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:check

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

We decided to just install GCC on our macOS CI builds


Add man pages and shell completions to tgz

We use the tarball for installing on Docker for Mac, but we currently are not installing the man pages or shell completions because they are not available anywhere to download, so add to tgz so we can get them from there.
This requires #25881 #25883 merged as it would be annoying not to be able to generate a tgz on those architectures as you can't build the man pages... DONE

LGTM 🐸
/cc @tianon

This needs a change in the "binaries" installation instructions to explain how / where to install the man page files https://github.com/docker/docker/blob/master/docs/installation/binaries.md

SGTM

Can you rebase for good measure?

btw, client/transport/tlsconfig_clone.go:10: c.Clone undefined (type *tls.Config has no field or method Clone)

it is tracked in https://github.com/docker/docker/pull/26406

I like the idea of distributing pre-generated copies of these, but I wonder if it might be better to use a separate tgz file with just the man pages instead of joining the two together -- thoughts?

I don't see why not to include it all in one.
There's also the completion scripts which is currently in another PR.

Ok, merged in #25878 to this.

@tianon the idea is to have one tarball that has everything you need to run Docker using the static binaries (rather than the distro specific dynamic ones). The man pages and completions are not very big compared to the binaries, so splitting does not make much sense to me.

Ok, fair enough :smile:  (thanks for considering it :innocent:)

Docs added, squashed, spaces fixed.

The test failures appear to be real, but really unsure why...

@dnephin I am fairly sure that the reason for this failing is that there is no general network access in the CI environment, so the man pages cannot build there. I think there should be a frozen image for them rather than using alpine and apk.

As this is unlikely to get merged for 1.13 as the man pages do not build in CI I have opened https://github.com/docker/docker/pull/27735 for the most important part.

Closing until #28205 is resolved as fixing the man pages build needs to happen first and this is not getting into 1.13, so no man pages on Docker for Mac until 1.14...


Make access levels more user friendly

The current icons and descriptions cause confusion for users.
cc @lobovkin

The main thing is to show only what the third-party service requests. Don't show what it doesn't request.

I'm not sure I agree since it's important to be clear that higher level permissions include the implicit permissions of the lower levels.

I'd argue we shouldn't strive to contain the levels to single sentences. I'm not great with copy, but perhaps something like:
Access my basic information
Includes public key, BTC deposit address, and any other public information.
Post, like, and follow
[domain] may edit my profile, create posts and reclouts, follow and unfollow accounts, and send messages on my behalf.
Unrestricted access
[domain] may buy, sell, or send coins without explicit approval.

Fixed!


Update Docs following the MAP API change

Update all relevant aya-book docs following the map API update which occurred in https://github.com/aya-rs/aya/issues/386 Most of the internal ones were completed in the API

/assign
( I know it doesn't work :) )


[doc] update Modal.js to fix #10662

further discussion: should there be a onClose or onClosed to pair with onShow? which would make a workaround for #10471 much easier

@facebook-github-bot shipit


ARCH-603: add get_jwt_user_id call to JwtAuthCookieMiddleware

The JwtAuthCookieMiddleware can now provide the user_id from the JWT,
when it exists, by caching it in the request.  Use
JwtAuthCookieMiddleware.get_jwt_user_id().
ARCH-603
Note: This is needed for ecommerce for calls from microfrontends to get access to the (lms) user_id for data analytics.

Closing in favor of: https://github.com/edx/edx-drf-extensions/pull/68