Push notification throughput  concerns: Job queue implementation for push notifications

As part of evaluating replacement for the parse.com service,  I have been able to install parse server on my development box and successfully deliver push notifications to Android device. I'll soon try it for iOS devices.
We are currently evaluating using either a self hosted parse server or another third party push notification  for our push notifications.
We are very much inclined to use the parse server, but we have big concern about the scalability of push notifications. The wiki says it can't handle super high throughput. Do we have some numbers on how much  throughput the current implementation can handle? Is implementation of a job queue for push notifications on the roadmap?

I wonder if using a system like https://www.iron.io/ would work, my buddy is the CTO of the company and they have quite a nice message/worker que system that would offload potential bottle necks of keeping all the pending ios queued messages off the parse server.

Hi @anilkbhatt, the throughput highly depends on the performance of your server. From our experience, querying the installation from mongo is the most time-consuming part of the whole process. Probably you can start the load testing by querying the installation from your mongo and see how much throughput it can handle. After that, you can do the complete load testing with GCM and APNS. We will do the queue system but right now we do not have a timeline for that.

Hi @anilkbhatt - Would you mind sharing how you were able to get push notifications working for Android? I have been struggling with it for the last few days. I am able to get push notifications working for an app on parse.com, but when I change the credentials to point to my hosted parse-server (v. 2.2.2), the push notification is not going through. I am concerned that my parse-server config might be missing something.
var api = new ParseServer({
  databaseURI: databaseURI,
  cloud: '/var/parseapp/cloud/main.js',
  appId: appId,
  masterKey: masterKey,
  fileKey: fileKey,
  serverURL: serverURL,
  push: {
    android: {
      senderId: senderId,
      apiKey: apiKey
    }
  }
})

@general-tim I downloaded parse-server-example and tweaked the code in index.js. I also followed the guide to integrate the latest android/iOS SDKs with the apps. For android, if you were using the generic parse gcm sender id, you will need to obtain your own gcm sender id and add it to the parse server pus config as well as to your app.
`
...
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
//todo: Relace with production app id. Put it ino a config file
appId: process.env.APP_ID || 'devAppId',
//todo: Relace with production master key . Put it ino a config file
masterKey: process.env.MASTER_KEY || 'devMasterKey', //Add your master key here. Keep it secret!
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',  // Don't forget to change to https if needed
push: {
android: {
senderId: 'gcmSenderIdFromGoogleDevConsole',
apiKey: 'gcmCredentialsFromGoogleDevConsole' //TODO: Read from config file. Keep it secret.
  },
  ios: {
    pfx: 'certificates\\dev.p12',
    bundleId: 'com.your.bundleld',
    production: false
  }

}
var alternateMountPath = '/1';
app.use(alternateMountPath, api);
...
`

@wangmengyan95 , thanks for the advice on how to start with load/performance testing. Good to know that you guys will be eventually implementing a job queue.  @gateway, thanks for the reference to a current possible implementation of job queue. Our current primary goal is to have a solution based on open source parese server , which is as much self reliant as possible.

@wangmengyan95 , I have a question about Parse Server's architecture as I haven't yet gotten a chance to peek through the implementation. Does parse server takes care of spawning new processes to take advantage of multi core processors  and/or to handle increased load throughput or do I beed to worry about implementing that myself or use a framework like PM2?

I am closing this out as we're trying to cut down on the number of non-issues. This will help us focus on the issues that are actively preventing people from migrating their production apps to Parse Server.
As an alternative, I suggest opening a new discussion at Server Fault, a Q&A site dedicated to "questions about managing information technology systems in a business environment".


Address misleading copy in group chat empty state

This is NOT actually the beginning of my conversation; I just haven't brought over any message history from earlier installations.
This should be addressed in a more comprehensive refresh of the empty state.

@saulmc Are we waiting for design feedback here? Or what do you have in mind, I can try to scope from a technical perspective

@alexrisch Still needs product/design direction. Could be as simple as updating the string for now, but we likely will want to do more. /cc @covrter

Does the app know the difference in state between

"actually the beginning of my conversation"
"just haven't brought over any message history from earlier installations"
?

Or do we need a design that "covers" both possibilities in one view?
Agreed that empty states need a more holistic upgrade, too.

@covrter We need a design to work with both, we don't have a way to know if it's the beginning of the group, or just newly added

@alexrisch Word, and if it's "newly added (from prior installation)" is there any action the user can take to go and get the prior content? (Or what will trigger it to sync?)

This is touching on message backup, I will sync with the SDK team to confirm my understanding before I make a fool of myself


Consolidate CAT spends into the Cat primitive

Nothing further so far, Your Honor 🫡

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
Attention: Patch coverage is 84.09091% with 7 lines in your changes missing coverage. Please review.

Project coverage is 64.83%. Comparing base (305ae96) to head (b70a4e2).
Report is 3 commits behind head on main.

Files
Patch %
Lines

crates/chia-sdk-driver/src/primitives/cat.rs
83.33%
7 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #57      +/-   ##
==========================================
- Coverage   65.10%   64.83%   -0.27%
==========================================
  Files          52       52
  Lines        1857     1857
==========================================
- Hits         1209     1204       -5
- Misses        648      653       +5

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


feature Ban User.

hi @dmeroff It would be interesting to see the possibility of adding a function to ban user,
Thks,
Wilmer.

This feature is already implemented. You can "block"/"unblock" users from admin panel.


Fix fetch_binaries_for_coredumps

Addresses error message:
AttributeError: 'tuple' object has no attribute 'split'

Can one of the admins verify this patch?

This issue we have in SUSE when teuthology finds a crash.
Found similar tickets on redmine
https://tracker.ceph.com/issues/20538
https://tracker.ceph.com/issues/18304
https://tracker.ceph.com/issues/16493

LGTM; I guess we can get both stdout and stderr from that function and weren't handling error returns, huh?

given that dump_err is unused, it would be equivalent to assign dump_out to ....communicate()[0] (or add an if() to dump dump_err if there are contents).  I don't have strong feelings either way.

@dmick will log.warning(dump_err) or log.error(dump_err) be a good usage for it?

I searched the repo to see what we do elsewhere:

~/src/teuthology [master]$ git grep communicate(
teuthology/coverage.py:        output, _ = proc.communicate()
teuthology/coverage.py:        output, _ = proc.communicate()
teuthology/kill.py:    stdout, stderr = proc.communicate()
teuthology/openstack/test/openstack-integration.py:        (stdoutdata, stderrdata) = self.worker.communicate()
teuthology/provision/downburst.py:        out, err = proc.communicate()
teuthology/provision/downburst.py:        out, err = proc.communicate()
teuthology/repo_utils.py:        out, err = boot_proc.communicate()
teuthology/task/internal/init.py:            dump_out = dump_info.communicate()
teuthology/task/internal/vm_setup.py:                    _, err = p2.communicate()

If you look at those results more carefully (eg with "-A 15"), in some cases we optionally dump and in others we just ignore the stderr result. So I'd say it's not a concern either way, but a thought for similar changes in future.

I'm good with log.error()

@dmick seems like overall code does not care about stderr, the subprocess.Popen does not assign any special value to it, that means communicate() will never return anything in second element of tuple rather than None. And handling it does not make any sense. I was not going to rewrite the function fetch_binaries_for_coredumps so it does everything correctly, and improve the logic, just addressing type error.

ok to test

@dmick ok, I'll elaborate on this, if you look closer the code:
dump_info = subprocess.Popen(['file', dump_path],
                             stdout=subprocess.PIPE)

means that only stdout will be piped and will be returned by communicate() method as first element of tuple, the second element will be always None in this circumstance. If there an error occurs, then Popen will raise an exception and print error messages to stderr. If we want to process stderr, i.e. make communicate() return it as second value of the tuple, we need to add stderr=subprocess.PIPE as a parameter to Popen invocation, and in this case it will not raise an exception.

I see what you mean now.   A slight correction: if there is stderr output with stderr==None, the output comes to the parent's stderr, however that might be processed; AFAIK there's no exception.
>>> import subprocess
>>> pr=subprocess.Popen(['/bin/ls', '/does.not.exist'], stdout=s.PIPE)
>>> /bin/ls: cannot access '/does.not.exist': No such file or directory
pr.communicate()

('', None)
I probably would have set stderr=subprocess.PIPE and logged the error, if any, but yes, it would have been a more invasive change.

Fixes: https://tracker.ceph.com/issues/20538


[BUG] [Fabric] Server crash on start

Mod Loader

[x] Fabric
[ ] Forge

Versions

SimpleAuth 1.7.7
Fabric API 0.32.0

Describe the bug
Open the server and it crashed
To Reproduce

Put Simpleauth in mods/
Start server
Server crash

Expected behavior
Able to start correctly without crash
Additional context
https://pastebin.com/3uzt4r7R

Seems like incompatibility with com.javazilla.bukkitfabric

That mod has horrific compatibility issues with most of the mods in the ecosystem and most people just don't support it.


Prevent faulting the last healthy child

If a nexus has a single healthy child, prevent that child from being
faulted (otherwise it would make the nexus unusable).

Is there a regression test for this?

Good point - I have added a test


Consider two NNS contracts in zone

One NNS in mainnet (higher priority) and one in sidechain. Merge result.

Currently, we support zone transfer requests
https://github.com/nspcc-dev/coredns/blob/e2e4fd5b102a68a4d1052397bbade9f79e7bfec3/plugin/nns/nns.go#L52
If we provide two contracts in Corefile:
.:53 {
    nns http://morph-chain.neofs.devenv:30333 - .container
    nns http://main-chain.neofs.devenv:30333 08ad3db9b6d3e3016a48c64d12400823ef424f21 .container
}

how we should handle zone transfer requests (AFXE, IFXR)?

@realloc @anatoly-bogatyrev Any ideas?

I suggest constructing the resulting record set by taking the content from each contract and overriding in the order of appearance in config file. For an example config above, we take records from sidechain and override conflicting records with what was taken from mainnet.
For production config I suggest using mainnet first and then override/extend it with sidechain records.

What should we do with SOA record (that must be the first and the last record in the response). This record also should be overridden by the last NNS contract from config?

/cc @realloc

I suggest taking SOA from the original (first in the order of appearance) zone.


Add module framework

Refactor main nimbus.py module
Add module framework
Add command_prefix to config
Add !help command for listing available commands
Add !mcname command for looking up minecraft usernames
Add !ver command for viewing version information
Add some basic logging
Handle ctrl-c gracefully

Probably going to refactor the module/plugin framework to use classes instead of decorators.

@bcbwilla all ready for code review


feat(crux-ui): deployment page create card

Added a deployment creation card to the deployments page.

LGTM (informal)


unexpected bound variable  error in simp

In Mathlib/Algebra/Group/Hom/Instances.lean on the bump/nightly-2024-03-13 branch (and probably later bump/v4.8.0, or even thereafter master, we have a
      simp [zpow_add_one]
      simp [mul_comm]

and combining this into a single simp call as
      simp [zpow_add_one, mul_comm]

generates an error unexpected bound variable #0. This is almost certainly a bug, and hopefully someone can work on minimizing it to a no imports example.

structure MonoidHom (M : Type _) (N : Type _) [Mul M] [Mul N] where
  toFun : M → N
  map_mul' : ∀ x y, toFun (x * y) = toFun x * toFun y

class CommMagma (G : Type _) extends Mul G where
  mul_comm : ∀ a b : G, a * b = b * a

set_option quotPrecheck false
infixr:25 " →*' " => MonoidHom

instance [Mul M] [Mul N] : CoeFun (M →*' N) (fun _ => M → N) where
  coe := MonoidHom.toFun

open CommMagma

-- -- this instance needed
instance MonoidHom.commMonoid [Mul M] [Mul N] :
    CommMagma (M →*' N) where
  mul := fun f g => { toFun := fun x => f x * g x, map_mul' := sorry }
  mul_comm := sorry

example {M} [Mul M] [Mul G] [Pow G ℤ] :
    let zpow : ℤ → (M →*' G) → (M →*' G) := fun n f => { toFun := fun x => f x ^ n, map_mul' := sorry }
    ∀ (n : ℕ) (a : M →*' G), zpow (Int.ofNat (Nat.succ n)) a = a * zpow (Int.ofNat n) a := by
  -- simp only [Int.ofNat_eq_coe, zpow_coe_nat]
  simp only [mul_comm] -- hangs. Is this to be expected?
  sorry

I can get the timeout here

Mathlib free
structure MonoidHom (M : Type _) (N : Type _) [Mul M] [Mul N] where
  toFun : M → N
  map_mul' : ∀ x y, toFun (x * y) = toFun x * toFun y

class CommMagma (G : Type _) extends Mul G where
  mul_comm : ∀ a b : G, a * b = b * a

set_option quotPrecheck false
infixr:25 " →*' " => MonoidHom

instance [Mul M] [Mul N] : CoeFun (M →*' N) (fun _ => M → N) where
  coe := MonoidHom.toFun

open CommMagma

-- -- this instance needed
instance MonoidHom.commMonoid [Mul M] [Mul N] :
    CommMagma (M →*' N) where
  mul := fun f g => { toFun := fun x => f x * g x, map_mul' := sorry }
  mul_comm := sorry

-- failing to extract, but I'm surprised `simp only [mul_comm]` hangs Lean.
example {M} [Mul M] [Mul G] [Pow G Int] :
    let zpow : Int → (M →*' G) → (M →*' G) := fun n f => { toFun := fun x => f x ^ n, map_mul' := sorry }
    ∀ (n : ℕ) (a : M →*' G), zpow (Int.ofNat (Nat.succ n)) a = a * zpow (Int.ofNat n) a := by
  simp only [Int.ofNat_eq_coe]
  simp only [mul_comm] — unexpected bound variable 2
  sorry

This issue should probably now be migrated to the Lean repo. What is the protocol here @semorrison ?

As they are in different organisations we can't migrate: it just needs a new issue.


[adding] ADR-19 Object Store

Also - if we need to do specific things in order to enable these to be easily accessed from different accounts (via imports/exports), we need to include that information here otherwise we'll have a couple of passes on this. @matthiashanel  can perhaps provide some hints.


Set gzip regex to only match for .gz at the end of the filename

#5

Yeah here's a quick example:
Current regex: https://regex101.com/r/wO9aU5/3
Proposed regex: https://regex101.com/r/wO9aU5/2

Thanks I'll merge.

Documentation of this issue
.([a-z]{2,}).gz$

Matches - fonts.woff.gz
Doesn't match fonts.woof2.gz

.gz$

Matches both cases


Dagger for generating code and docs

Problem
In theory Dagger is perfect for generating code or docs. In practice, the logic for exporting files back to the client filesystem is simplistic and brittle, which makes the experience awkward for those use cases.
Limitations of export

User must always specify the target path to write to. For example dagger call codegen -o .
The target path is relative to the working directory, which means the command must be changed to match the current workdir - this makes the use of Dagger brittle. For example: cd foo; dagger call codegen -o ..; cd bar; dagger call codegen -o ../..
export can only add files by default, not remove them. For example it can't remove previously generated files if they become out of date.
Files can be removed with export(wipe: true), but it is very easy to remove too much. In combination with the mandatory path, it is a recipe for disastrous user errors. Ask @sipsma 😛

User reports

RoffleeCopterz asks about scaffolding
shykes asks about generating CI config

Solution
Implement first-class support for codegen pipelines, in a way that doesn't break the fundamentals of the Dagger API.
Design
Make export smarter by making it sync changes instead of just dumping content.
Here's how it would work:

All filesystem changes are synced to the target: written files and directories, as well as removed files and directories.
No other content is written to the target. For example, if a file is present in the exported directory, but hasn't been created or changed during this run, it's ignored.
The default target path is the source
If the source isn't known, or can't be written to, the default target causes an error

Examples
Adding a file
host |
directory . |
with-new-file src/hello.txt 'hello world' |
export

Removing a file
host |
directory .  |
without-file src/hello.txt |
export

Renaming a directory
old="$(host | file old.txt)"
host |
directory . |
without-file old.txt |
with-file new.txt $old |
export

Codegen then export back to context
func (m *Mod) Generate(
  // +defaultPath="."
  source *dagger.Directory,
) *dagger.Directory {
  return source.
    WithoutFile("foo").
    WithNewFile("bar", "bla bla bla")
}

generate | export

Design considerations
The main consideration is implementation difficulty. To properly sync changes back to the source, one must 1) know what the changes are, and 2) know what the source is.

know what the changes are

Most operations are deterministic: withFile, withoutFile, etc.
But there is also withExec... This requires comparing the rootfs before and after execution, to add the corresponding changes to the sync.

know what the source is

This may or may not be tricky. For example:
directory |
with-directory foo $(host | directory .) |
with-new-file foo/bar "hello" |
directory foo |
export

In this example, the source of the exported directory is ./foo.

FYI @aluzzardi @sipsma @vito as discussed previously

Relevant to #9079

@marcosnils 👋 I consolidated #9079 into this one, which predates it.

I don't know if it changes the scope, but there is another similar use case: code formatting.
The primary difference is that generated code is usually not modified by hand (or other tools, like code formatters) whereas handwritten code may be.
Another potential difference is generated code is often in a single or a few places within a codebase where nothing else lives which could simplify exporting content (eg. overwrite everything in a folder). That's not the case with "other" files that formatters may touch.
Personally, I've been mostly satisfied with how Dagger currently works for code generation use cases (I usually just overwrite an entire generated folder). But I haven't really used Dagger for code formatting (yet).

The hardest problem here lies around caching; specifically the in magically tracking the source of a directory to support a default export target. These directories synced from the host are cached based on their content, completely disconnected from the paths/clients they were sourced from. This is important to preserve to keep our cache reusability maximal.
If we made the synced in Directory include state on where it was sourced from we'd either:

Have to include that path in the cache key, which breaks the cache reusability mentioned above
Not include that path in the cache key, which creates extremely confusing situations where you end up getting cached return values that don't have the same "client source directory" embedded in them. This would just be inconsistent+broken, not a viable option
Something very convoluted where we unset the "client source directory" before passing as an arg to a function, then attempt to find any references to it in the return value and reset it

I'm not even sure if this is actually possible in every case, but maybe in the cards. Would without a doubt be another source of convolution in the code, though that's admittedly just an internal concern as opposed to user facing

I guess 1. is an option but feels like we'd be permanently giving up something really fundamental that'd we'd regret eventually (or immediately).
2. isn't even worth considering IMO.
I wouldn't discount 3. entirely, but will mention what an alternative that avoids all this looks like.
These problems would go away if the UX changed so that the user had to provide the "original" source as an arg to export. Using rough shell pseudocode and a hypothetical new --diff option on export, something like:
SRCDIR=$(host | directory .)
$SRCDIR |
with-new-file src/hello.txt 'hello world' |
export --diff $SRCDIR

It's obviously not as succinct, especially for very simple cases like that example but would:

Avoid all the issues mentioned above
Be more explicit and clear, which might be a benefit for less straightforward cases where the directory goes through all sorts of transformations before being exported back to the host (this is debatable)
Be a bit more generic since the argument to --diff can theoretically be any Directory arg, not just local dirs. Admittedly I can't think of super compelling examples for this yet, so might be irrelevant.

Just fishing for thoughts from others here.


feat(exports): add AlgoliaSearchError to exported module

Summary
Closes #683
Exposes all internal client errors.
I'm not sure if only AlgoliaSearchError can bubble up.
If this is the case, use this PR, otherwise use this one instead: #684

Result
$ node
> require('./index');
{ [Function: algoliasearch]
  AlgoliaSearchError: { [Function: AlgoliaSearchError] super_: { [Function: Error] stackTraceLimit: 10 } },
  version: '3.27.0',
  ua: 'Algolia for Node.js 3.27.0',
  initPlaces: [Function: places] }

tests seem to fail at a point they didn't before in the set-cache test 🤔

Tests seem to be failing on master too, and I don't see any reason for this change to have an impact on them.

As discussed in #683, let's leave the current situation as is, since instanceof breaks across realms too, and .name works with native errors, as well as our "subclassed" errors.


Game crash when aircraft re-exit the airspace

Here's a video!

Note for later: This is due to the way they are rerouted. It assumes there will always be a SID assigned, and when rerouted, it looks for the SID and can't find it as the first leg in the fms. That will have to be fixed.

@Fechulo Do you still have this video?

@erikquinn It looks like I deleted the video at some point, however I don't think this is still happening.

Okay good.  Closing. :)


Issue Template

This is a template for adding new issues to the kanban board.

Task Detail:
Goals:
Success or Completion Criteria:
Allocated Time:
Start Date: dd/mm/yy
End Date: dd/mm/yy, hhmm am/pm

Issue Comments
Details:
Changes to success or completion criteria?: y/n (if y, describe)
Start Date: dd/mm/yy, hhmm am/pm
End Date: dd/mm/yy, hhmm am/pm

This will be our Standardize Format From Issue [7] Onwards


TypeScript import warnings when building (causes "exports is not defined")

Version
3.2.0
Environment info
  System:
    OS: Windows 10
    CPU: (8) x64 Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
  Binaries:
    Node: Not Found
    Yarn: Not Found
    npm: 6.1.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: 42.17134.1.0
  npmPackages:
    @vue/babel-preset-app:  3.2.0
    @vue/cli-overlay:  3.2.0
    @vue/cli-plugin-babel: ^3.2.0 => 3.2.0
    @vue/cli-plugin-typescript: ^3.2.0 => 3.2.0
    @vue/cli-service: ^3.2.0 => 3.2.0
    @vue/cli-shared-utils:  3.2.0
    @vue/component-compiler-utils:  2.3.1
    @vue/preload-webpack-plugin:  1.1.0
    @vue/web-component-wrapper:  1.2.0
    babel-helper-vue-jsx-merge-props:  2.0.3
    babel-plugin-transform-vue-jsx:  4.0.1
    vue: ^2.5.21 => 2.5.21
    vue-color: ^2.7.0 => 2.7.0
    vue-hot-reload-api:  2.3.1
    vue-loader:  15.4.2
    vue-resize: ^0.4.4 => 0.4.4
    vue-style-loader:  4.1.2
    vue-template-compiler: ^2.5.21 => 2.5.21
    vue-template-es2015-compiler:  1.6.0
  npmGlobalPackages:
    @vue/cli: Not Found

Steps to reproduce
I have tried time and time again to create a minimal reproduction of this issue and I have failed.  It just seems to happen when a project gets beyond a certain size.
What is expected?
The project to build without warnings.
What is actually happening?
The project builds with warnings:
 WARNING  Compiled with 166 warnings                                                                                1:38:48 PM

...

 warning  in ./src/common/GameLogic.ts

"export 'BUBBLE_WIDTH' was not found in './constants'

 warning  in ./src/common/GameLogic.ts

"export 'BUBBLE_WIDTH' was not found in './constants'

 warning  in ./src/common/GameLogic.ts

"export 'BUBBLE_WIDTH' was not found in './constants'

 warning  in ./src/game/controllers/GameController.ts

"export 'Background' was not found in '@/game/objects/Background'

 warning  in ./src/game/controllers/GameController.ts

"export 'BoardController' was not found in '@/game/controllers/BoardController'

 warning  in ./src/game/controllers/GameController.ts

"export 'BoardController' was not found in '@/game/controllers/BoardController'

 warning  in ./src/game/Board.ts

"export 'BoardDebugView' was not found in '@/game/objects/BoardDebugView'

 warning  in ./src/game/controllers/GameController.ts

"export 'BoardMoveAnimation' was not found in '@/game/animators/BoardMoveAnimation'

...

This bug has been plaguing me for many months now, and on multiple projects, but I have had a workaround - I have simply deleted the node_modules folder before each build and it seemed to fix the issue.  This no longer seems to work.
Even though the project builds, the resulting output does not work, with the following error displayed in the browser console: exports is not defined.  This has been consistent throughout the time I've had this issue.. on the occasions I did get it to compile, this error did not exist.  This makes me think it may be a babel issue, but I really can't tell.
Some other notes:

npm run serve works fine.
The amount of warnings seems to randomly change every now and then, even if I don't change any code
I have tried using just TypeScript for this, with no Babel, which compiles just fine, but the resulting code has it's own set of issues once loaded in the browser.
I've tried rolling back both TypeScript and vue-cli versions to no avail.
Most of the other issues referencing anything like this seem to point to "emitDecoratorMetadata": true, but I don't have that in my config,

My tsconfig.json:
{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "strict": false,
    "importHelpers": true,
    "strictNullChecks": false,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": [
      "webpack-env",
      "node"
    ],
    "paths": {
      "@/*": [
        "src/*",
      ]
    },
    "lib": [
      "esnext",
      "dom",
      "dom.iterable",
      "scripthost"
    ]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.vue",
    "tests/**/*.ts"
  ],
  "exclude": [
    "node_modules",
  ]
}

Since you can't provide a reproduction and no access to the original project, there's little we can do.
I'll mark this as "help wanted", maybe someone already came across this and can help out?

I'm also experiencing the same issue and it looks like it's an unsolved problem with issues reaching back to early '16, and touching various project incl. webpack, ts-loader and angular-cli.

I get this as well when importing a bunch of interfaces from one file. It looks like some people wrote some plugins to silence some of these warnings as a workaround in https://github.com/TypeStrong/ts-loader/issues/653#issuecomment-467403243 for example, but I couldn't get it to work with my vue-cli setup.
I still get warnings like this:
 WARNING  Compiled with 10 warnings                                                                                5:59:28 PM

 warning  in ./src/components/ItemAdminSummary.vue?vue&type=script&lang=ts&

"export 'Item' was not found in '@/store/items/types'

 warning  in ./src/components/ItemAdminSummary.vue?vue&type=script&lang=ts&

"export 'Item' was not found in '@/store/items/types'

 warning  in ./src/components/SurfaceImage.vue?vue&type=script&lang=ts&

"export 'SurfaceImage' (imported as 'SurfaceImageType') was not found in '@/store/items/types'

...

Having the same issue, also across multiple projects. Would love to see a solution here.

The same issue. I'll be happy if someone fix this bug)

The same issue. I'll be happy if someone fix this bug)

Are there any solutions or workarounds for this?
One that I have thought of is using type imports instead of regular imports.  If you do
import type {ActionMethod} from 'vuex';

@Component
export default class Comp extends Vue {
 @namespace('stuff').Action('fetch') private readonly fetchStuff!: ActionMethod;

I do not get a warning in the build anymore.  However, now I get an eslint error

The following solution worked for me
does not work
import { IAmureDragEvent, IAmureLayoutMetadata } from<EMAIL_ADDRESS>

solution
import type { IAmureDragEvent, IAmureLayoutMetadata } from<EMAIL_ADDRESS>
--
For the curious


chore(ci): kube-applier

Summary
Builds an arm64 image for kube-applier

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


[Feature]: Add Horizontal Scrollbar for Viewing Long Traces in Jaeger UI

Requirement
In our business, we frequently need to analyze and debug complex distributed systems that involve dozens or even hundreds of microservices. When we query these systems in Jaeger, some traces can become very long. The current Jaeger UI does not handle the display of long traces well, requiring users to resize the browser window or zoom out to see the entire trace.
We would like to improve the user experience by adding a horizontal scrollbar to the trace view. This enhancement would significantly improve the efficiency of our developers and operations teams when analyzing long traces. It would also help us identify and resolve issues in our systems more quickly, ultimately leading to greater system stability and higher user satisfaction.
Problem
Description:
When working with long traces in the Jaeger UI, the current design requires users to either extend the browser window width or zoom out to view the full trace. This is particularly challenging when the trace is very long, as users may find it cumbersome to navigate the trace timeline. As shown in the attached screenshot, the trace details are cut off and only visible by resizing the browser or zooming out significantly.

Steps to Reproduce:
Query a long trace in Jaeger that spans beyond the typical width of a browser window.
Observe that the full trace is not visible without resizing the window or zooming out.
Notice that the UI lacks a horizontal scrollbar, which would allow easy navigation through the trace.
Environment:
Jaeger version: 1.56
Browser: chrome
Operating System: macos
Proposal
Expected Behavior:
The Jaeger UI should provide a horizontal scrollbar when the trace extends beyond the viewport width.
Users should be able to scroll horizontally to view the entire trace timeline without needing to adjust the window size or zoom level.
Current Workaround:
Users are currently required to either zoom out in the browser or increase the width of the browser window to view the entire trace. This workaround is not user-friendly, especially for very long traces.
Open questions
No response

I think today you have the option of panning the view using keyboard shortcuts, but I agree that having a scroll bar as an alternative & more intuitive way is good.


Refactor container out of Router

The router currently needs a reference to the app container only to bind the Route callable to the container if the callable is a \Closure. Each route instance currently needs the container to locate the app's FoundHandler strategy if available, else it falls back to a default RequestResponseStrategy.
We should remove the container from the router and route instance and, instead, inject the FoundHandler strategy into the router during router creation while also adding FoundHandler getter/setter methods on the router should the end user wish to change it during runtime.
In App::map(), we are setting the route's output buffering setting. This should really be encapsulated in the router, imo. We can set this preference when we instantiate the router (discovered from app settings), and the router can assign the output buffering preference to each new route in Router::createRoute().
These changes will completely decouple the app container from router and route instances.

We can also add getter/setter methods to the Route instance to control individual route output buffering settings so that the end user can easily chain the method calls during route definition.
$app->get('/foo', 'callable')->setOutputBuffering(true);

Same methods will be used inside of Router instance based on the router's default output buffering preference set during router creation.

Another related concern are route groups, which need  a resolver and they need to bind their callables to the app instance itself.

Output buffering should be part of a view renderer not part of the router

Can't output buffering be handled in a middleware? Users could simply register the middleware on the routes, groups, etc. that you want it on... it'd have to be registered first though I suppose.

There's an argument that we just remove the output buffering thing altogether.
We'll need to ensure that a var_dump() still works though.

I'm all for removing output buffering, but I'm not sure how you omit that and allow var_dumping from a route callable at the same time.

var_dump et al will also end up causing header problems as well. but there is no way around it ;)

Something to look at…

Explicit tasks:

[ ] Let end-user inject found handler into router instance, else default to RequestResponse strategy
[ ] Let router inject found handler into each generated route inside of Router::createRoute()
[ ] Bind route callable to container outside of router
[ ] Remove container from router and route
[ ] Make adjustments to route group as necessary

WIP PR #2102

@akrabat Pretty sure the PR is ready for review. Is there anything I'm missing from the checklist above?

Closing


Build failure: Orca-Slicer 2.2.0 MeshBoolean.cpp

idk who to ask
@r-ryantm
Steps To Reproduce
Steps to reproduce the behavior:

build

Build log
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file src/libslic3r/MeshBoolean.cpp.rej
error: builder for '/nix/store/bdkjgw39wynf4gfmw3b0sap771k5avwv-orca-slicer-2.2.0.drv' failed with exit code 1;
       last 10 log lines:
       > Running phase: patchPhase
       > applying patch /nix/store/7jq52w8wjqykpiycbvhy1qkfw9rfr339-0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
       > patching file src/CMakeLists.txt
       > Hunk #1 succeeded at 188 with fuzz 1 (offset 13 lines).
       > applying patch /nix/store/v6c7kmf13nfrjgqyyr2j8m4xz9jf9wnf-meshboolean-const.patch
       > patching file src/libslic3r/MeshBoolean.cpp
       > Reversed (or previously applied) patch detected!  Assume -R? [n]
       > Apply anyway? [n]
       > Skipping patch.
       > 1 out of 1 hunk ignored -- saving rejects to file src/libslic3r/MeshBoolean.cpp.rej
       For full logs, run 'nix-store -l /nix/store/bdkjgw39wynf4gfmw3b0sap771k5avwv-orca-slicer-2.2.0.drv'.

Additional context
# TO BUILD
#  nix-build -E 'with import <nixpkgs> { }; callPackage ./orca-slicer.nix { } '

{ lib, fetchFromGitHub, fetchpatch, bambu-studio, opencv2 }:

bambu-studio.overrideAttrs (
  finalAttrs: previousAttrs: {
    version = "2.2.0";
    pname = "orca-slicer";

    src = fetchFromGitHub {
      owner = "SoftFever";
      repo = "OrcaSlicer";
      rev = "v${finalAttrs.version}";
      sha256 = "sha256-h+cHWhrp894KEbb3ic2N4fNTn13WlOSYoMsaof0RvRI=";
    };

    buildInputs = previousAttrs.buildInputs ++ [ opencv2 ];

    # Download and apply the patch
    patches = [
      (fetchpatch {
        url = "https://raw.githubusercontent.com/prusa3d/PrusaSlicer/refs/heads/master/src/libslic3r/MeshBoolean.cpp";
        sha256 = "sha256-Ya3+OlvDsFgN+51Xzf+GsZUKWQms7BGhdsnfyYYlp3Q=";
      })
    ];

    preFixup = ''
      gappsWrapperArgs+=(
        --set WEBKIT_DISABLE_COMPOSITING_MODE 1
      )
    '';

    postInstall = ''
      mv $out/LICENSE.txt $out/share/OrcaSlicer/LICENSE.txt
    '';

    meta = with lib; {
      description = "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)";
      homepage = "https://github.com/SoftFever/OrcaSlicer";
      license = licenses.agpl3Only;
      maintainers = with maintainers; [ zhaofengli ovlach pinpox ];
      mainProgram = "orca-slicer";
      platforms = platforms.linux;
    };
  }
)

Metadata

system: "x86_64-linux"
host os: Linux 6.6.56, NixOS, 24.05 (Uakari), 24.05.5993.cd3e8833d706
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.18.8
channels(root): "nixos-24.05"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

I'm not sure the tag build failure would be appropiate as the build of the current version (2.1.1) in nixpkgs builds ok.
You can check this PR https://github.com/NixOS/nixpkgs/pull/352156 for the change needed to build orca-slicer 2.2.0 ;)

@jonboh
But without the patch it has another error.
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file src/libslic3r/MeshBoolean.cpp.rej
error: builder for '/nix/store/g03kpmn4x91phh28dl7q1g6pj7b44l7l-orca-slicer-2.2.0.drv' failed with exit code 1;
       last 10 log lines:
       > Running phase: patchPhase
       > applying patch /nix/store/7jq52w8wjqykpiycbvhy1qkfw9rfr339-0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
       > patching file src/CMakeLists.txt
       > Hunk #1 succeeded at 188 with fuzz 1 (offset 13 lines).
       > applying patch /nix/store/v6c7kmf13nfrjgqyyr2j8m4xz9jf9wnf-meshboolean-const.patch
       > patching file src/libslic3r/MeshBoolean.cpp
       > Reversed (or previously applied) patch detected!  Assume -R? [n]
       > Apply anyway? [n]
       > Skipping patch.
       > 1 out of 1 hunk ignored -- saving rejects to file src/libslic3r/MeshBoolean.cpp.rej
       For full logs, run 'nix-store -l /nix/store/g03kpmn4x91phh28dl7q1g6pj7b44l7l-orca-slicer-2.2.0.drv'.

Look the patches applied in the PR:
    patches = [
      # Fix for webkitgtk linking
      ./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch

      ./dont-link-opencv-world.patch
    ];

the patches are the ones in https://github.com/NixOS/nixpkgs/tree/master/pkgs/applications/misc/bambu-studio
I'm able to build and run 2.2.0 in my fork with that.

With the merge of https://github.com/NixOS/nixpkgs/pull/352156 this no longer applies.
You should be able to consume orca-slicer on version 2.2.0 on the latests versions of nixpkgs-unstable.


Add default DN back in Venafi issuer

What this PR does / why we need it:
Venafi TPP errors on trying to sign a CSR with an empty DN. In 0.15 we stopped adding cert-manager as default org to all certs, making the DN empty by default (if no CN is set).
This adds the default behavior back for the Venafi issuer to not break compatibility.
Which issue this PR fixes
fixes #2905
Release note:

Default to `O = cert-manager` in the Venafi issuer if DN is empty

/kind bug
/cherry-pick release-0.15

/test pull-cert-manager-chart

Does this make https://github.com/jetstack/cert-manager/pull/2575 pass?

Looks good.  A few points:

Have you run the Venafi Issuer E2E tests to verify that this does work?

I wondered if it'd be possible to add validation to require that subject.organization is set if certificate when issuerRef refers to a Venafi issuer....I suppose there's no guarantee that the issuer has been created before the certificate that refers to it.

Would it be worth adding a unit-test to sign_test.go, to cover this case?

Sorry just saw this:
1: I tested this on my TPP instance and it works
2: would be nice but it will break people’s setup, definitely not ideal in a patch release.
3: i am rewriting this whole Venafi issuer in another PR. I can add it but it will be replaced in a few days for v0.16

I wondered if it'd be possible to add validation to require that subject.organization is set if certificate when issuerRef refers to a Venafi issuer....I suppose there's no guarantee that the issuer has been created before the certificate that refers to it.

Applying conditional logic at the apiserver based level isn't what we want, this creates unpredictable results and could be problematic further down the line (i.e. a previously persisted object can become invalid, meaning future Updates of that resource will always fail).
We could apply a validation check in the Venafi CertificateRequest implementation to auto-fail any CSR that does not specify a particular field (i.e. Organization), although I'm not sure if this truly is a policy we want to apply as I imagine certain CA/issuing backends won't have this requirement.

/lgtm

/cherry-pick release-0.15


Incorrect comment

"Therefore, it is recommended to keep your DbSet properties non-nullable - allowing you to access them without null checks - and to silence the compiler warnings by explicitly setting them to null with the help of the null-forgiving operator (!):"
Setting them to null? But hey are never null.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 93c3721a-da23-d9ea-a054-9d786d2ff4d2
Version Independent ID: 6d3b0f96-6642-75e5-93c8-02c23f142ac4
Content: Working with nullable reference types - EF Core
Content Source: entity-framework/core/miscellaneous/nullable-reference-types.md
Product: entity-framework
Technology: entity-framework-core
GitHub Login: @roji
Microsoft Alias: avickers

@Tommigun1980 the point here is that since the DbSet properties are non-nullable, the compiler will refuse to build the code without initializing them, since it doesn't know they always get late-initialized by EF Core. Therefore, in order to satisfy the compiling, it's possible to force-initialize these properties to null with the null-forgiving operator - null will never actually be visible to any consumer of those properties.
Do you see any issue with the guidance or with the wording?


test cases fail in test_helper.py

============================================================ short test summary info ============================================================
FAILED test/test_helper.py::test_display_remaining_overall_budget_cost_lt_limit - AssertionError: expected call not found.
FAILED test/test_helper.py::test_display_remaining_overall_budget_cost_eq_limit - AssertionError: expected call not found.
FAILED test/test_helper.py::test_display_remaining_overall_budget_gt_limit - AssertionError: expected call not found.
FAILED test/test_helper.py::test_getBudgetTypes - AssertionError: assert ['category', ...t', 'overall'] == ['category', 'overall']
=================================================== 4 failed, 218 passed, 1 warning in 10.53s ===================================================

solved https://github.com/vegechick510/DollarBot/commits/main/


inbound_htlc_maximum_msat might be too low

While investigating #4 I realized that every channel has inbound_htlc_maximum_msat and outbound_htlc_maximum_msat set to 3001000:
[src/cli.rs:1265] &chan_info = ChannelDetails {
    counterparty: ChannelCounterparty {
        // [...]
        outbound_htlc_minimum_msat: Some(
            3000000,
        ),
        outbound_htlc_maximum_msat: Some(
            3001000,
        ),
    },
    inbound_htlc_minimum_msat: Some(
        3000000,
    ),
    inbound_htlc_maximum_msat: Some(
        3001000,
    ),
    // [...]
}

You can see this if you add a dbg!(&chain_info) in list_channels.
3001000 might be too low as it's just 1000 msat above the minimum htlc value. Worth investigating.

I looked into that some time ago and from what I remember the reason for that is a configurable parameter of the channel: max_inbound_htlc_value_in_flight_percent_of_channel
It is by default 10 and is used by Channel's get_holder_max_htlc_value_in_flight_msat().
So the value 3001000 comes from the channel size, which in tests is always 30010 sats, which has been set to that particular value precisely to support payments of 3000000 msats.
Supporting bigger payments is possible by either increasing the channel size or by changing the channel's percentage to a higher value than default.
If this makes sense to you and there are no more concerns I'd close this.


Cannot authenticate

Hello!
I have an authentication process that I need to implement and it's done via basic-auth. It's working via Paw and Postman and via an old Objective-C app, but now I started a new Swift 3 app with Alamofire 4 and RxSwift and I'm having issues sending it.
My problem is that the authorizationHeader(user: String, password: String) -> (key: String, value: String) method is the exact thing I need.
I just don't know how to access it and add it to the request headers (since the URLRequest is static now, instead of the mutable on as in Alamofire 3 had)
Can anyone point me into a right direction?
I have also tried using the authenticate method directly, but to no avail:
class func Authenticate(router: Router, username: String, password: String) -> Observable<Any> {
        return Observable.create({ observer in
            let request = Alamofire.request(router)
                .authenticate(user: username, password: password, persistence: URLCredential.Persistence.forSession)
                .responseJSON(completionHandler: {
                    response in

                    switch response.result {
                    case .success(let value):
                        if Router.debugNetworking {
                            print("printing json directly from response: \(value)")
                        }
                        observer.on(.next(value))
                        observer.on(.completed)

                    case .failure(let error):
                        print("Error: \(error)")
                        observer.on(.error(NetworkError.ServerConnectionProblems(message: error.localizedDescription)))
                    }

                })
            request.resume()
            return Disposables.create {
                request.cancel()
            }
        })
    }

So I either need to attach this exact key-value pair to the request header:
open static func authorizationHeader(user: String, password: String) -> (key: String, value: String)? {
        guard let data = "\(user):\(password)".data(using: .utf8) else { return nil }

        let credential = data.base64EncodedString(options: [])

        return (key: "Authorization", value: "Basic \(credential)")
    }

or the authenticate method working as expected

The .authenticate() function is proper way to add basic auth credentials, but you can take a look at our AuthenticationTests file to see how we test this functionality. First, though, I would check and make sure your requests are being made as you expect and the server is seeing the credentials.
If you find an issue with Alamofire, feel free to open a new issue, otherwise these types of questions are best suited for Stack Overflow with tag Alamofire. We use our GitHub project for bug reports and feature requests.
Best of luck! 🍻

From our Contribution Guidelines
Asking Questions
We don't use GitHub as a support forum. For any usage questions that are not specific to the project itself, please ask on Stack Overflow instead. By doing so, you'll be more likely to quickly solve your problem, and you'll allow anyone else with the same question to find the answer. This also allows maintainers to focus on improving the project for others.

I actually tested and can tell for sure that .athenticate() is not working. I had to add custom header for it to work

Were you able to see any request logs to see if the .authenticate() method was adding the basic auth correctly? I don't think there's anything for Alamofire to do here, as our authentication support goes through the system libraries, but it would be interesting to know what the exact issue was just in case.

@danipralea Anything more to add? We'd like to narrow down why this wasn't working, but all of our tests pass. Perhaps your server didn't accept typical basic-auth? I've manually verified Alamofire works correctly, both in our tests and against HTTPBin's basic-auth endpoint.

I can confirm my server allows basic-auth. Tested with Postman and Paw as well.
I can do additional tests if you need me to, just tell me which ones, cause I already switched my implementation

@danipralea I'm mostly interested in what the request difference was that made your requests not work. That is, what was different between the requests returned by .authenticate() and you manual header addition.

Hi @danipralea,
Have a look at this authentication test. It demonstrates how to use the authorizationHeader API when creating a Request.
Cheers. 🍻

thanks. I already did it that way 😄


[Question] Is DBeaver opening ports in LISTEN mode? What for?

Just installed latest (6.2.4) version, but never checked before so might be something appening before as well.
DBeaver opens LISTENING ports in IPv6, open to the world
tcp6       0      0 :::35073                :::*                    LISTEN      8562/java
tcp6       0      0 <IP_ADDRESS>:38214         :::*                    LISTEN      8562/java
tcp6       0      0 :::26541                :::*                    LISTEN      8562/java

What are those for? Can't they be opened on localhost only?
Might it be PG debugger module maybe?
If so, and whatever the answer, how do i prevent those world-listening ports to open?

I think it is RMI server. You can see it in startup log:
Starting RMI server at XXXX

It is used for intercommunication between dbeaver processes (e.g. when you start second dbeaver process to open sql file it connects to the running GUI and processing the call thru it).
I don't think that we can just disable it.
Does it do any harm?
Perhaps we should limit IP address binding with <IP_ADDRESS> or something like this.

Does it do any harm?

Weeell.... A port open to the world... Not something i want :-D ;-)
Yes, i am firewalled etc, but if you need it, just bind to localhost (<IP_ADDRESS> or ::1)

Also it is possible that some JDBC drivers may listen ports (by their own reasons). What drivers do you use? PG driver doesn't do it.
PG debugger starts dbeaver-side listener only when you activate debugger.
I'll dig it a bit more..

I just started using DBeaver, nice piece of software.
I can confirm that it opens 2 different TCP ports on my pc: 31592 and 46731.
The startup log confirms that port 46731 is used by the RMI server; no info about the other port.
I find it quite irresponsible for a software to open a tcp port to the whole world just to implement IPC.
A small bug in the RMI server could lead to remote code execution while DBeaver is running.

I just started using DBeaver, nice piece of software.
I can confirm that it opens 2 different TCP ports on my pc: 31592 and 46731.
The startup log confirms that port 46731 is used by the RMI server; no info about the other port.
I find it quite irresponsible for a software to open a tcp port to the whole world just to implement IPC.
A small bug in the RMI server could lead to remote code execution while DBeaver is running.

@uslss @serge-rider : was this closed because it was fixed? Or was it closed because it won't be fixed? It's still a huge security vulnerability. There doesn't appear to be a valid reason not to use localhost or ::1. If this needs to be overridden for a debug console or other, it should be configurable. But the default option / behavior should be secure by design.

It has been fixed, at least for the RMI port:
https://github.com/dbeaver/dbeaver/issues/10944


Fix negative interval parsing bug

Which issue does this PR close?

Closes #4237.
Rationale for this change

What changes are included in this PR?

Ensure correctly discarding high bits of components of IntervalDayTime and IntervalMonthDayNano before combining them with bitwise operations into single integer
Are these changes tested?

Added additional user tests
Are there any user-facing changes?

Thanks @Jefffrey and @viirya  and @andygrove -- it is great to see the momentum here


Hydrogen can't find ipykernel launcher

Description:
When running simple python script with Hydrogen, receive error in: /usr/bin/python: No module named ipykernel_launcher
Using Python 3 installed with homebrew. Jupyter notebooks run fine from the terminal and ipython works within that environment, but within Atom, Hydrogen cannot seem to start the kernel. When selecting Kernel within Hydrogen, "Python 3" shows up as automatically found kernel to select.
Steps to Reproduce:

Run python script

Versions:
macOS 10.12.4
Atom 1.16.0
Hydrogen 1.11.2
Logs:
/usr/bin/python: No module named ipykernel_launcher

I also ran into this. It's looking for the Python 2 version of ipykernel_launcher but I only had IPython installed in Python 3. Fixed with pip install ipython ipykernel.
Now the Python 3 kernel works for me.

Is there a reason Hydrogen doesn't use the Python 3 version of the ipykernel_launcher when it's available?

Hmm. So in macOS the system install of Python2.7 is protected, so your solution would require me to install a separate python2 than used by the system. Certainly doable, but perhaps I can second your question:
"Is there a reason why Hydrogen should not use the Python 3 version of the ipykernel_launcher when it's available?"

Is there a reason why Hydrogen should not use the Python 3 version of the ipykernel_launcher when it's available?

No reason to use one or the other. It is a preference left up to the user.
Like you mentioned, Mac and Linux distributions often ship with Python2 and/or 3 installed. You can install another version of python side-by-side without issues (at least in my experience). I have had good luck with the python3 anaconda distributions.

No reason to use one or the other. It is a preference left up to the user.

How is this preference set? As I mentioned above, the Python 3 kernel is found by Hydrogen (and selected), but for some reason the error in launching the kernel remains...

Could you try opening a terminal and running jupyter kernelspec list --json and pasting the output here?

See below, but remember that jupyter runs fine (notebook, etc in local server / browser).
{
"kernelspecs": {
"python3": {
"resource_dir": "/usr/local/share/jupyter/kernels/python3",
"spec": {
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"env": {},
"display_name": "Python 3",
"language": "python"
}
}
}
}

similar issue on #720 . Both issues mention ipykernel_launcher module missing.

Similar issue on nteract desktop: https://github.com/nteract/nteract/issues/1640

@daborton Could you try running python3 -m ipykernel install --user?
It looks like the python executable points to the default Python 2 installation.

I'm seeing something really odd right now where a python3 kernel named as python3 will actually launch python2 (and by extension only IPython 5.x...).
$ diff python3/kernel.json pythonwtf/kernel.json
9c9
<  "display_name": "Python 3",
---
>  "display_name": "Python 3 WTF",
11c11
< }
\ No newline at end of file
---
> }
kylek@nfml-83G ~/Library/Jupyter/kernels$ cat python3/kernel.json
{
 "argv": [
  "/usr/local/opt/python3/bin/python3.6",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

With my WTF kernel, I get an actual Python3 setup. With the python3 kernel it's really launching Python2. WTF?

Does it happen if you delete the kernels and reinstall them?

Wait the only difference is the display name? That's strange.
Is the output of jupyter kernelspec list --json consistent with the json files?
/usr/local/opt/python3/bin/python3.6 isn't symlinked to some python2 executable, right?

Yeah, I tried out deleting the python3 kernel and running the python3 -m ipykernel install --user command. This is pretty strange. One difference we have to jupyter is that we don't inherit a system python, we're running the argv from the kernel.json directly.

Yeah, the output is consistent with the json files.

kylek@nfml-83G ~$ ls -la /usr/local/opt/python3/bin/python3.6
lrwxr-xr-x  1 kylek  admin  57 Mar 21 00:47 /usr/local/opt/python3/bin/python3.6 -> ../Frameworks/Python.framework/Versions/3.6/bin/python3.6
kylek@nfml-83G ~$ ls -la /usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/bin/python3.6
-rwxr-xr-x  2 kylek  admin  13620 Apr  4 12:46 /usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/bin/python3.6

$ /usr/local/opt/python3/Frameworks/Python.framework/Versions/3.6/bin/python3.6 --version
Python 3.6.1

Do nteract and Hydrogen behave the same?

What does jupyter kernelspec list output?

Oh no I opened this issue from my phone just now and must remind myself to come back with answers.

pip install --upgrade ipykernel

@lgeiger sorry for the delay. Ran, and response is:
Installed kernelspec python3 in /Users/daborton/Library/Jupyter/kernels/python3
same issue, when running Hydrogen in Atom, yields same:
/usr/bin/python: No module named ipykernel_launcher

@willingc:
$ jupyter kernelspec list
Available kernels:
  ir            /Users/kylek/Library/Jupyter/kernels/ir
  javascript    /Users/kylek/Library/Jupyter/kernels/javascript
  python2       /Users/kylek/Library/Jupyter/kernels/python2
  python3       /Users/kylek/Library/Jupyter/kernels/python3
  pythonwtf     /Users/kylek/Library/Jupyter/kernels/pythonwtf
  scala         /Users/kylek/Library/Jupyter/kernels/scala

Trimmed output of jupyter kernelspec list --json (using jq):
{
  "pythonwtf": {
    "resource_dir": "/Users/kylek/Library/Jupyter/kernels/pythonwtf",
    "spec": {
      "language": "python",
      "display_name": "Python 3 WTF",
      "env": {},
      "argv": [
        "/usr/local/opt/python3/bin/python3.6",
        "-m",
        "ipykernel_launcher",
        "-f",
        "{connection_file}"
      ]
    }
  },
  "python3": {
    "resource_dir": "/Users/kylek/Library/Jupyter/kernels/python3",
    "spec": {
      "language": "python",
      "display_name": "Python 3",
      "env": {},
      "argv": [
        "/usr/local/opt/python3/bin/python3.6",
        "-m",
        "ipykernel_launcher",
        "-f",
        "{connection_file}"
      ]
    }
  },
  "python2": {
    "resource_dir": "/Users/kylek/Library/Jupyter/kernels/python2",
    "spec": {
      "language": "python",
      "display_name": "Python 2",
      "env": {},
      "argv": [
        "/usr/local/opt/python/bin/python2.7",
        "-m",
        "ipykernel_launcher",
        "-f",
        "{connection_file}"
      ]
    }
  }
}

@dr-john  Thanks, Upgrading ipykernel within virtualenv solved my problem.

@pankajkumar how did you do that?

@shpigunov You can upgrade ipykernel by running pip install --upgrade ipykernel

@lgeiger did that.
solved the issue for me.
thanks a million!

I have a similar issue, the same error but it looks like atom/hydrogen is looking for the kernel in the wrong place?  The error I am seeing is referencing: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: No module named ipykernel_launcher as the directory it's looking for the kernel but running jupyter kernelspec list --jsonoutputs:
  "kernelspecs": {
    "python3": {
      "resource_dir": "/Library/Frameworks/Python.framework/Versions/3.6/share/jupyter/kernels/python3",
      "spec": {
        "argv": [
          "python",
          "-m",
          "ipykernel_launcher",
          "-f",
          "{connection_file}"
        ],
        "env": {},
        "display_name": "Python 3",
        "language": "python"
      }
    }
  }
}

I went into the config file on atom to try and force it to look at the python 3 directory instead of the OSX default 2.7 directory my config file currently looks like:
  Hydrogen:
    kernelspec: '''
      {
        "kernelspecs": {
          "python3": {
            "resource_dir": "/Library/Frameworks/Python.framework/Versions/3.6/share/jupyter/kernels/python3",
            "spec": {
              "argv": [
                "python",
                "-m",
                "ipykernel_launcher",
                "-f",
                "{connection_file}"
              ],
              "env": {},
              "display_name": "Python 3",
              "language": "python"
            }
          }
        }
      }
    '''
  core:
    telemetryConsent: "no"
    themes: [
      "one-dark-ui"
      "atom-dark-syntax"
    ]
  "exception-reporting":
    userId: "e7139dd9-68d0-14cd-1aec-1f216d962304"
  runner:
    scopes:
      python: "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3"
  welcome:
    showOnStartup: false

I'm not entirely sure why it's still looking at /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Anyone know what i'm doing wrong here?

@echz We have a bug described in #856 that affects custom kernelspecs in some cases. Once #869 is merged the problem you describe could be resolved.

@echz Have you tried upgrading ipykernel by running pip install --upgrade ipykernel and removing your custom kernelspecs setting?

@echz we have merged the fix for custom kernelspecs and will probably ship very soon (maybe even tomorrow).
Or, if you want to try a dev version see this page from the docs

Hi @lgeiger I have upgraded my ipykernel. I think it's more related to having two Python versions on OSX, the default 2.7 that comes with OSX and the 3.6 version.

The problem seems to be on the jupyter side. Looks like python in "argv": [ "python",..] points to your systems default Python 2.7 installation.
You can try running: python3 -m ipykernel install --user which may fix this. If not, changing "argv": [ "python",..] to point to Python 3 in /Library/Frameworks/Python.framework/Versions/3.6/share/jupyter/kernels/python3 or inside the Hydrogen settings should fix it.

is this fixed?

@aeromomo For me this looks like a ipykernel issue, which can be fixed by updating ipykernel for most people.
Though https://github.com/nteract/hydrogen/issues/730#issuecomment-299525167 seams to still exist.

This fix the problem in my case on Mac OS X: python3 -m ipykernel install --user

@lgeiger @rgbkrk Do you want to go ahead and close this issue? If Kyle's comment about JSON exists still, perhaps that would work better as another issue.

Yeah, I think we can close it. Solution is to fully upgrade ipython and reinstall the kernelspec.

I'm having this same I'm having this same issue here...
I've tried updating ipykernel, and that hasn't fixed the problem. Any advice? Where should I look to fix things?

My problem with ipykernel was path-related. Be aware that python3 -m ipykernel install --user as proposed by phanhoangphuong above stores the kernel for Python 3 in a folder named python3. My Hydrogen is looking for "python", so a simple symbolic link did it for me:
ln -s ~/Library/Jupyter/kernels/python3 ~/Library/Jupyter/kernels/python

(Not a Jupyter expert here. Just getting Hydrogen working for the first time.)
I chose the solution proposed by @lgeiger because it leaves default macOS Python and Homebrew Python 3 completely alone. I copied the Terminal output of jupyter kernelspec list --json into Hydrogen settings Kernal Specs but changed the first argv from python to python3.
@joseflilljegren, thanks for the symbolic link trick. I’ll note that one for future reference.
Could anyone explain what python3 -m ipykernel install --user actually does?
Also, pip3 install --upgrade ipykernel?

On Mac OS X this line fixes the error once and for all:- python3 -m ipykernel install --user
Run this command in the terminal and in a second problem will be gone.
(woke up the whole night to find this solution...)

I have a similar issue on linux. I use pyenv to create virtual envs for different python versions. I know that I had to change the point to the binary in hydrogen. After a recent update I am not able to find this anymore. Hydrogen points to a different version of python that I am using, can somebody tell me where this point is in the package?

@cvanelteren Just installed hydrogen today and had the same issue on linux, solved by linking:
ln -s .local/share/jupyter/kernels/python3 .local/share/jupyter/kernels/python

In most cases above the "argv" dictionary key in the json output (jupyter kernelspec list --json) points to the system default version of python . If you have multiple python versions installed, i.e. 2.x.x or 3.x.x on the same system, this command will call your default version. You can check your default version by running:
python --version
I take it most people want to run with python 3.
To fix this issue in Atom you have to change "argv" entry from python to python3.
To do this run:
jupyter kernelspec list --json
Save/Copy the output and change:
argv": [ "python" ...   to   argv": [ "python3"
Copy the changed (complete JSON) and in Atom:
Edit->Prefferences->Packages->Hydrogen->Kernel Specs
paste the result

Edit->Prefferences->Packages->Hydrogen->Kernel Specs

There is no Kernel Specs option in the Hydrogen settings menu.

That's quite strange. I am running Hydrogen v1.22.0 and Atom v1.19.3 .
Also, I'm running it on Ubuntu 16.04.
What is your setup?

Atom 1.19 is quite old and doesn't support the newest version of Hydrogen. After upgrading Atom, you'll be able to use the latest version of Hydrogen (v2.2.3)

Updated. It seems Kernel Specs are no longer available. Am I correct in assuming that the Language Mappings json would serve the same purpose as Kernel Specs in previous versions.
i.e.
(Kernel Specs) argv": [ "python" ... to argv": [ "python3"  ===>  (Language Mappings) {"python": "python3"}

I don't see kernelspecs on the settings page either.

For what it is worth, the following rigmarole succeeded for me:  I'm using Mac OS High Sierra 10.13.4 and I have Homebrew 1.6.3. I already set up my /usr/local/bin/python2.7 and /usr/local/bin/python3.6 via brew. I'm  have Atom 1.27.0 installed via brew cask and Hydrogen-2.5.0  installed via the Atom package manager.
It is essential to straighten out which python is which ...
$ which python
/usr/bin/python              # Mac OS bundled python, _avoid_

$ which python2
/usr/local/bin/python2   # Installed via brew

$ which python3
/usr/local/bin/python3   # Installed via brew

If this looks sane, we may proceed to the installation of jupyter and the python3, python2 kernels and thier specs:
# set up jupyter and kernel spec for python3 in user's $HOME
pip3 install --upgrade jupyter
python3 -m ipykernel install --user

# set up kernel spec for python2 in user's $HOME
pip2 install --upgrade ipykernel

# kernel set up may fail with error concerning zeromq, so reinstall first
brew reinstall zeromq
pip2 uninstall pyzmq ; pip2 install pyzmq
python2 -m ipykernel install --user

Now we may check whether the kernal specs look good:
$ jupyter kernelspec list --json
{
  "kernelspecs": {
    "python3": {
      "resource_dir": "/Users/redscharlach/Library/Jupyter/kernels/python3",
      "spec": {
        "argv": [
          "/usr/local/opt/python/bin/python3.6",
          "-m",
          "ipykernel_launcher",
          "-f",
          "{connection_file}"
        ],
        "env": {},
        "display_name": "Python 3",
        "language": "python",
        "interrupt_mode": "signal",
        "metadata": {}
      }
    },
    "python2": {
      "resource_dir": "/Users/redscharlach/Library/Jupyter/kernels/python2",
      "spec": {
        "argv": [
<EMAIL_ADDRESS>          "-m",
          "ipykernel_launcher",
          "-f",
          "{connection_file}"
        ],
        "env": {},
        "display_name": "Python 2",
        "language": "python",
        "interrupt_mode": "signal",
        "metadata": {}
      }
    }
  }

}

After this I restarted Atom and checked that Hydrogen appeared to handle python3 and python2 code when the correct Jupyter kernel was selected.

I'm still experiencing this issue also on macOS 10.14.3

apm  2.1.3
npm  6.2.0
node 8.9.3 x64
atom 1.34.0
python 2.7.10
git 2.17.2

atom was installed with brew cask
Available kernels:
  python3    /usr/local/share/jupyter/kernels/python3

pip3 install -U ipython ipykernel

Requirement already up-to-date: ipython in /usr/local/lib/python3.7/site-packages (7.2.0)
Requirement already up-to-date: ipykernel in /usr/local/lib/python3.7/site-packages (5.1.0)
Requirement already satisfied, skipping upgrade: setuptools>=18.5 in /usr/local/lib/python3.7/site-packages (from ipython) (40.6.3)
Requirement already satisfied, skipping upgrade: prompt-toolkit<2.1.0,>=2.0.0 in /usr/local/lib/python3.7/site-packages (from ipython) (2.0.7)
Requirement already satisfied, skipping upgrade: backcall in /usr/local/lib/python3.7/site-packages (from ipython) (0.1.0)
Requirement already satisfied, skipping upgrade: pygments in /usr/local/lib/python3.7/site-packages (from ipython) (2.3.1)
Requirement already satisfied, skipping upgrade: pickleshare in /usr/local/lib/python3.7/site-packages (from ipython) (0.7.5)
Requirement already satisfied, skipping upgrade: traitlets>=4.2 in /usr/local/lib/python3.7/site-packages (from ipython) (4.3.2)
Requirement already satisfied, skipping upgrade: decorator in /usr/local/lib/python3.7/site-packages (from ipython) (4.3.0)
Requirement already satisfied, skipping upgrade: pexpect; sys_platform != "win32" in /usr/local/lib/python3.7/site-packages (from ipython) (4.6.0)
Requirement already satisfied, skipping upgrade: jedi>=0.10 in /usr/local/lib/python3.7/site-packages (from ipython) (0.13.2)
Requirement already satisfied, skipping upgrade: appnope; sys_platform == "darwin" in /usr/local/lib/python3.7/site-packages (from ipython) (0.1.0)
Requirement already satisfied, skipping upgrade: jupyter-client in /usr/local/lib/python3.7/site-packages (from ipykernel) (5.2.4)
Requirement already satisfied, skipping upgrade: tornado>=4.2 in /usr/local/lib/python3.7/site-packages (from ipykernel) (5.1.1)
Requirement already satisfied, skipping upgrade: wcwidth in /usr/local/lib/python3.7/site-packages (from prompt-toolkit<2.1.0,>=2.0.0->ipython) (0.1.7)
Requirement already satisfied, skipping upgrade: six>=1.9.0 in /usr/local/lib/python3.7/site-packages (from prompt-toolkit<2.1.0,>=2.0.0->ipython) (1.12.0)
Requirement already satisfied, skipping upgrade: ipython-genutils in /usr/local/lib/python3.7/site-packages (from traitlets>=4.2->ipython) (0.2.0)
Requirement already satisfied, skipping upgrade: ptyprocess>=0.5 in /usr/local/lib/python3.7/site-packages (from pexpect; sys_platform != "win32"->ipython) (0.6.0)
Requirement already satisfied, skipping upgrade: parso>=0.3.0 in /usr/local/lib/python3.7/site-packages (from jedi>=0.10->ipython) (0.3.1)
Requirement already satisfied, skipping upgrade: python-dateutil>=2.1 in /usr/local/lib/python3.7/site-packages (from jupyter-client->ipykernel) (2.7.5)
Requirement already satisfied, skipping upgrade: pyzmq>=13 in /usr/local/lib/python3.7/site-packages (from jupyter-client->ipykernel) (17.1.2)
Requirement already satisfied, skipping upgrade: jupyter-core in /usr/local/lib/python3.7/site-packages (from jupyter-client->ipykernel) (4.4.0)

Should I open a new issue ?

@wesinator
Try:
python3 -m ipykernel install

@kylebarron
Installed kernelspec python3 in /usr/local/share/jupyter/kernels/python3
When I run "Start Local Kernel" > Python 3, it doesn't do anything; show the error or run.

I  think that's the same as https://github.com/nteract/hydrogen/issues/1538. What's the output of jupyter kernelspec list --json?

@kylebarron
{
  "kernelspecs": {
    "python3": {
      "resource_dir": "/usr/local/share/jupyter/kernels/python3",
      "spec": {
        "argv": [
          "/usr/local/opt/python/bin/python3.7",
          "-m",
          "ipykernel_launcher",
          "-f",
          "{connection_file}"
        ],
        "env": {},
        "display_name": "Python 3",
        "language": "python",
        "interrupt_mode": "signal",
        "metadata": {}
      }
    }
  }
}

Seems to be running now, when I did Hydrogen: Run it worked and shows the menu in the bottom left.
I think https://github.com/nteract/hydrogen/issues/730#issuecomment-462523232 fixed the kernel issue. I guess I need to read the docs more on how to run it.
Thanks!

@wesinator
The argv part of the kernelspec output means that when you start Jupyter, it tries to run the Python executable found at /usr/local/opt/python/bin/python3.7. If that's not the Python you want to run, you should change that. That's set automatically to be the same Python as is run during the python -m ipykernel install step. So it sounds like you have multiple Python 3 installations on your machine.

please run  "python3 -m ipykernel install --user"


User Story from OS (24-02-2020) #5

As an autistic user
I would like to...
Be able to enter my experience in writing
Because...
It's easier for me to share that way and I can be more specific.
Acceptance criteria
The platform can take input in writing from users.

Notes

Associated pull request:
Current status:

Updates

Thank you for this Otis! Closing this issue now as this feature is now included in the platform


Fix isolation for sticky tasklist

What changed?

Update sticky tasklist isolation matching to not use poller information to get isolation group

Why?
sticky tasklist doesn't know pollers from all isolation groups

How did you test it?
new test

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 0187bef1-5f70-48bd-b6c5-fff54a7c4ef4

29 of 45 (64.44%)  changed or added relevant lines in 2 files are covered.
174 unchanged lines in 18 files lost coverage.
Overall coverage decreased (-0.07%) to 57.107%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

service/matching/taskListManager.go
26
31
83.87%

service/matching/taskReader.go
3
14
21.43%

Files with Coverage Reduction
New Missed Lines
%

client/history/client.go
2
38.1%

client/history/metricClient.go
2
45.3%

common/peerprovider/ringpopprovider/config.go
2
81.58%

common/persistence/executionManager.go
2
78.94%

service/history/handler.go
2
47.15%

service/frontend/workflowHandler.go
4
60.24%

service/history/task/transfer_standby_task_executor.go
4
86.93%

service/matching/taskListManager.go
4
82.76%

common/persistence/statsComputer.go
5
94.64%

common/persistence/nosql/nosqlplugin/cassandra/workflow.go
6
59.55%

Totals

Change from base Build 0187bedd-3727-466b-a67a-e696343772cd:
-0.07%

Covered Lines:
86464

Relevant Lines:
151408

💛  - Coveralls


[SPARK-15557][SQL] cast the string into DoubleType when it's used together with decimal

In this case, the result type of the expression becomes DECIMAL(38, 36) as we promote the individual string literals to DECIMAL(38, 18) when we handle string promotions for BinaryArthmaticExpression.
I think we need to cast the string literals to Double type instead. I looked at the history and found that  this was changed to use decimal instead of double to avoid potential loss of precision when we cast decimal to double.
To double check i ran the query against hive, mysql. This query returns non NULL result for both the databases and both promote the expression to use double.
Here is the output.

Hive

hive> create table l2 as select (cast(99 as decimal(19,6)) + '2') from l1;
OK
hive> describe l2;
OK
_c0                 	double

MySQL

mysql> create table foo2 as select (cast(99 as decimal(19,6)) + '2') from test;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> describe foo2;
+-----------------------------------+--------+------+-----+---------+-------+
| Field                             | Type   | Null | Key | Default | Extra |
+-----------------------------------+--------+------+-----+---------+-------+
| (cast(99 as decimal(19,6)) + '2') | double | NO   |     | 0       |       |
+-----------------------------------+--------+------+-----+---------+-------+

How was this patch tested?
Added a new test in SQLQuerySuite

Test build #59537 has started for PR 13368 at commit 46f3495.

Test build #59537 has finished for PR 13368 at commit 46f3495.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/59537/
Test PASSed.

cc @yhuai @davies , do you still remember why we promote string to decimal(38, 18) instead of double?

In MySQL
mysql> select cast(99 as decimal(19, 6)) + '3.000000000000001';
+--------------------------------------------------+
| cast(99 as decimal(19, 6)) + '3.000000000000001' |
+--------------------------------------------------+
|                                              102 |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> select cast(99 as decimal(19, 6)) + 3.000000000000001;
+------------------------------------------------+
| cast(99 as decimal(19, 6)) + 3.000000000000001 |
+------------------------------------------------+
|<PHONE_NUMBER>00000001 |
+------------------------------------------------+
1 row in set (0.00 sec)

It's hard to pick the reasonable precision and scale for a string, so DoubleType sounds better.
LGTM

@dilipbiswal Could you update the title of this PR to say what's the actual change in this PR (something like `cast the string into DoubleType when it's used together with decimal")?

@davies Hi Davies, Thank you very much for your review. I have updated the PR title as per your suggestion.

Merging this into master and 2.0, thanks!


Support for BF.MADD

further reference https://oss.redislabs.com/redisbloom/Bloom_Commands/#bfmadd

@filipecosta90 Already supported. Should we close it?

@filipecosta90 Already supported. Should we close it?

yes. thank you :)


Micropython Implementation of Python-i2c-sf06-If

I have been trying to use the SLF3S-1300F Liquid Flow Sensor with an ESP32-S2 over I2C, but have been experiencing alot of issues with getting it to communicate on the bus when i stubbled across this python implementation. Has this been ported or able to be ported easily to Micropython? I realize that this is off topic but thought i would ask

Hello @TDoggin ,
Unfortunately we do no have any MicroPython implementation available. I will however report your interest into having MicroPython drivers. Hopefully we will be able to provide them in the future.
When it comes to porting it yourself, I do not see any obvious issue. MicroPython even includes some I2C tools that will greatly simplify the work.
If Arduino is an option for your project, we have the Arduino driver for SF06 LF. Using the given example you should not have any issues communicating with the sensor.
Feel free to reach out if you need further help.


As a preservation administrator, I would appreciate if there were a batch load option utilizing an import of a spreadsheet or other text file.

I'm finding using the application more time consuming in the post-process phase, as I have to individually assign files for each item.  This would have taken maybe fifteen to thirty minutes with the spreadsheet, but assigning files manually (when the collection does have some "single" items as well as double-sided items) is going to take me hours.

Is the assign feature in Carpenters not working as expected? The assign feature was created to help with assigning each file separately. Do you see that feature changing in some way?

I was afraid to use it, frankly, because there were "single" items scattered into each area of the hierarchy, so selecting "2 files" would have resulted in incorrect assignment of files, and I was unsure how much cleanup work that would entail and thought it might be more straightforward and potentially less complicated if I had more control over the process.

Sounds like we might want to rethink how that feature should be designed. Having something in Carpenters that makes you afraid to use it, isn't a feature that should be there.

Yeah--- also, as the collections scale up in size, it would be rather difficult to manually assign files--there would be so much clicking and dragging involved, whereas some sort of import file that could be quickly created by hand (and read by the system) could do that work for me.

We can simplify what the students are creating... they are essentially just creating a list of filenames with hard returns to indicate the next object. Could easily just use a one-column spreadsheet and not the old one, etc., since I wouldn't have to structure anything at this point.

@ajkrewer Why not have the students do the assignment in Carpenters instead of creating a list?

@metaweidner   I will continue to stand behind my position that having the students use Carpenters would slow production and would greatly increase the time required for QC'ing a project.  I've demoed Carpenters for Crystal, so she has an idea of the tool's functionality.  You may want to consult her for more detailed, machine-specific workflow concerns during our prioritization meeting.

This issue has been superseded by recent changes in workflow design and Carpenters functionality.


v1.0.0:SD_WU_3:When finished, file size should update: file size doesn't not get updated automatically

Try to upload files in first_container to another folder. File size remains 0. Must refresh the page to get the size of file uploaded.

Please ignore the description above: see the description in this comment:
Try to upload files in first_container. File size remains 0. Must refresh the folder view in order to get the size of file uploaded.

tested on chrome 43.0.2357.130 m.

Tested on scidrive 2: the issue has not been fixed.

Fixed

Tested and confirmed the fix.


Make topology physical node-aware when detailed info is not available

Original issue: https://charm.cs.illinois.edu/redmine/issues/337

TopoManager should be physical code aware atleast for cases where detailed topology info is not available.

Original date: 2017-02-09 16:26:36

Fix here:
~~https://charm.cs.illinois.edu/gerrit/#/c/2227/~~ https://github.com/UIUC-PPL/charm/commit/fa88d7f97cc947105af60fdb7e3dd60f1c65b705


ALINE in immediate mode doesn't work on a time axis plot

Reported by hankin on 6 Oct 2000 23:05 UTC
! err522_aline.jnl
! sh 10/00
! immendiate mode aline doesn't work on a time axis plot
let a = sin(T[a,a+1,a+2
ppl aline/nouser 1,0,-1,3,-1   ! nothing shows up
pause
let b = sin(Xx=0:100:1
plot)/100)
plot b,b+1,b+2
ppl aline/nouser 1,0,-1,3,-1  ! ok
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/163

Comment by<EMAIL_ADDRESS>on 21 Oct 2003 20:15 UTC
Moving from the<EMAIL_ADDRESS>user to the<EMAIL_ADDRESS>user.

Comment by<EMAIL_ADDRESS>on 31 Oct 2003 22:39 UTC
*** This bug has been marked as a duplicate of 78 ***


Updated the javascript viewer to load vim 1.0

WebGL Order of Execution
Milestone 0

Strip the old references to Ara3D

Rename "araviewer" to "vimviewer"

Hide the dat.gui controls on default
Add VIM branding to the viewer – this is for the public Repo, and for a VIM hosted viewer, if EE wants to fork and remove branding they can.
Create configuration options for EE ???
Host the viewer on a high-performance CDN, so EE can use it (tbd - does EE host their fork?)
Document best practices for hosting and serving VIMs

Compress them
Put them on a server (e.g. azure blob)
Keep the name ".vim"
Serve it with the current content type (gzip)
Let the client unencode

VimApi

instantiated/returned from current ara.view
Dispose()
ElementManager:

getElementIndices(): int[]
getBoundingBoxFromElement(int elementIndex)
getBoundingBoxFromElementCollection(int[] elementIndex)
setElementVisibility(int elementIndex, bool isVisible): void

disable mergeSingleInstances (to provide simplified implementation for toggling visibility of   individual elements)
(some complexity here to bind to ThreeJS InstancedMesh)
How do we modify the visibility of instances inside an InstancedMesh?

Juggle matrices and count (requires bookkeeping)

setElementCollectionVisibility(int[] elementIndices, bool isVisible): void

SceneManager:

getBoundingBox(): box

CameraManager:

Frame scene on load (i.e. position camera, and set its orientation)
frameToBoundingBox(box)

Milestone 2

Add a spinner for showing progress while loading the VIM

(Percent done will be hard to compute, since served zip content, does not tell the total size, could parse the first chunk of the BFAST for that, and then guess)

Need a callback in the "options" for the progress.
Integrate previous camera controls: see https://github.com/vimaec/vimaec.github.io/blob/master/js/CustomOrbitControls.js)
(to possibly optimize) per-face vertex duplication (and color vertices)

Milestone 3

Add "BVH" builder as optional step controlled by options

See old "WonderVIM" viewer
https://github.com/vimaec/vimaec.github.io/blob/master/js/three-mesh-bvh.js

Retrieve element index from mouse position (screen coordinates), if BVH is built
Api updates:

getElementIndex(screenCoordinates): integer


Expect matchers chaining.

It's nothing said about chaining in documentation, and it's kinda bad.
If you look on Leo it's bit more eye-candy when you write it.

In example:
Kahlan
$a = [1, 2, 3];
expect($a)->toBeA('array');
expect($a)->toContain(2)->toContain(3);

Leo
$a = [1, 2, 3];
expect($a)->to->be->a('array')->and->to->contain([2, 3]);

It's more human-readable i think

Even if not the best test framework, Jasmine tends to be one of the most popular client side. Since I'm switching a lot between JS & PHP code, I didn't want to change my mind to write specs every time. So that's why I started with the the Jasmine naming.
Each convention is a matter of choice and everybody has his own preference on this subject. So I prefered to follow a convention which won his spurs.

:+1:  ok, just wanna hear your opinion.


Connector docs

2nd part of moving connector docs to the main repo. With this, all reference documentation lives along with the code

I like, but this needs some changes in the markdown to show a proper title in the left navbar. Both for the index page and the single connector pages.
This is how it looks right now in the preview:

Also admonitions in the generated docs are not resolved anymore :(

most of this should be fixed in https://github.com/tremor-rs/tremor-runtime/pull/2332

@mfelsche most things addressed :) with the exception of the naming. I think that should be discussed separately as it would need to be uniform between all resources (codecs, connectors, etc ...)


PLS-3237 - fix add V2.1 student fields

@yratanov you need to commit changes made into Gemfile.lock.

@pikislabis you mean in pulse-app?

@pikislabis @drosam can you take a look please?

@pikislabis you mean in pulse-app?
I mean here @yratanov

@yratanov
https://github.com/mysencare/clever-ruby/blob/c0e5f6ac5a50d93a782d70641b41d4fa6abfe8fe/Gemfile.lock#L4
We need to put here 2.1.0

@pikislabis done!


Why not single page?

Single page seems much simpler (with a TOC in front if you like). I know I can use the search box on the left, but why not just Cmd/Ctrl+F

You mean a single page in what is served at https://lhcb.github.io/glossary/?
Is it so strange to click on the first letter of what you want and then do a little scroll?
The TOC is already there. As for the search box at the left-top, that's really neat if you want to look for all entries related to a topic, say grid, dirac, etc.
As the glossary grows, having a single and gigantic page makes little sense to me.

Yes.
The "per letter" organisation seems weird and arbitrary to me.
The search box is inferior to ctrl+f, it does not support neither fuzzy nor partial match. At least the latter works with ctrl+f (e.g. try searching for "keeping")
I'm not sure how gigantic it will be. Googling for similar stuff I see examples of both ways. Here are some single page examples
https://public-archive.web.cern.ch/public-archive/en/Science/Glossary-en.php http://cms.web.cern.ch/content/glossary
https://atlas.cern/glossary
https://earth.esa.int/web/guest/glossary

Let’s keep the current source file organization as it is. However, if we would like to present a single page, that is fairly easy to do, I believe.  Another option that Mike Sokoloff mentioned, we could provide a page that summarizes all of the terms, only without the definitions. Again, I believe these can be written as preprocessing steps in the CI.

thanks @henryiii looks much nicer than the list of letters :) Feel free to close the issue


Fetch protocol from browser

Updating to fetch the protocol from the browser rather than a hardcoded http
When I tried to deploy the UI out to the k8 instance over https, the API calls to ports were error out as the browser would not allow redirecting HTTPS traffic over to HTTP.
Fetching the protocol from the browser helps avert that situation.
I think this might resolve the following issue as well #125

Thanks!


update the README

Description
Nupm is evolving and, as we've already seen a few issues without even really doing any advertising, i think we should update the README.
this PR

uses GitHub's :emojis: to avoid fancy unicode that might not render well in editors
mentions about nupm being able to install itself in a note
talks about configuration
talks about running tests
adds a table of content

i just force-pushed the last commit because i do not know how to write markdown links apparently :laughing:

Cool, thanks, it's looking much better!


Some more validators

I know that "The goal of this library is not to provide every possible type of validation", anyway, I think that some more validators could be useful.
Moreover, the "integer" validator did not work, I fixed that.
Provided validators: integer, zipcode, pwdmatch, minage, validate
I'm particularly proud of the "validate" validator, that allows writing complex conditions directly in HTML data.

@xaca I just added something in docs.
I wrote this code a long time ago. Today I realize that it could be more generic. Instead of "pwdmatch" one could implement a more generic "equals" validator, that is satisfied if two fields are equal; and instead of "minage" one could implement a "greater-than" validator, that is satisfied if the field is larger than another one.

Hi @luca-vercelli, the problem is, zip code and date format are country specific. Also I'm against adding pwd matching to the library because everyone has different requirement for password format/strength, so they're going to add a custom validator anyway. I think this can be added to the demos but not in the core library.

Hi @sha256 , I see the point. However this library is a little poor of validators, a large effort is required to programmer in order to use it.
Probably, a solution could be as follows.

Implement some new validators:  equals, less-than, less-or-equal-than, greater-than, greater-or-equal-then, validate

Improve the docs adding some useful, non programmatic, examples, e.g. for zipcode:

     <input data-pristine-pattern="/^[0-9]{5}(?:-[0-9]{4})?$/" data-pristine-pattern-message="Invalid ZIP code" ></input>
for passwords:
    <input type="password" id="pwd></input>
    <input type="password" id="retype-pwd" data-pristine-equals="pwd" data-pristine-equals-message="Passwords don't match"></input>
and for minimum required age:
   <input type="integer" data-pristine-greater-or-equal-then="14" data-pristine-equals-message="Users must be at least 14"></input>

@luca-vercelli, less-than, less-or-equal-than,  greater-than, greater-or-equal-then etc all can be achieved using min/max. Also as validate involves using eval, I think it's better not to add this to the core.
I think equals is a good one. But the attribute value could be like #attr-id or .attr-class to avoid confusions. e.g. someone may think that input value needs to be equals to the attribute value.

@sha256 less-than, in my mind, is not the same as min. It's more similar to equals: the comparison is done w.r.t another field, not to a constant.
I agree with the "#" notation.
e.g.
    <input type="integer" id="first-value"></input>
    <input type="integer" id="second-value" data-pristine-greater-than="#first-value" data-pristine-greater-than-message="Second value must be greater than first one" ></input>

Okay, I misunderstood. Do you think less-than, less-or-equal-than, greater-than, greater-or-equal-then etc are as useful as the other built-in ones. I can only think of one use case: range. Also use of integer ranges are less than date ranges.  Do you have any more examples in mind where they can be useful?

Well, no, I have no other use cases...

@sha256, if you agree, I could work on this. I could implement (at least) the equals validator, and add some more examples in the README.md. (or, there is some better place for examples?)

That'd be great. Please for now consider equals only. Other validator would be more useful if they could be used for other input types, e.g. date format. But currently date type isn't built-in because there's no way to custom support date format without using a third party library.
As for examples, I have added few in demo.md file in gh-pages branch. I think I'd be better to add examples there as the main readme file is already pretty big. We can add a section in the main readme and link all the demos in list. What do you think?

Hi @sha256 , I see the point. However this library is a little poor of validators, a large effort is required to programmer in order to use it.
Probably, a solution could be as follows.
1. Implement some new validators:  `equals`, `less-than`, `less-or-equal-than`, `greater-than`, `greater-or-equal-then`, `validate`

2. Improve the docs adding some useful, non programmatic, examples, e.g. for zipcode:

 <input data-pristine-pattern="/^[0-9]{5}(?:-[0-9]{4})?$/" data-pristine-pattern-message="Invalid ZIP code" ></input>
for passwords:
 <input type="password" id="pwd></input>
 <input type="password" id="retype-pwd" data-pristine-equals="pwd" data-pristine-equals-message="Passwords don't match"></input>
and for minimum required age:
 <input type="integer" data-pristine-min="14" data-pristine-min-message="Users must be at least 14"></input>

I agree, would be nice if some common validator ara comming with the library. For example match if two fields are equals, or has the same lenght.


clarify quality gate references

I thought that the quality gates were a range, not a specific value for each metric. This is an attempt to resolve that confusion.
Signed-off-by: arewm<EMAIL_ADDRESS>

/assign @Kyl-Bempah


Test runner not working with storiesOf format

I am using an older version of storybook with the 'storiesOf' format for all stories.
I installed the test-runner and ran yarn test-storybook. All my stories are failing and the error message says that it's because I am using 'storiesOf'. Here's the message:
Unexpected 'storiesOf' usage: (line 120, col 0). In SB7, we use the next-generation 'storyStoreV7' by default, which does not support 'storiesOf'.
My goal: To be able to get a report of all failed story tests without having to check each story 1 by 1 on the browser (I am currently running storybook a11y and have some tests running)
What do I need to do for it to work with storiesOf?
I am using storybook version 5.3.21

Hey @ChristianTumamo!
Unfortunately the Storybook test-runner does not support Storybook 5. It got introduced alongside with Storybook 6.4.
You're currently using a version that is outdated by over 3 years. Storybook is currently at version 7.0.21, soon to be 7.1.0.
I'd highly recommend you to upgrade to Storybook 7 if you can. Given that your version is incredibly outdated, I'd recommend removing Storybook and installing it from scratch (but keeping your stories), and then slowly adjusting what is necessary.
There are migration guides and codemods that can help you migrate from storiesOf, and you can find them here:
https://storybook.js.org/docs/react/migration-guide#storiesof-to-csf
With Storybook 7 and the test-runner, you will definitely be able to achieve this (check these docs):

My goal: To be able to get a report of all failed story tests without having to check each story 1 by 1 on the browser (I am currently running storybook a11y and have some tests running)

I hope this helps!