[Feature]: Add Buttons to Approval Requests

Describe the solution you'd like
Instead of using ID's to approve ban requests, use the buttons built into discord
https://guide.pycord.dev/interactions/ui-components/buttons
Is your feature request related to a problem?
No response
Additional context
No response

would also  be useful in verification errors


Add plugin support for loaders.

This suggestion uses iris.io.plugins as a namespace package. Each plugin would need to provide one or more modules that install into the same namespace package. All the plugin modules get imported when iris is imported (strictly speaking, when iris.fileformats is imported), and the contents of any FORMAT_SPECIFICATIONS iterables get added to the FORMAT_AGENT.
NB. This is just an iniitial technical suggestion (e.g. it has no documentation!) and place to host the general discussion.

The test failure is genuine and is caused by setup.py not installing the new namespace package - it actively filters out empty directories. 😒

@rhattersley Welcome back :smile: ... where's this PR at? Good for review or still WIP?

It needs a technical review really. e.g. Is the native-namespace mechanism something we're happy to run with? Is iris.io.plugins the right name? I'll pull out the ABF/L loader as a separate repo to provide an example of what it's like to supply a plugin.
Once the technical stuff is settled, then we can sort out documentation, what's new, ... etc.

For an example plugin (with super-simple, modern packaging) see SciTools/iris-abf. :grin:

NB. SciTools/iris-abf#1

FWIW, I've updated the iris-abf package to include tests, use black formatting, and apply CI via GitHub actions.
The tests are brand new tests, with a small amount of "fruitiness" to work around an absence of iris in the test environment due to the inability to do "pip install iris". Hence, I couldn't just grab the tests from here. Installing iris would effectively require conda, which would complicate iris-abf and draw it away from the wholesome poetry, PEP 517, PEP 518, GitHub-actions goodness that it's currently using. This "I can't pip install iris" chicken-and-egg problem is one of the things this PR is seeking to address, but clearly more work is required elsewhere as well ... e.g. I'm looking at you, pyke & cf-units. :unamused:

example plugin (with super-simple, modern packaging) see SciTools/iris-abf.

Interesting.
Can you explain what the install process for this would be :

? does it require to "inject itself" into an Iris installation
? how would that work
? can it support a local (or "--user") install
? can we automate installation / install from a channel ?
? is it waiting on iris, to adopt the 'fileformats plugins directory', before we can make this work ?

I still think we should implement this, but probably just a simple naming strategy as discussed above, so leaving this in place as an issue / reminder.
Also... there is an outstanding problem with loader selection : see https://github.com/SciTools/iris/issues/3918

Related: #4798

Possibly other example that would be ready to try: the NAME loader

Closed by #5144


Sample .zip file references outdated Java Iot Hub SDK

[Enter feedback here]
The sample .zip file that is linked to from this topic contains samples that reference SDK version 1.3.30, which is way outdated compared to the latest. We should update to reference the latest which includes critical bug fixes.

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

ID: bd712a8e-dd00-45cd-724d-d16fc1293d2f
Version Independent ID: 2259d927-abad-3fbc-0c17-e93c9a9d743b
Content: Send telemetry to Azure IoT Hub quickstart (Java)
Content Source: articles/iot-hub/quickstart-send-telemetry-java.md
Service: iot-hub
GitHub Login: @wesmc7777
Microsoft Alias: wesmc

@wickste Thanks Stefan. I'll get this updated

@wickste Stefan I don't see the outdated reference in the context of this article. Which "sample.zip" are you referring to?  "master.zip" is just a copy of the current github repo.

#please-close this is fixed


pydocstyle missing configuration for numpydoc convention

Currently in repos based on ansys-templates, the numpydoc docstring checks take place only when building the docs. I believe pydocstyle should be configured out of the box for the numpydoc convention as well, otherwise it is unable to identify when docstrings don't follow the PyAnsys enforced style. This renders pydocstyle mostly useless in my understanding.
I am aware of two ways to do that, following PyAnsys doc style guide, can add this to pyproject.toml:
[tool.pydocstyle]
convention = "numpy"

or add this to .pre-commit-config.yaml in the last lines of the pydocstyle block:
args:
  - --convention=numpy

As discussed @RobPasMue

@ansys/pyansys-core could somebody handle this implementation?

@RobPasMue i can add this.

Awesome @Revathyvenugopal162 - thanks for handling it


flow-compatible abstraction over tcomb

Can you explain in readme, why you abandon idea of unobtrusive flow-based type-checking? (https://github.com/gcanti/flowcheck)
babel-plugin-tcomb doesn't support flow type annotations. It support you own standard of type declarations, based on tcomb. It's so difficult to create gracefully degraded to flow abstraction over tcomb?

Hi @zerkalica,
Since my data structures and domain models are already implemented with tcomb I just needed a quick way to type-check functions using tcomb types without using t.func combinator (which I find kind of annoying).

It's so difficult to create gracefully degraded to flow abstraction over tcomb?

Not sure what you mean, Could you elaborate a little bit? What's your use case?

I mean, how to combine static type checking with runtime checking without boilerplate code:
/* @flow */
import {
    String as string,
    struct
} from 'tcomb'

const MyObj = struct({
    t: string
})
type MyObj = {
    t: string;
}
export function test(arg: MyObj): MyObj {
    return arg
}

test({
    t: 123 // flow generates error
})

Just transpile
type MyObj = {
    t: string;
}

into
const MyObj = struct({
    t: string
})

Hi @zerkalica,
working on this (again...hope I have some good news though).
I'm compiling:

string to t.String
number to t.Number
boolean, boolto t.Boolean
any, mixed to t.Any
void, null to t.Nil

It's not required to do the trick you suggested:
import {
    String as string // trick
} from 'tcomb'

Example
import t from 'tcomb';

function foo(x: string) {
  return x
}

now compiles to:
import t from 'tcomb';

function foo(x: string) {
  t.assert(t.is(x, t.String), 'Invalid argument x (expected a ' + t.getTypeName(t.String) + ')');

  return x;
}

Note the new t.is call, here's its code in tcomb:
var isType = require('./isType');

// returns true if x is an instance of type
module.exports = function is(x, type) {
  if (isType(type)) {
    return type.is(x);
  }
  return x instanceof type; // type should be a class constructor
};

The x instanceof type part will allow to handle non-tcomb types, generics included:
import t from 'tcomb';

function foo(p: Promise<string>): void {}

foo(1) // throws [tcomb] Invalid argument p (expected a Promise)

at the same time Flow throws:
index.js:9
9: foo(1)
^ number. This type is incompatible with
5: function foo(p: Promise): void {
^^^^^^^^^^^^^^^ Promise
Now, coming to your last example, this works:
import t from 'tcomb'

const MyObj = t.interface({
    t: t.String
}, 'MyObj')

export function test(arg: MyObj): MyObj {
    return arg
}

test({
    t: 123 // throws [tcomb] Invalid argument arg (expected a MyObj)...
})
// ...while Flow says no errors!

but this doesn't:
/* @flow */
type MyObj = {
  t: string
};

export function test(arg: MyObj): MyObj {
    return arg
}

test({
    t: 123 // here Flow correctly throws "number. This type is incompatible with string"
})

because JavaScript throws "ReferenceError: MyObj is not defined".
Now we could check that MyObj is defined, i.e. something like:
function test(arg: MyObj): MyObj {
  MyObj = typeof MyObj !== 'undefined' ? MyObj : t.Any;
  t.assert(t.is(arg, MyObj), 'Invalid argument arg (expected a ' + t.getTypeName(MyObj) + ')');

  ...
}

or we could compile:
type MyObj = {
  t: string
};

to:
const MyObj = t.interface({
  t: t.String
})

Not sure what's better, what do you think?
/cc @ctrlplusb @Chrisui @ivan-kleshnin @majhork

This is pretty epic @gcanti.  Fantastic as always.
My vote is for the transpilation of type MyObj to const MyObjet = t.interface.  Certainly more work but I feel like it would be a fantastic move for tcomb if you can support as much of the flow syntax as possible.  Firstly, it could lead to greater tcomb adoption, granting a migration path for existing flow users.  Additionally this library is already piggy backing off the babel flow syntax plugin, so I believe it will make things feel much more natural if we move to support the "native" flow syntax - which could save us a headache or two in the future, or provide us with a great base from which to adapt against flow syntax changes/extensions.

Ok we got type aliases
type Person = {
  name: string,
  surname?: string,
  age: number,
  tags: Array<string>
};

function getFullName(p: Person) {
  return `${p.name} ${p.surname}`
}

getFullName({})

tcomb (at runtime)
throws [tcomb] Invalid argument p (expected a Person)

Flow
> flow
index.js:14
 14: getFullName({})
     ^^^^^^^^^^^^^^^ function call
 10: function getFullName(p: Person) {
                             ^^^^^^ property `age`. Property not found in
 14: getFullName({})
                 ^^ object literal

index.js:14
 14: getFullName({})
     ^^^^^^^^^^^^^^^ function call
 10: function getFullName(p: Person) {
                             ^^^^^^ property `name`. Property not found in
 14: getFullName({})
                 ^^ object literal

index.js:14
 14: getFullName({})
     ^^^^^^^^^^^^^^^ function call
 10: function getFullName(p: Person) {
                             ^^^^^^ property `tags`. Property not found in
 14: getFullName({})
                 ^^ object literal

Found 3 errors

The problem now is: I don't know how to define refinements without irritate Flow:
/* @flow */

import t from 'tcomb'

type Person = {
  name: string,
  surname?: string,
  age: number,
  tags: Array<string>
};

const PersonRefinement = t.refinement(Person, p => p.surname === 'aaa')

> flow
index.js:12
 12: const PersonRefinement = t.refinement(Person, p => p.surname === 'aaa')
                                      ^^^^^^ Person. type referenced from value position
  5: type Person = {
          ^^^^^^ type Person

Found 1 error

First of all create normal reflection layer for each type, constructor, method and function.
There are many realisations: babel-plugin-type-metadata, babel-plugin-angular2-annotations, or my babel-plugin-transform-metadata
// interfaces.js
// @flow

export type User = {
  name: string;
}

to:
// interfaces.js
// @flow
import t from 'tcomb'
export type User = {
  name: string;
}

export tcomb$User = t.interface({
  name: t.string
})

Interface usage:
// @flow
import type {User} from './interfaces'

function test(user: User): void {}

to
// @flow
import type {User} from './interfaces'
import {tcomb$User} from './interfaces'
import t from 'tcomb'

const metadata$test = [tcomb$User]
function test(user: User): void {
  t.assert(metadata$test)
}
Reflect.defineMetadata('design:paramtypes', metadata$test, test)

PS:
I think, it's too hard to create real flow-compatible runtime checking. Look at https://github.com/codemix/babel-plugin-typecheck, it supports generics, imports/exports, optimizations. Code base about 3000 lines, but stil not flow-compatible.

it's too hard to create real flow-compatible runtime checking

Yes I agree, but my goal is different, for instance I don't want to re-implement at runtime what can be done only by Flow, I think it's not even possible.
Static type checking and runtime type checking are complementary:

static type checking: typos, generics, refactoring, cross file type errors (i.e. you change a LOC in a file and you break the code of another part of the app)
runtime type checking: refinements, runtime type introspection, use cases when you can't setup Flow

First of all create normal reflection layer for each type, constructor, method and function

Not sure I'm following, why you'd do that? The goal is to type-check, not to feed the reflection API (which is still just a proposal at this time)

Reflect polyfil just an example. Main idea - generate and share tcomb metada for different puproses
and access them in runtime.
For example, for form validation: https://github.com/seanhess/runtime-types

Main idea - generate and share tcomb metada for different puproses and access them in runtime.

Ending with parallel type definions... Who will track and solve unsyc issues?

@gcanti just to understand the refinement problem a bit better, even if you disambiguate the usage of a type as a value, how are you going to use the refinement anyway?
Basically, this:
import t from 'tcomb'

type Person = {
  name: string,
  surname?: string,
  age: number,
  tags: Array<string>
};

const PersonRefinement = t.refinement(Person, p => p.surname === 'aaa')
                                                              //   ^___ suppose this works, somehow

function getSurname(p: PersonRefinement) { // how does flow react to this?
  return p.surname;
}

@ivan-kleshnin What you mean, what is unsync issues?

how does flow react to this?

@gabro After a few hours of trials I'd say... "badly". You can't use a value as a type annotation (at least I didn't find a way).
There's a divide between the world of types and the world of values so it seems you must choose: either you give up on refinements and RTI:
// @flow

type Person = {
  name: string
};

function foo(p: Person) {
  return p.name
}

foo({}) // flow throws property `name`. Property not found in
        // tcomb throws [tcomb] Invalid argument p (expected a Person)

or you give up on static type checking and go dynamic (you gain refinements and RTI):
import t from 'tcomb'

const Person = t.interface({
  name: t.String
})

function foo(p: Person) {
  return p.name
}

foo(Person({})) // tcomb throws Invalid value undefined supplied to {name: String}/name: String
                // no errors for Flow

There is a slightly verbose middle ground to explore though (static + dynamic):
// @flow

import t from 'tcomb'

type Person = {
  name: string
};

const PersonRefinement = t.refinement(t.Object, p => p.name.length < 3)

function foo(p: Person) {
  t.assert(PersonRefinement.is(p), 'bad!');
  return p.name
}

foo({ name: 'Giulio' }) // no errors for flow but tcomb throws [tcomb] bad!

Isn't there a way of making a pass before flow does?
I think if we can have some kind of pipeline
pre-flow → flow → babel-plugin

we might do something interesting

I'm hesitant to go that route. I don't exclude a pre-processing step but it's potentially cumbersome, the nice thing about Flow is that you throw at it your source file and you are done.
If this thing works well, my preference at the moment is going completely static except for some strategic domain models which I may want to define as refinements.

Just added support for interfaces:
interface A {
  a: string;
}

interface B extends A {
  b: string;
}

to
const A = t.interface({
  a: t.String
}, "A");

const B = t.interface.extend([A, {
  b: t.String
}], "B");

A "real world" example: type-checking redux (state and actions) https://github.com/gcanti/redux-tcomb/issues/9#issuecomment-223576027

Added a _assert helper that gives better error messages:
import t from 'tcomb'

const MyObj = t.interface({
  t: t.String
}, 'MyObj')

export function test(arg: MyObj): MyObj {
  return arg
}

// before: [tcomb] Invalid argument arg (expected a MyObj)...
// now: [tcomb] Invalid value 123 supplied to arg: MyObj/t: String
test({
    t: 123
})

Source:
import t from 'tcomb'

const MyObj = t.interface({
  t: t.String
}, 'MyObj')

export function test(arg: MyObj): MyObj {
  return arg
}

Output:
import t from 'tcomb'

function _assert(x, type, name) {
  ...
}

const MyObj = t.interface({
  t: t.String
}, 'MyObj')

export function test(arg: MyObj): MyObj {
  _assert(arg, MyObj, 'arg');

  var ret = function (arg) {
    return arg;
  }.call(this, arg);

  _assert(ret, MyObj, 'return value');

  return ret;
}

I have a proposal in order to support refinements, but it's kinda hacky, I'd love to hear what you think:
Let's define a special interface Refinement:
interface Refinement<P: (x: any) => boolean> {}

Refinement is a "placeholder" and won't be compiled by the babel plugin.
Usage
interface Refinement<P: (x: any) => boolean> {}

const isPositive = x => x >= 0

// "typeof isInteger" will allow the babel plugin to compile the actual refinement
// picking the "isPositive" identifier while Flow sees only the type: number
type Positive = number & Refinement<typeof isPositive>;

function foo(x: Positive) {}

foo(-1) // ok for Flow (obviously it can't type-check refinements)
foo('a')
/*
index.js:14
 14: foo('a')
     ^^^^^^^^ function call
 14: foo('a')
         ^^^ string. This type is incompatible with
 10: type Positive = number & Refinement<typeof isPositive>;
                     ^^^^^^ number
*/

compiles to:
const isPositive = x => x >= 0

// here the babel plugin does its magic
const Positive = t.refinement(t.Number, isPositive, 'Positive');

function foo(x: Positive) {
  _assert(x, Positive, 'x')
  ...
}

// tcomb can type-check refinements
foo(-1) // throws [tcomb] Invalid value -1 supplied to x: Positive
foo('a') // throws [tcomb] Invalid value "a" supplied to x: Positive

Same for interfaces:
interface A {
  name: string;
}

const predicate = (x: A) => x.name.length > 3

interface B extends A, Refinement<typeof predicate> {}

function foo(b: B) {}

foo({name: 1})

compiles to:
const A = t.interface({
  name: t.String
}, 'A')

const predicate = (x: A) => x.name.length > 3

const B = t.interface.extend([A, t.refinement(t.interface({
}), predicate)], 'B');

/cc @giogonzo

what kind of ancient sorcery am I looking at? jk, looks awesome 😀

type Positive = number & Refinement<typeof isPositive>
picking the "isPositive" identifier while Flow sees only the type: number

why is this the case?

interface B extends A, Refinement<typeof predicate> {}

same here, what's the ,?
Apart from some context I'm missing on flow type annotations syntax, yes, this looks kind of hacky / burden on the end user. But yeah! for profit

why is this the case?

AFAIK because interface can describe almost anything and Flow doesn't assume it describes objects, so:
interface Refinement<P: (x: any) => boolean> {}

is equivalent to type Refinement<P: (x: any) => boolean> = any; or simply any so
type T1 = number & Refinement<typeof isPositive>;
// which is equivalent to
type T2 = number & any;
// which is equivalent to
type T3 = number

same here, what's the ,?

an interface can extend n other interfaces

Just pushed a candidate implementation (refinements branch).
Despite being black magic, I'm really tempted because it's working extraordinarily well.
For example, adding the following simple file definition:
declare module 'tcomb' {

  declare interface Refinement<P: (x: any) => boolean> {}

  declare type Integer = number & Refinement;

}

I'm now able to do this:
import type { Refinement, Integer } from 'tcomb'

const p = n => n >= 2

type IntegerGreaterThan2 = Integer & Refinement<typeof p>;

function foo(n: IntegerGreaterThan2) {
  return n
}

foo(2) // flow ok, tcomb ok
foo(1) // flow ok, tcomb throws [tcomb] Invalid value 1 supplied to n: IntegerGreaterThan2
foo(2.1) // flow ok, tcomb throws [tcomb] Invalid value 2.1 supplied to n: IntegerGreaterThan2
foo('a') // flow throws, tcomb throws

This is great! I think the opportunities this solution opens greatly outweigh the "hackish feel". Well done! 👍

Another proposal, validating (at runtime) the IO boundary using typecasts:
type User = { name: string };

export function getUser(userId: string): Promise<User> {
  return axios.get('...').then(p => (p: User))
}

to
const User = require('tcomb').interface({
  name: require('tcomb').String
}, 'User');

export function getUser(userId: string): Promise<User> {
  _assert(userId, require('tcomb').String, 'userId');

  const ret = function (userId) {
    return axios.get('').then(p => {
      return _assert(p, User, 'p'); // <= runtime validation
    });
  }.call(this, userId);

  _assert(ret, Promise, 'return value');

  return ret;
}

Last topic: anyone has an idea about getting runtime type introspection?
type Person = {
  name: string
};

// this is ok in the runtime world
console.log(Person.meta) // => {kind: 'interface', props: ...}

but in the static world Flow throws:
index.js:9
  9: console.log(Person.meta)
                 ^^^^^^ Person. type referenced from value position
  5: type Person = {
          ^^^^^^ type Person

/cc @samwgoldman

// @flow
import {_, getIntrospection} from 'tcomb'

type Person = {name: string}

console.log(getIntrospection((_: Person)))

_ is a dummy var with any type.
babel converts (_: Person) to Person.meta

As discussed offline, if we make an assignment mandatory, this becomes possible
import type reify from 'tcomb';

declare interface Person {
  name: string
}

let Person: reify<Person>;

console.log(Person.meta);

Two errors:
Name is already bound and Property cannot be accessed on possibly undefined value
May be try this?
console.log((_: reify<IPerson>).meta);

Slightly different syntax, but essentially the same thing
import { reify } from 'tcomb';
import type type from 'tcomb;

declare interface Person {
  name: string
}

let tPerson: type<Person> = reify; /// void

console.log(tPerson.meta);

where
export type type<T> = any;
export const reify = null;

No changes introduced, other than explicitly providing a value (reify) to use on the rhs.

@gabro it doesn't work with version 0.26.0 :(
This works though (and being an expression seems more versatile):
import type { $Reify } from 'tcomb'

type Person = {
  name: string
};

const X = (({}: any): $Reify<Person>)
X.meta // OK
if (X.meta.kind === 'interface') {
  X.meta.props // OK
}

tested against the following incomplete (WIP) definition file:
declare module 'tcomb' {

  // runtime type introspection
  declare type $Reify<T> = Type<T>;

  declare type MetaIrreducible = {
    kind: 'irreducible'
  };

  declare type MetaList = {
    kind: 'list',
    type: Type
  };

  declare type MetaInterface = {
    kind: 'interface',
    props: {[key: string]: Type}
  };

  // TODO(giu) describe all meta objects
  declare type Meta =
      MetaIrreducible
    | { kind: 'refinement' }
    | { kind: 'maybe' }
    | { kind: 'struct' }
    | MetaInterface
    | { kind: 'func' }
    | { kind: 'tuple' }
    | MetaList
    | { kind: 'dict' }
    | { kind: 'enums' }
    | { kind: 'union' }
    | { kind: 'intersection' };

  declare interface $Refinement<P: (x: any) => boolean> {}

  declare interface Type<T> {
    (x: T): T;
    is(x: any): boolean;
    meta: Meta;
  }

  declare class Tcomb {

    // utils
    assert(guard: boolean, message?: string | () => string): void;
    stringify(x: any): string;

    // irreducibles
    Nil: Type<void | null>;
    String: Type<string>;
    Number: Type<number>;
    Boolean: Type<boolean>;
    Integer: Type<number>;
    Function: Type<Function>;
    Array: Type<Array<any>>;

    // combinators
    list<T>(type: Type<T>, name?: string): Type<Array<T>>;

  }

  declare var exports: Tcomb;
}

Closing this as per cea8fc10e752f7ce2f2d3388629d300d51a3f493.

@ctrlplusb I'm commiting lib on master so you can install the plugin just running npm i gcanti/babel-plugin-tcomb#master, could you please give it a whirl? I'd love to hear if there are regressions with respect to v0.2

@gcanti How do you plain to track situations with metadata, when flow definition placed in external library?
// node_modules/myLib/flow-typed/interface.js
declare module 'myLib' {
  declare interface User {
    name: string;
  }
}

// app.js
import type {User} from 'myLib'

function (user: User) {
// ...
}

@zerkalica currently fallbacks to t.Any:
import type { User } from 'myLib'

function (user: User) {

}

compiles to
var myLib = require('myLib');

function f(user) {
  _assert(user, typeof myLib.User !== "undefined" ? myLib.User : t.Any, 'user');

  console.log(user);
}

What do you suggest? (perhaps it's better to open a new issue though)

@gcanti - installing this tomorrow. Shall report back with any issues. Pretty exciting stuff. I'm gonna experiment with the static checking too.

Hey @ctrlplusb how is going? The first impact with Flow can be overwhelming. I'd love to put up a babel-plugin-tcomb boilerplate showing what you can get in term of type safety, maybe with redux / react / etc.. Or perhaps even better, pick an existing boilerplate and add type annotations. Any ideas?

Not him, but I tried yesterday. There were some issues. The native flow
types weren't recognized and I had to create aliases for them. Maybe
because I didn't use the '@flow' comment at top of file? I will try again
today with flow enabled.
On Thursday, June 16, 2016, Giulio Canti<EMAIL_ADDRESS>wrote:

Hey @ctrlplusb https://github.com/ctrlplusb how is going? The first
impact with Flow can be overwhelming. I'd love to put up a
babel-plugin-tcomb boilerplate showing what you can get in term of type
safety, maybe with redux / react / etc.. Or perhaps even better, pick an
existing boilerplate and add type annotations. Any ideas?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gcanti/babel-plugin-tcomb/issues/11#issuecomment-226402315,
or mute the thread
https://github.com/notifications/unsubscribe/AAJQMHSJq7DbSs0U6hOaNJ_Pd_gFdTRoks5qMPIzgaJpZM4H23ne
.

--
Volkan Unsal
web and mobile development
volkanunsal.com

Just pushed babel-plugin-tcomb-boilerplate, It's just the usual counter for now (I'll add other features step by step) but already shows the great benefits of having both static and runtime type checking. Feeding Flow is a little bit verbose but it's awesome having the whole app type checked.

@volkanunsal yesterday I fixed (https://github.com/gcanti/babel-plugin-tcomb/commit/73a21047d1d00cf9d0c6e0f2b1e81969e9386be7) a major problem with types imported from definition files (they were undefined).

The native flow types weren't recognized

Feel free to open an issue with some excerpt of your code, so we can hopefully come up with a solution and/or enhance the test suite.

Elm architecture with Flow and babel-plugin-tcomb: https://github.com/gcanti/babel-plugin-tcomb-boilerplate/tree/elm/src

Elm architecture with Flow and babel-plugin-tcomb: https://github.com/gcanti/babel-plugin-tcomb-boilerplate/tree/elm/src

@gcanti This is funny, I was also playing for the last week or so with Elm architecture in Redux, statically type checked with flow. I just pushed it to github today:
https://github.com/minedeljkovic/redux-elmish
I'd love to hear someone's comment or suggestion on this.
I am also very interested to use this repo to produce tcomb types for runtime introspection. For now I think of decoding part of model with fromJSON and tagged actions pretty print in redux devtools (with the help of tcomb union).

@minedeljkovic Really interesting and a great resource, thanks for sharing


How to implement IntentBuilder() in for loop?

Hi,
I want to implement logic for IntentBuilder() in for loop.
I tried following logic but it didn't work. Also my category & subcategory are stored in array.
list=[['category', ['energy', 'equipment']], ['subcategory', [ 'consumption']],['datetime', ['one month data', 'two month data']], ['greet', ['hi', 'hello', 'hey']]]
e.g.:
weather_intent = IntentBuilder("WeatherIntent")
for i in range(0,len(list)):
weather_intent.optionally(list[i][0])
engine.register_intent_parser(weather_intent) .build()
Please help.

Hi @amol4141 , are you still seeing this issue? The formatting on your code makes it a little difficult to diagnose what's happening here, but there are a couple of typos at least. I would probably write the following:
data=[['category', ['energy', 'equipment']], ['subcategory', [ 'consumption']],['datetime', ['one month data', 'two month data']], ['greet', ['hi', 'hello', 'hey']]]
weather_intent = IntentBuilder("WeatherIntent")

for i in range(0,len(data)):
    weather_intent.optionally(data[i][0])
    for value in data[i][1]:
        engine.register_entity(value, data[i][0])

engine.register_intent_parser(weather_intent.build())

Hopefully this helps, I'm going to close as the issue is pretty old.


Updating README.md file with the link of the CodingEasy repo

This solution is for the issue number #189
🛠 Fixes Issue

👨💻 Changes proposed

✔ Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

📷 Screenshots

I have already replaced these links with this link https://gssoc.girlscript.tech/
Do you want other links? please put the right links here
@KKhushhalR2405

I am referring to these texts.

Do you want me to change 20 to 22? @KKhushhalR2405
Because I don't have any links for GSSoC'20 and can't find it

Do you want me to change 2020 to 2022? @KKhushhalR2405 Because I don't have any links for GSSoC'20 and can't find it

Yes

**I really wanted to change GSSoC20 to GSSoC22, but I thought that there are certain links for GSSoC20, and all that is required of me is to change the links only, not any text
In general, the required changes have already been made** @KKhushhalR2405

Please add level tag to the PR @arpit456jain  @singhmansi25


[BUG] retrieve-by-key does not filter by key if key-list ends on comma

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
`mcdev retrieve cred/bu "key1,key2," will run key1, then key2, then an empty key, which is basically like running retrieve without a key. We need to filter empty items from the key array (or trim commas from the start/end)
Version
5.1.0
Participation

[X] I am willing to submit a pull request for this issue.

this issue existed since we added multi-key / multi-type support - we just didn't know yet


Broken link Secure APIs using Mutual SSL doc

In [1] 'Invoke an API Secured with Mutual SSL from the Developer Portal' link does not lead to any content.
[1] https://apim.docs.wso2.com/en/latest/Learn/APISecurity/APIAuthentication/secure-apis-using-mutual-ssl/#SecuringAPIswithMutualSSL-InvokeanAPIsecuredwithMutualSSLfromtheDeveloperPortal

Reviewed doc and also fixed the reported issue in the following docs.

https://github.com/wso2/docs-apim/pull/1323
3.1.0

https://github.com/wso2/docs-apim/pull/1324
master

https://github.com/wso2/docs-apim/pull/1325
3.0.0


Add Wwwwwwwww from SpaceDock

This pull request was automatically generated by SpaceDock on behalf of magico13, to add Wwwwwwwww to CKAN.
Mod details:
name = /mod/962/Wwwwwwwww
author = magico13
abstract = Presses W (and also Shift)
license = MIT
Homepage =
description = Drop the folder in the GameData folder.
Press "Left Control" and "W" while on EVA to keep walking forward. Press "Left Control", "Left Shift", and "W" on EVA to keep running forward. Press "W" to disengage. Takes two clicks of "W" (and of "Left Shift") to fully disengage sometimes.
Tested on Windows 10 x64. Might require Windows with how key presses are emulated, sorry!
Please direct questions about this pull request to magico13.

#rebuild


FAILURE: Build failed with an exception.

Expected Behaviour
debug build on android
Actual Behaviour
Error: cmd: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

Where:
Script platforms\android\phonegap-plugin-push\starter-push.gradle' line: 38

A problem occurred evaluating root project 'android'.

Failed to apply plugin [class 'com.google.gms.googleservices.GoogleServicesPlugin']
For input string: "+"

Reproduce Scenario (including but not limited to)
Steps to Reproduce
Platform and Version ( Android 6.3.0 )
(Android) What device vendor (e.g. Samsung .)
Cordova CLI version and cordova platform version
cordova --version                                     7.1.0
cordova platform version android                      6.3.0

Plugin version
cordova plugin version | grep phonegap-plugin-push  ^2.1.1

+1

@datastone can you run cordova plugins so I can see what plugins you are using? In push plugin 2.1.1 we specify a FCM version of 11.0.1 so it's not coming from this plugin. It must be coming from another plugin you are including.

@hardcpp not sure if you know but "+1" on issues are not very useful. If you want to vote up an issue you can use the emoji reactions to achieve the same thing.

@macdonst
cordova plugins

com-sarriaroman-photoviewer 1.1.11 "PhotoViewer"
cordova-plugin-appminimize 1.0 "AppMinimize"
cordova-plugin-camera 3.0.0 "Camera"
cordova-plugin-datepicker 0.9.3 "DatePicker"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-file 5.0.0 "File"
cordova-plugin-file-opener2 2.0.19 "File Opener2"
cordova-plugin-file-transfer 1.7.0 "File Transfer"
cordova-plugin-geolocation 3.0.0 "Geolocation"
cordova-plugin-googlemaps 2.1.1 "cordova-plugin-googlemaps"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-ionic-webview 1.1.16 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.3.0 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
cordova-sqlite-storage 2.1.0 "Cordova sqlite storage plugin"
ionic-plugin-keyboard 2.2.1 "Keyboard"
mx.ferreyra.callnumber 0.0.2 "Cordova Call Number Plugin"

@datastone can you do me a favour and remove cordova-plugin-googlemaps from your app and build with phonegap-plugin-push. I believe that it is this line:
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/master/plugin.xml#L157
That is causing your problem. Upon confirmation, I'll look at sending a PR to that plugin.
@matteobattista for your project, same thing but remove cordova-admob-sdk instead.

@macdonst thanks for your reply... If I remove cordova-plugin-admob-free (with cordova-admob-sdk), my project build ok!
How can i fix this? Is it possible to have this two plugin at the same time?
Thank you

@macdonst it works. please update the google maps plugin.
please give me the fix version of google map plugin

@datastone & @matteobattista I will have to send PR's to the other plugins in order to have them play nicely with the push plugin.

@matteobattista I sent a PR, please feel free to give it a 👍  to let the dev know it's a wanted update.

@datastone I sent a PR, please feel free to give it a 👍  to let the dev know it's a wanted update:
https://github.com/mapsplugin/cordova-plugin-googlemaps/pull/1938

@datastone the maintainer of the googlemaps plugin doesn't seem to be interested in compatibility or accepting my PR.
https://github.com/mapsplugin/cordova-plugin-googlemaps/issues/1937
You may have to build off of my fork.
https://github.com/macdonst/cordova-plugin-googlemaps/

@macdonst Can you guarantee to follow the version up forever? If no, you should not provide the repo as solution. The JS developer should do on their own risk.

@wf9a5m75 nope, I'm hoping we can come to some kind of a agreement. I was offering up my fork so @datastone could get unstuck with building the app.

Thanks to @macdonst, the new cordova-plugin-admob-free version (0.13.0) fix the issue.

@matteobattista glad it's working for you. If you run into other plugins that have the same problem working with the push plugin please let me know by creating a new issue and I'll send PR to their maintainers.
@datastone sorry, but @wf9a5m75 is not going to merge my PR so you will have to either use my fork for now or better you create your own fork that tracks changes.


Upgrate 2.3.1

Upgrate to 2.3.1

Pull Request Test Coverage Report for Build 397

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 64.223%

Totals

Change from base Build 383:
0.02%

Covered Lines:
2865

Relevant Lines:
4461

💛  - Coveralls


Evaluate running on Windows

Check if the preload script can be run on Windows, and if not, which changes would be necessary.

[ ] Subsytem for Linux
[x] git bash

Closing as the preloader works on Windows when run through git-bash or similar at the moment, and will run through Node once #43 happens.


Modal doesn't open for deprecated icons

Not sure if this is intentional, but something I've noticed is that the modal won't open for icons that're deprecated.
Modal does open albeit broken for icons with non-standard characters in their names.

Somehow related to #56

Fixed by https://github.com/mondeja/simple-icons-website-rs/commit/4fe751110d9968c874786f308489c2d4aa548094


resilio-sync: 2.6.2 -> 2.6.3

Motivation for this change
https://help.resilio.com/hc/en-us/articles/206216855-Sync-2-x-change-log
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@lheckemann Could you please backport this to 19.03? This patch "Fixed moving files to Archive and replacing them with 0 bytes files" which sounds important enough.

Ping maintainers @domenkozar @thoughtpolice @cwoac.

@yesbox This seems like a pretty straight forward version bump. I double checked your hashes and they are fine. I ran the program with --help flags just to be sure nothing odd.
I also support the idea of a backport because the changelog is minimal, but impacting as far as the zero byte issue is concerned.
LGTM :+1:

Cherry-picked to 19.03: 88498c0a9ff


oCIS on Raspberry: Blank Login Page

On a fresh install of Raspberry Pi OS Lite I installed oCIS RC7 and started the single binary like this:
OCIS_LOG_LEVEL=debug  ./ocis-1.0.0-rc7-linux-arm server

It starts fine (no visible errors in log), but when I try to connect to the url https://ip-of-the-raspi:9200 a blank page is returning with the following source:
<!DOCTYPE html>

	<meta charset="UTF-8">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
	<meta name="theme-color" content="#375f7E"/>
	<meta http-equiv="x-ua-compatible" content="IE=11">
	<link rel="manifest" href="manifest.json">

<link href="css/core.css" rel="stylesheet">

Please enable JavaScript

The browser gives the following output in the debug konsole:

did you get it working?

Closing, as he got it working

Closing, as he got it working

Hi @refs ,
do you know what the solution was? I am seeing the same error running the latest Docker image from today:
docker pull owncloud/ocis
docker run --rm -ti -p 9200:9200 owncloud/ocis

I opened up port 9200/tcp but started seeing an error message for port 53154 and other in this high range (<IP_ADDRESS> is the computer I am accessing from):
2021-01-20 06:26:19.118266 I | http: TLS handshake error from <IP_ADDRESS>:53154: remote error: tls: unknown certificate
...
2021-01-20 06:43:36.094455 I | http: TLS handshake error from <IP_ADDRESS>:53733: remote error: tls: unknown certificate
...
2021-01-20 06:45:50.100597 I | http: TLS handshake error from <IP_ADDRESS>:53923: remote error: tls: unknown certificate

Do I have to open any of those ports?
I end up with a white login screen and a couple of network errors:
curl https://localhost:9200 --insecure

<!DOCTYPE html>

        <meta charset="UTF-8">
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
        <meta name="theme-color" content="#375f7E"/>
        <meta http-equiv="x-ua-compatible" content="IE=11">
        <link rel="manifest" href="manifest.json">

<link href="css/core.css" rel="stylesheet">

Please enable JavaScript

It is interesting /.well-known/openid-configuration gets me an ERR_CONNECTION_REFUSED. But /accounts.js and /settings.js can be reached:
{"level":"info","service":"proxy","from":"<IP_ADDRESS>:53641","method":"GET","path":"/settings.js","time":"2021-01-20T06:42:48.10877392Z","message":"access-log"}
{"level":"info","service":"proxy","from":"<IP_ADDRESS>:53643","method":"GET","path":"/accounts.js","time":"2021-01-20T06:42:48.143669302Z","message":"access-log"}

Hi @refs ,
do you know what the solution was? I am seeing the same error running the latest Docker image from today:
docker pull owncloud/ocis
docker run --rm -ti -p 9200:9200 owncloud/ocis

I opened up port 9200/tcp but started seeing an error message for port 53154 and other in this high range (<IP_ADDRESS> is the computer I am accessing from):
2021-01-20 06:26:19.118266 I | http: TLS handshake error from <IP_ADDRESS>:53154: remote error: tls: unknown certificate
...
2021-01-20 06:43:36.094455 I | http: TLS handshake error from <IP_ADDRESS>:53733: remote error: tls: unknown certificate
...
2021-01-20 06:45:50.100597 I | http: TLS handshake error from <IP_ADDRESS>:53923: remote error: tls: unknown certificate

Do I have to open any of those ports?
I end up with a white login screen and a couple of network errors:
curl https://localhost:9200 --insecure

<!DOCTYPE html>

        <meta charset="UTF-8">
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
        <meta name="theme-color" content="#375f7E"/>
        <meta http-equiv="x-ua-compatible" content="IE=11">
        <link rel="manifest" href="manifest.json">

<link href="css/core.css" rel="stylesheet">

Please enable JavaScript

It is interesting /.well-known/openid-configuration gets me an ERR_CONNECTION_REFUSED. But /accounts.js and /settings.js can be reached:
{"level":"info","service":"proxy","from":"<IP_ADDRESS>:53641","method":"GET","path":"/settings.js","time":"2021-01-20T06:42:48.10877392Z","message":"access-log"}
{"level":"info","service":"proxy","from":"<IP_ADDRESS>:53643","method":"GET","path":"/accounts.js","time":"2021-01-20T06:42:48.143669302Z","message":"access-log"}

I'm also getting this error when running the docker image on a non-localhost docker host.  Connecting to the https://dockerhostip:9200 redirects to the full https://dockerhostip:9200/#/login but nothing is displayed and get the unknown certificate error

I'm also getting this error when running the docker image on a non-localhost docker host.  Connecting to the https://dockerhostip:9200 redirects to the full https://dockerhostip:9200/#/login but nothing is displayed and get the unknown certificate error

I'm also getting this error when running the docker image on a non-localhost docker host. Connecting to the https://dockerhostip:9200 redirects to the full https://dockerhostip:9200/#/login but nothing is displayed and get the unknown certificate error

Same here. Any documented fix?

I'm also getting this error when running the docker image on a non-localhost docker host. Connecting to the https://dockerhostip:9200 redirects to the full https://dockerhostip:9200/#/login but nothing is displayed and get the unknown certificate error

Same here. Any documented fix?

Same here as well with the same issue in Kubernetes/OpenShift. Any solution so far?

Same here as well with the same issue in Kubernetes/OpenShift. Any solution so far?

Follow in #1354

Follow in #1354

@yg382 @kennyparsons @lastb0isct This is my setup with a remote docker host:

docker host running on <IP_ADDRESS>
ssh and docker run --env-file="env" --rm -ti -p 9200:9200 owncloud/ocis

The contents of env are
PROXY_HTTP_ADDR=<IP_ADDRESS>:9200
OCIS_URL=https://<IP_ADDRESS>:9200
KONNECTD_TLS=0
OCIS_LOG_PRETTY=true

The critical line is OCIS_URL. When present, it configures the identity provider on that URL. You can see the contents we generate for the idp here with docker exec -ti container_name less config/identifier-registration.yaml
---

# OpenID Connect client registry.
clients:
  - id: web
    name: ownCloud web app
    trusted: yes
    insecure: yes
    redirect_uris:
      - https://<IP_ADDRESS>:9200/
      - https://<IP_ADDRESS>:9200/oidc-callback.html
      - https://<IP_ADDRESS>:9200/oidc-silent-redirect.html
    origins:
      - https://<IP_ADDRESS>:9200

  - id: ocis-explorer.js
    name: oCIS Graph Explorer
    trusted: yes
    insecure: yes

  - id: xdXOt13JKxym1B1QcEncf2XDkLAexMBFwiT9j6EfhhHFJhs2KM9jbjTmf8JBXE69
    secret: UBntmLjC2yYCeHwsyj73Uwo9TAaecAetRwMw0xYcvNL9yRdLSUi0hUAHfvCHFeFh
    name: ownCloud desktop app
    application_type: native
    insecure: true

  - id: e4rAsNUSIUs0lF4nbv9FmCeUkTlV9GdgTLDH1b5uie7syb90SzEVrbN7HIpmWJeD
    secret: dInFYGV33xKzhbRmpqQltYNdfLdJIfJ9L5ISoKhNoT9qZftpdWSP71VrpGR9pmoD
    name: ownCloud Android app
    application_type: native
    redirect_uris:
      - oc://android.owncloud.com

  - id: mxd5OQDk6es5LzOzRvidJNfXLUZS2oN3oUFeXPP8LpPrhx3UroJFduGEYIBOxkY1
    secret: KFeFWWEZO9TkisIQzR3fo7hfiMXlOpaqP8CFuTbSHzV1TUuGECglPxpiVKJfOXIx
    name: ownCloud iOS app
    application_type: native
    redirect_uris:
      - oc://ios.owncloud.com
      - oc.ios://ios.owncloud.com
[...]

and inspecting the arrays redirect_uris and origins. In my case I'm accessing the host using its IP, but had I have a domain name, then I would change the OCIS_URL value to that name. Could you give that a try?

I tried with OCIS_URL and it worked out but unfortunately, access is denied when trying to login using different demo accounts.

I tried with OCIS_URL and it can see the login page but unfortunately, access is denied when trying to login using different demo accounts.

@yg382 Do you have a valid SSL certificate for your domain? If you don't have one (which would be fine) then we'll need to take care of setting some env vars for your instance (anything INSECURE related needs to be true).

It could as well be that a service failed to start, hard to say without the server logs :/

I have disabled the tls so far using PROXY_TLS=false and I don't see any remote error: tls: unknown certificate. I still can see the same context deadline exceeded issue during the login.
logs:
2021-02-01 17:19:00  file=v2@v2.9.1/service.go:200 level=info Starting [service] com.owncloud.api.accounts
2021-02-01 17:19:00  file=grpc/grpc.go:864 level=info Server [grpc] Listening on [::]:9180
2021-02-01T17:19:00Z INF successfully added permission to bundle bundle=d7beeea8-8ff4-406b-8fb6-ab2dd81e6b11 service=accounts setting=e03070e9-4362-4cc6-a872-1c7cb2eb2b8e
2021-02-01 17:19:00  file=grpc/grpc.go:697 level=info Registry [mdns] Registering node: com.owncloud.api.accounts-a4b8c286-2a8e-4b7c-b078-08e7b4e294f9
2021-02-01T17:19:39Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/identifier//authorize service=proxy
2021-02-01T17:19:41Z INF access-log from=<IP_ADDRESS>:33144 method=GET path=/settings.js service=proxy
2021-02-01T17:19:41Z INF access-log from=<IP_ADDRESS>:33144 method=GET path=/accounts.js service=proxy
2021-02-01T17:19:41Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/.well-known/openid-configuration service=proxy
2021-02-01T17:19:41Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/identifier//authorize service=proxy
2021-02-01T17:19:41Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/identifier service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/css/main.ff4176e2.chunk.css service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/signin/v1/static/js/runtime-main.6429ebf0.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/js/main.319f99c0.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/signin/v1/static/media/background.d469fc8c.jpg service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/js/9.a3e68dee.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/signin/v1/static/js/identifier-app.dc3ded3f.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/js/8.15de8a91.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/signin/v1/static/js/identifier-main.87e8e905.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/signin/v1/static/js/10.eee7136a.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/js/0.ce7dce23.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33192 method=GET path=/signin/v1/static/js/containers-login.35b164c4.chunk.js service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/logo.svg service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33192 method=POST path=/signin/v1/identifier//hello service=proxy
2021-02-01T17:19:42Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/static/favicon.ico service=proxy
2021-02-01T17:19:51Z ERR could not initialize oidcAuth provider error="Get "https://ocis.int.consol.ae/.well-known/openid-configuration\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" service=proxy
2021-02-01T17:19:51Z INF access-log from=<IP_ADDRESS>:33118 method=POST path=/signin/v1/identifier//logon service=proxy
2021-02-01T17:19:52Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/signin/v1/identifier/_/authorize service=proxy
2021-02-01T17:19:54Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/settings.js service=proxy
2021-02-01T17:19:54Z INF access-log from=<IP_ADDRESS>:33178 method=GET path=/accounts.js service=proxy
2021-02-01T17:19:54Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/.well-known/openid-configuration service=proxy
2021-02-01T17:19:54Z INF access-log from=<IP_ADDRESS>:33118 method=POST path=/konnect/v1/token service=proxy
2021-02-01T17:19:54Z INF access-log from=<IP_ADDRESS>:33118 method=GET path=/konnect/v1/userinfo service=proxy
2021-02-01T17:20:04Z ERR could not initialize oidcAuth provider error="Get "https://ocis.int.consol.ae/.well-known/openid-configuration\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" service=proxy
2021-02-01T17:20:14Z ERR could not initialize oidcAuth provider error="Get "https://ocis.int.consol.ae/.well-known/openid-configuration\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" service=proxy

Ok - I tried this as well.

Created the environment file .env:

PROXY_HTTP_ADDR=<IP_ADDRESS>:9200
OCIS_URL=https://<IP_ADDRESS>:9200
OCIS_LOG_PRETTY=true
PROXY_TLS=false

Started the docker container with the env variables:

docker run --env-file=".env" --rm -ti -p 9200:9200 owncloud/ocis

see start-up log

Checked if the variables were used by the container:

docker exec -ti container_name less config/identifier-registration.yaml

# OpenID Connect client registry.
clients:
  - id: web
    name: ownCloud web app
    trusted: yes
    insecure: yes
    redirect_uris:
      - https://<IP_ADDRESS>:9200/
      - https://<IP_ADDRESS>:9200/oidc-callback.html
      - https://<IP_ADDRESS>:9200/oidc-silent-redirect.html
    origins:
      - https://<IP_ADDRESS>:9200

  - id: ocis-explorer.js
    name: oCIS Graph Explorer
    trusted: yes
    insecure: yes

  - id: xdXOt13JKxym1B1QcEncf2XDkLAexMBFwiT9j6EfhhHFJhs2KM9jbjTmf8JBXE69
    secret: UBntmLjC2yYCeHwsyj73Uwo9TAaecAetRwMw0xYcvNL9yRdLSUi0hUAHfvCHFeFh
    name: ownCloud desktop app
    application_type: native
    insecure: true

  - id: e4rAsNUSIUs0lF4nbv9FmCeUkTlV9GdgTLDH1b5uie7syb90SzEVrbN7HIpmWJeD
    secret: dInFYGV33xKzhbRmpqQltYNdfLdJIfJ9L5ISoKhNoT9qZftpdWSP71VrpGR9pmoD
    name: ownCloud Android app
    application_type: native
    redirect_uris:
      - oc://android.owncloud.com

  - id: mxd5OQDk6es5LzOzRvidJNfXLUZS2oN3oUFeXPP8LpPrhx3UroJFduGEYIBOxkY1
    secret: KFeFWWEZO9TkisIQzR3fo7hfiMXlOpaqP8CFuTbSHzV1TUuGECglPxpiVKJfOXIx
    name: ownCloud iOS app
    application_type: native
    redirect_uris:
      - oc://ios.owncloud.com
      - oc.ios://ios.owncloud.com

Deactivated the firewall to make sure everything is open:

ufw disable

And I am still getting SSL_PROTOCOL_ERRORs and 404s:

@mpolinowski if I see correctly you're connecting to HTTP://<IP_ADDRESS>:9200, could you try HTTPS?

Oh, you are right. I did not notice that. Before I was unable to get anything without HTTPS - possibly as it should be. Now I am getting an SSL Error when I try HTTPS:
This site can’t provide a secure connection<IP_ADDRESS> sent an invalid response.
Try running Windows Network Diagnostics.
ERR_SSL_PROTOCOL_ERROR

Oh, you are right. I did not notice that. Before I was unable to get anything without HTTPS - possibly as it should be. Now I am getting an SSL Error when I try HTTPS:
This site can’t provide a secure connection<IP_ADDRESS> sent an invalid response.
Try running Windows Network Diagnostics.
ERR_SSL_PROTOCOL_ERROR

EDIT: I removed PROXY_TLS=false from my environment - now I see the login screen. Thx @refs !

Awesome! but weird, there should be a middleware in place to redirect from HTTP to https. Will dig into it anyway. Glad you got it up and running

PROXY_TLS=false is used to disable tls in the proxy when TLS is offloaded to another proxy like traefik or nginx. If you run ocis without that it needs to be true, which is the default.
If you want to run ocis on the normal HTTPS port you need to set the port in PROXY_HTTP_ADDR=<IP_ADDRESS>:443 OCIS_URL=https://<yourdomain> where <yourdomain> also needs to be replaced with a resolvable domainname.
Note that when you change the URL you may need to wipe / adjust the identifier-registration.yaml. ocis will regenerate it with the new URL.
Why is this all so complicated? We ship a complete OpenID Connect Identity Provider. And OpenID Connect requires using HTTPS.
@mpolinowski you went through all the hoops! Nice job!


VSCode doesn't detect the virtualenv

Environment data

VS Code version: 1.33.1
Extension version (available under the Extensions sidebar): 2019.4.11987
OS and version: MacOS 10.14.4
Python version (& distribution if applicable, e.g. Anaconda): 2.7.15 - 64 bit
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): virtualenv
Relevant/affected Python packages and their versions:

Expected behaviour
I start VSCode from the terminal, while I've my virtualenv activated:
(myenv) ➜  myproject git:(feature/my-feature-123) code .

I expect VSCode to recognise the virtualenv and show it in the status bar at the bottom.
Something like
Python 2.7.15 64-bit (myenv)

Actual behaviour
This is what I see:

Steps to reproduce:

Open VSCode from a virtualenv:

(myenv) ➜  myproject git:(feature/my-feature-123) code .

Click on the Python version to verify the right Python version is selected

Unfortunately launching VSC from within an activated environment does not result in VSC using the activated environment.
You'll need to manually select the environment.

Unfortunately launching VSC from within an activated environment does not result in VSC using the activated environment.
You'll need to manually select the environment.

Hi, thanks for your reply, but as I explain in the "Steps to reproduce" section, if you Click on the Python version to verify the right Python version is selected and you select it manually, it won't work.
Related question: is there a way to configure it permanently "per project" (maybe saved in .vscode settings) ?
Thanks

and you select it manually, it won't work.

This is new information

Related question: is there a way to configure it permanently "per project" (maybe saved in .vscode settings) ?

Yes, clock the status bar, from the last of interpreters, select the relevant item and that'llv as an item into settings.json

Unfortunately launching VSC from within an activated environment does not result in VSC using the activated environment.
You'll need to manually select the environment.

I think we should update the documentation then, because it's explicitely mentioned https://code.visualstudio.com/docs/python/editing#_troubleshooting

and you select it manually, it won't work.

This is new information

I don't understand why the issue has been closed then...

Thanks for re-opening this and I'm glad to provide more information if needed. Cheers

Apologies for closing the issue too soon.
You need to select the interpreter by clicking on the status bar item. Once you do that, then an entry will be automatically added into the settings.json file.
If you have already done this, please could you:

Open your .vscode/settings.json file and provide the contents of that file.
Open the Console Windows from Help->Toggle Developer Tools and provide a screenshot of the errors in that window (if there are any).

I think we should update the documentation then, because it's explicitely mentioned code.visualstudio.com/docs/python/editing#_troubleshooting

Agreed. Thanks for pointing that out, i'll get that updated.

It has been 4 weeks since the information was requested.
Closing due to inactivity. Will be happy to reopen the issue once the requested information has been provided.


DS statewide header

Nice work by @timothyshambra here
New CSS only component: statewide header
Some changes that seem like good defaults for CSS only components:

I used prettier for css formatting
I put the sass source file in src and named it without _ prefix because it is used to generate css output
The generated css file is at the root and is listed as the main file in the package.json

PRs:

remove component from cannabis: https://github.com/cagov/cannabis.ca.gov/pull/320
new component in design system: https://github.com/cagov/design-system/pull/62


image generator exposure/contrast

It appears there is no way to alter exposure / contrast with the image generator? Is there a reason this is not included? It would seem very useful to be part of generation of artificial images.

I suppose the reason might be that that level of image manipulation would be out of the scope of keras. Did you mean randomly adjust exposure/contrast for the sake of data augmentation? If so, both exposure and contrast are linear adjustments and don't add any new information: exposure is just a scale change so your (assumedly convolutional) network shouldn't care, and increases/decreases in contrast should wash out to neutral during training. If anything you'll be decreasing the information in the image through saturation/rounding errors. The independent random jittering values across channels already implemented instead actually increases the information in the dataset since the relationship between the channels is changed (recall that a filter in a conv. network is actually LxWxC, or a 3 '2D kernels' per 'filter'). If you still want to randomly expose/contrast your images, you can pass a function that takes a 3-dimensional numpy array to preprocessing_function, or define a function to do so in the preprocessing/image.py file and add it to the ImagePreprocessing class and the relevant .next() call in the iterator classes,
If you just mean a global adjustment for the sake of changing the dataset rather than augmenting it, you can do that:
You can adjust 'exposure' (although that's not really a well-defined term in digital images) in a way that's similar but not exactly the same as photoshop using the 'rescale' argument. Digital exposure adjustment is essentially a multiplying channel intensities (in RGB space) or the value (in HSV space) by a constant - higher starting values grow/shrink by more than lower values, as opposed to a brightness adjustment which adjusts all values by the same amount. Photoshop does a bit of interpolation but that's about all that's different afaik.
Contrast is also a linear change, essentially doing the same thing as exposure adjustment except you subtract the median pixel value before doing the multiplication and then add it back in afterwards (see here: http://math.stackexchange.com/questions/906240/algorithms-to-increase-or-decrease-the-contrast-of-an-image). You can do this with a keras function (and actually just scaling it should be all the same to the network if you're centering/scaling the data) not sure why you would want to do that unless the light/dark values are intrinsically meaningful though.

Thank you so much for such an extensive answer @crimedude22.
I do believe that we will "throw away" data when do over-exposure/over-contrast, so in fact the network would become more robust when it learns when the distribution between variables changes (at 255, some pixels cannot go higher, so they are capped, while other pixels can still increase)?
I'm mostly interested in it since I assume my data to sometimes be pretty dark, sometimes not, and I hoped that creating more (artificial) data would increase the robustness. You think this would not hold as it is a linear transformation?

Okay, I experimented with the transformations, and now have a better understanding.
Since there is a cap of 255, the transformation for increase cannot be a constant.
E.g. you can divide the values by a constant (e.g. 2) and it will always still be between 0-255.
When you multiply, you cannot multiply by 2, because they would go outside the possible values (clipping is not the right way).
Instead, the formula should be:
Increasing values:
(255 + frame) / 2

Decreasing values:
frame / 2

It does not really seem like a purely linear transformation?
But as I understand convolution, it will be pretty much like weights learned for a sliding window per image. In this regard, I'm very confused.
MaxPooling will be weird when just simply randomly one image has more intense pixels and will thus be picked up by maxpooling? It seems maxpooling wouldn't really work with images with different intensities?
I really hope that by random augmentations the network would be more robust to the brightness received by a camera, but you're (@crimedude22) saying this probably won't help?


Only retry twice for connect_errors during login, add logging to help debug OFFLINE

Just made that change, PTAL

:+1:


Mat/Pat - Maternity leave validations

Tab -  Maternity leave
AC

[x] Validation message shows when "Are you the birthing parent?" is not answered and next is hit
[x] If "Yes" is hit for "Are you the birthing parent?" the following tabs are shown
Maternity leave - General information
Maternity leave - Start date
Maternity leave - Length of leave information
Maternity leave - Length of leave
Maternity leave - Leave allowance information
Maternity leave - Leave allowance
[x] If "No" is hit for "Are you the birthing parent?" the following tabs are hidden

Link https://bcgov.sharepoint.com/:u:/r/teams/03991/Shared Documents/General/Selenium/Selenium Scripts/Maternity Parental L%26A/MaternityInformationAndValidation_1888_1889.side?csf=1&web=1&e=edvSNd

Script working great - acceptance criteria met

Worked perfect PO Approved & Closing ticket


Old official 64-bit MAME v0.177 doesn't work with MAMEsaver v2.0's game scan.

Starting in my https://github.com/mika76/mamesaver/issues/52#issuecomment-500201080 thread.

I'll take a look at this, @mika76. I'm guessing it is just the XML format changes, in which case it should be really easy to support earlier versions. Or, at least, this version. Not sure how many breaking changes MAME have made to this schema.

If I remember right it was just the root element or something. Probably easy to see just going through our old commits...

Come to think of it some command line args might be different too...

If I remember right it was just the root element or something. Probably easy to see just going through our old commits...

It's a bit more involved than that, unfortunately. I start by running MAME with the -verifyroms to identify good ROMs. The current version of MAME allows us to pass a list of ROMs to check on the command-line. Without this, all supported ROMs are output, which results in the process taking a lot longer.
It appears that MAME 0.177 only accepts a single ROM to verify:
|12:36:14|Matthew_Painter@LT2J157672H:[mame0177]> ./mame -verifyroms bzone asteroid
Error: unknown option: asteroid

vs MAME 0.191:
|12:39:56|Matthew_Painter@LT2J157672H:[mame]> ./mame64 -verifyroms bzone asteroid
romset asteroid is good
romset bzone is good
2 romsets found, 2 were OK.

So either I need to:

Go with the lowest common-denominator and call MAME once per ROM. I fear this may adversely impact performance for large ROM sets; or
Identify MAME version being used, when the behaviour for this (and the game list, and the arguments) changed, and intelligently adapt.

Ordinarily, I'd just suggest that people upgrade to the latest version, but I understand there is a legitimate desire for old MAME versions to be run, due to when ROMs were dumped and performance.
I'll do some digging. Hopefully I don't need to wade through too many changelogs.

Brute force works well, even if it is a bit of a hack:
private IDictionary<string, string> GetVerifiedSets(Action<int> progressCallback)
{
    var verifiedSets = GetVerifiedSets(progressCallback, RomsPerBatch);
    if (verifiedSets.Any()) return verifiedSets;

    // Cater for old versions of MAME which only supported verifying single ROMs at a time
    verifiedSets = GetVerifiedSets(progressCallback, 1);
    return verifiedSets;
}

This will result in a performance hit if users are running an old version of MAME and have large number of ROMs, however this is hopefully less of a hit than parsing the entire supported/unsupported game output.
Now onto the -listxml differences. In general, I'd prefer to adapt parsing based on the output than version detection. Apart from being easier, it's also definitive and involves far less trawling through old documentation.

Same issue for -listxml - older versions of MAME only support retrieving single game details at a time. Fixed using similar brute-force approach. Same caveats about performance apply.
The XML structure in 0.177 the same for 0.199, for the elements we care about. I do remember having to tweak this based on your original code, @mika76, so I will grab a really old version of MAME and get that working too. Might as well be inclusive!

All fixed and PR submitted. Versions from 0.155 have been tested. Thanks for reporting this, @antdude!

Thanks and you're welcome. Please kindly let me know when the stable version is released. :)

If you'd impatient, feel free to install from here:
https://ci.appveyor.com/project/mmihajlovic/mamesaver/build/job/8hjss9e4eac58hy8/artifacts
I'd love to hear how you get on!

Thanks nullpainter. I'll check it out when I have time. A bit busy and way behind in life right now. :(

I am still waiting for Game List to build in it (v3.0.1 from five days ago). It had been already over five minutes with my old C:\winstuff\mame0177b_64bit\mam64.exe hogging CPU in my decade old, updated 64-bit W7 HPE SP1 PC. How long is it supposed to take?

Yes, that's the problem with the previous approach from a few years back. With the newer versions of MAME, I am able to invoke it once per ~50 games. However with the older versions, you need to invoke it once per game. As you can imagine, this takes significantly longer.
The good(ish) news is that once you build your gamelist, you don't need to do it again. If you have added a game, you can - if you wish - bypass the automated mechanism and edit the game list XML directly in Mamesaver. Not ideal, but a workaround.

Yes, that's the problem with the previous approach from a few years back.

Actually, the problem with the previous approach was because MAME was invoked once, but retrieved the entire XML details of every single known - supported and unsupported - game. Similar performance problem though.
How many games do you have, @antdude? And how long did it roughly take in total? If it's really unacceptable, I may be able to revisit the single game list approach and see if I can optimise the parsing.

I went to shower and then just got back, and noticed an error: https://i.ibb.co/RyYzY46/error.gif
The only thing I configured was my MAME's location (C:\winstuff\mame0177b_64bit\mam64.exe). I am rerunning it again with its debug enabled. Also, I'm going to sleep soon!

Nullpainter: http://wikisend.com/download/334116/dir.txt for my dir /o:n /s of my MAME v0.177 ROM file listing. Still waiting for Mamesaver Config to finish itself...

It failed again. I see no %TEMP%\MameSaver\ with my debug logs. :(

Yes, 2,048 files will take a remarkably long time. Let me see how fast I can make the XML parsing of the full list instead. I'll keep you posted.

It failed again. I see no %TEMP%\MameSaver\ with my debug logs. :(

Thanks for reporting this and giving it another go. This is a general error if something very bad happens invoking MAME, but I'm surprised there are no logs. We should be logging at info level, so there should always be something. I'll check on this as well.
Appreciate your patience!

Oh, I need to start Mamesaver to get the logging enabled. Um, you guys need to tell users that they need to restart it to enable it. I assume the same for disabling.

FYI. I tried to make a bug report about the logging issue (need to tell users to restart their MAME Saver), but couldn't due to a known HTTP 500 error as shown in https://twitter.com/githubstatus/status/1141633660342415365. Argh. :(

Also shown in https://www.githubstatus.com/.

https://www.sendspace.com/file/dk0ahi for my debug logs for the third crash. It looks like it stopped after:
...
2019-06-20 02:17:04.722 -07:00 [DBG] MAME started; pid: 10056
2019-06-20 02:17:04.853 -07:00 [INF] Invoking MAME with arguments: -verifyroms dkongjre
:( OK, time for me to sleep so good night all! :)

Oh, the Github issue was fixed so https://github.com/mika76/mamesaver/issues/55 for my bug report about debugging issue. :)

Thanks for the log file and the report about having to start the saver! So there wasn't a later Mamesaver log in that directory? That one is 100k which is the limit where the logger rolls over to a new log file.

nullpainter: I retried it again.  That's the only log I got. Similar results (different ROM filename this time):
...
2019-06-20 02:55:34.247 -07:00 [INF] Invoking MAME with arguments: -verifyroms dkongjrj
2019-06-20 02:55:34.251 -07:00 [DBG] MAME started; pid: 11884
2019-06-20 02:55:34.381 -07:00 [INF] Invoking MAME with arguments: -verifyroms dkongjrm
2019-06-20 02:55:34.385 -07:00 [DBG] MAME started; pid: 18956

That's just info level logging. Not sure why the log file didn't roll over.
In any case, we've never tested the screensaver with 2k of ROMs. I suspect that once we've passed this hurdle, the gave validation - where MAME checks the presence of correct files in each zip - is also going to take an unacceptably long time for 4Gb or ROMs.
Have you tried using a semi-curated list?

Ah. It must be another bug then so I made https://github.com/mika76/mamesaver/issues/56. Lots of bugs from me! ;)
How does semi-curated list work? I don't have any huge ROMs as you can see in my file listing with dir command. I was hoping to use all my MAME ROMs. I am sure some people would use their whole 100% complete ROM collections. ;)

Well, you have over 2,000 ROMs. Are you wishing to see all of them? Including all the clones/variants?
I'll continue to look at the performance, but this is just a warning that there may still be issues. The alternative is for us to do filtering/validation at the time a game is selected for playing in the screensaver itself. This may be a sensible 'advanced' option - "delayed verification" or something. That way, the list will build faster for huge collections, at the expense of invalid or unplayable ROMs being listed and potential delays for game selection in the screensaver.

nullpainter: Ah, I didn't I know I had that many. I just collect the games that I love, interested, and keep. :)  I wonder if there are any MAME Saver users who have huge collections.

That's the number in the directory listing you sent me - 2048 games, totaling 4Gb. Or was that directory not the one you were running Mamesaver against?

That's the one I used for arcade games. Wait, how does MAME Saver to look in there? Is it using my 64-bit's MAME's configurations? Also, aren't MAME ROMs using shared files like parents, children, etc. I don't have 2,048 games. Maybe 100. I know there are multiple ROM files for games. I remember using clrmamepro to keep them updated for every MAME updates (stopped at v0.177).

Unless you explicitly specify as a command-line argument in Mamesaver, the ROM directories are based on whatever's in the mame.ini for the MAME executable you're using.
You attached a directory listing containing 2k ROMs, so I was assuming that was what you were working with for Mamesaver.

Ah OK. Thanks. I guess each zip file is considered a ROM even though there are about 100 games in my collection?

@antdude where do you see 100 games, In a UI somewhere? You might be looking at the verified roms list which means out of the 2000 or so rom archives you have only 100 of them actually work.
MAME can be a weird beast to work with 😊 and you could probably save yourself some space and loading time in mame if you clean out the roms which don't work - some of them are not small.

mika76: 100 was just an estimated guess. I know I don't have 2,000 games. Hmm, MAME v0.177 says I have 2,059 machines. I guess that is what is being referred? I just collect whatever ROM files I need that clrmamepro said.

mika76: 100 was just an estimated guess. I know I don't have 2,000 games. Hmm, MAME v0.177 says I have 2,059 machines. I guess that is what is being referred? I just collect whatever ROM files I need that clrmamepro said. https://prnt.sc/o4psqa for the screen shot/capture.

Yeah our libraries can get quite big 😄 unfortunately MAME has not made it easy to work with it from the outside like we do with Mamesaver. They have improved over time but it's still a bit "cludgy".
I'm not sure anything @nullpainter can do will make this issue go away. Your best bet might be to have a separate MAME folder with only a curated list and point Mamesaver to that - that way you kinda control what roms get shown.
I do recommend you move to a new version of MAME though - 0.177 is from 2016, a lot of work has gone into improving roms and functionality...

@antdude, if you look at the Mamesaver-20190620.txt log file you attached, you can see the initial attempts to invoke MAME with each of your ROMs. As you can see, there are way more than 100.
Check the mame.ini associated with the MAME executable you're using for Mamesaver and look at the rompath field. This is the directory - or directories - which is used by Mamesaver.
Agree with @mika76 - even though I could potentially improve the performance a bit, it will never work well with that many ROMs.
Also, I am guessing that the crash may be because we're not elegantly handling an non-ROM in your path, or that MAME is not returning gracefully for a ROM.
 Ooh, good catch. I just checked my old mame.ini and noticed it also had my Atari 2600 ROMs included. I took it out, and MAME said 1,973. Obviously, that is still too many. :( Darn, I was hoping to use ALL my games in the screen saver (randomized).

Well, give it a go with fewer and let us know how you get on.

Also, I'd be interested to see what happens with a new version of MAME and that number of ROMs. You can just download a new version and set it to the same rompath as your current version.

Darn, I was hoping to use ALL my games in the screen saver (randomized).

I'm happy to be proved wrong, but IMO there just aren't that many good MAME games. I assume you grabbed a torrent at some stage? In those, you'll find that many games have a number of regional variants (US version, Japanese version, etc.), a number of almost indistinguishable versions, unlicensed clones, and a huge number of rather tedious derivative games.
I'm pretty confident you're going to have a large number of what are practically duplicates and a large amount of dross in your collection.

I'm gonna close this - I've left the PR because I'm not sure anybody really uses Mamesaver with such an older version of MAME - if needed we can merge...


🚀 [Feature Request] - Redesigning login/Register page

Is your feature request related to a problem ? Please describe. ✍
Redesign of login and register page
Describe briefly how you would implement this enhancement.
Some steps to implement this enhancement-
1. Step 1
2. Step 2
3. Step 3

Additional context or screenshots
Additional context
Are you contributing for a program?
GSSoC2023
Code of Conduct

[X] I have read and agree to the Contributing Guidelines of this project.

@shraddha761 wanna design register page in new theme?

@anmode Yahh I'll do it

cool start krdo, Register page ko new theme m

@shraddha761 update?

@Abhinavcode13 Working on it. Will raise the pr by today itself


boundingVolume shadow bug

Some form of edge case. This would be in rayTrace() in renderer.c
Ray hits a spot on the floor that is inside the boundingVolume of another OBJ, doesn't detect the boundingVolume in this case for some reason.

Precisely what I thought, rayIntersectsWithSphere() is designed for rays casted at spheres, not from within. Using rayIntersectsWithSphereFast() in this edge case (seen in 6e86c3d40c50cf7edd6182c2cae0ce13a28b4092) solves this issue. It will slow the render down slightly but that's just because the additional shadows are now calculated correctly.


truncated gzip input

@klauspost thank for this is a wonderful library.
I'm recording really good perf in compression, however when I use the system tar to extract the archive I get:
...
<fiilename>.json: truncated gzip input
tar: Error exit delayed from previous errors.

Searching in the repo i found i fix for this bug in 2017, however it seems to still happen.
I'm using:
github.com/klauspost/pgzip v1.2.6

go version go1.20.3 darwin/amd64

bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8

Example code of how the archive file get produced using _CompressionLevel=6 and 5MB blockSize :
func (ta *TarArchiver) Archive(documents []*docstore.Document) (*Archive, error) {
	start := time.Now()
	archive := new(bytes.Buffer)
	gzipWriter, err := gzip.NewWriterLevel(archive, _CompressionLevel)
		if err != nil {
		return nil, err
	}
	gzipWriter.SetConcurrency(5<<20, runtime.GOMAXPROCS(-1))
	if err != nil {
		return nil, err
	}
	defer gzipWriter.Close()
	tarWriter := tar.NewWriter(gzipWriter)
	defer tarWriter.Close()

	for _, doc := range documents {
		// Create a new tar header
		header := &tar.Header{
			Name: doc.RelPath(),
			Mode: 0600,
			Size: int64(len(doc.Content)),
		}

		// Write the tar header
		if err := tarWriter.WriteHeader(header); err != nil {
			return nil, err
		}

		// Write the document content to the tar archive
		if _, err := tarWriter.Write([]byte(doc.Content)); err != nil {
			return nil, err
		}
	}
	elapsed := time.Since(start)
	log.Info().Msgf("created archive in %s", elapsed.String())
	start = time.Now()
	err = os.WriteFile("archive.tar.gz", archive.Bytes(), 0644)
	elapsed = time.Since(start)
	log.Info().Msgf("written archive in %s", elapsed.String())
	if err != nil {
		return nil, err
	}

	return &Archive{
		Archive:       archive,
		ArchiveFormat: TarGzip,
	}, nil
}

You are using defer gzipWriter.Close(), but writing the encoded content before you exit the function.
You must close both writers in correct order before you call archive.Bytes().

thanks it works, it completely slipped my mind!

Yeah defer x.Close() tends to go on autopilot :)


If the user was gave a rating after that no need to show the dialog after certain period .permanently disable that.How we can handle this?

any answers?

or will it be disabled automatically after rating ? :)

@arunrajgm @TharakaDamayantha  In Vorlonsoft/AndroidRate release 1.1.7:
Dialog will be disabled automatically after the user click on the RateIt button. If you want to show the dialog again, call AppRate#clearAgreeShowDialog(). Also remember Library can't check that the user rate your app, it can check that the user click on the RateIt button only.
Clear show dialog flag
When you want to show the dialog again, call AppRate#clearAgreeShowDialog().
AppRate.with(this).clearAgreeShowDialog();


Project Level 8 test case 8_4

Summary
Put a summary of the question
hii i cant seem to come up with shared queue system for the self-check counters. I made a child class for the self-check counters. What I did was i gave up on updating all self-check counters after every wait and serve event and instead just kept the waiting queue at one of the self-check counters. I kept a waiting ImList in the first self-check counter created and set the other self-check counter qmax to 0. After each Done event, I would then check if the server from the done event is a self check counter. Then i would check if the shop's first self-check counter has customers waiting. If it has, i would add a serve event with this self-check counter as the server. However, this method does not see to be working as my self-check 3 would always only serve customers arriving. Would appreciate if anyone can share better ideas for the shared queue implementation!!
Description
Describe the problem and code snippets if necessary
Screenshots (if any):
Insert Images here if necessary

Hi i think it would be easier to put your shared queue in Shop. It's easier to access/check against and you update it constantly (ideally!)

hello! i implemented my shared queue the same way as you did and managed to get it working:-) to account for the change in flow of events with the self-check counters, rather than making modifications to the done class, i modified the wait/pending class such that if the customer is at the head of the queue of self-check k+1, i will find the next available self-check counter and schedule a serve event with that counter. and then when executing the serve event, if it was at a self-check counter, i would make sure to dequeue the customer from self-check k+1! hope this offers some insight into a possible thing you overlooked in your own implementation, all the best

hello! i implemented my shared queue the same way as you did and managed to get it working:-) to account for the change in flow of events with the self-check counters, rather than making modifications to the done class, i modified the wait/pending class such that if the customer is at the head of the queue of self-check k+1, i will find the next available self-check counter and schedule a serve event with that counter. and then when executing the serve event, if it was at a self-check counter, i would make sure to dequeue the customer from self-check k+1! hope this offers some insight into a possible thing you overlooked in your own implementation, all the best

hii may i ask what did u do with wait events where the customer is not in the head of the queue? i think thats where my code is stuck

hello! i implemented my shared queue the same way as you did and managed to get it working:-) to account for the change in flow of events with the self-check counters, rather than making modifications to the done class, i modified the wait/pending class such that if the customer is at the head of the queue of self-check k+1, i will find the next available self-check counter and schedule a serve event with that counter. and then when executing the serve event, if it was at a self-check counter, i would make sure to dequeue the customer from self-check k+1! hope this offers some insight into a possible thing you overlooked in your own implementation, all the best

@celine-chung hii may i ask what did u do with wait events where the customer is not in the head of the queue? i think thats where my code is stuck

sure no problem! not sure how you dealt with level 6 to deal with queues containing multiple customers but personally my implementation contains an additional pending class like many other people suggested, the only difference between the wait and pending classes being that in the wait event, the customer is added to the queue of the server in the shop.
i think the key thing here is that people in the shared queue will continue queueing there and the allocation to the actual counter it will be served by happens once it is at the head of the queue.
as for the generation of the next event for both wait and pending, this is what my overall flow looks like:

find the time where the queue will move up

if it is the self-check shared queue then this will be the next available time of the next available counter (i.e. the counter with the closest available time)
if it is a human server then it is simply the next available time of the server

schedule the next event

if it is not at the head of the queue: schedule a pending event at the time in 1. at the same server (since the customer will continue to queue at the same server even if it is a self check-out)
if it is at the head of the queue (meaning the queue has continued moving up after each pending event) and it is in the shared queue: find the next available counter and schedule a serve event at the time in 1. with that counter (this simulates the allocation of a customer in the shared queue to a counter)
if it is at the head of a human server's queue: simply schedule a serve event for this server

the customers are only dequeued when a serve event is executed

what helped me is just visualising an actual supermarket with self check-out counters and human servers and trying to understand how the events flow HAHA hope this helps!


StackDepthException.failedCodeStackDepth returns invalid value 0 when using Future + passing custom implicit position

Run the test below.
It contains 4 failed tests.
ThisBuild / scalaVersion := "2.13.10"

lazy val root = (project in file("."))
  .settings(
    name := "untitled33",
    libraryDependencies ++= Seq(
      "org.scalatest" %% "scalatest" % "3.2.15"
    ),
  )

tests.scala
package org.example

import org.scalactic.source.Position
import org.scalatest.Assertion
import org.scalatest.exceptions.StackDepthException
import org.scalatest.funsuite.AsyncFunSuite

import scala.concurrent.Future

class MyTest1 extends AsyncFunSuite {
  private def go1(implicit pos: Position): Future[Assertion] = {
    Future.successful(
      try assertResult("test")("best") catch {
        case e: StackDepthException =>
          println("failedCodeStackDepth1: " + e.failedCodeStackDepth); throw e
      }
    )
  }

  private def go2: Future[Assertion] = {
    Future.successful(
      try assertResult("test")("best") catch {
        case e: StackDepthException =>
          println("failedCodeStackDepth2: " + e.failedCodeStackDepth); throw e
      }
    )
  }

  private def go3: Future[Assertion] = {
    Future {
      try assertResult("test")("best") catch {
        case e: StackDepthException =>
          println("failedCodeStackDepth3: " + e.failedCodeStackDepth); throw e
      }
    }
  }

  private def go4(implicit pos: Position): Future[Assertion] = {
    Future {
      try assertResult("test")("best") catch {
        case e: StackDepthException =>
          println("failedCodeStackDepth4: " + e.failedCodeStackDepth); throw e
      }
    }
  }

  private def go5(implicit pos: Position): Future[Assertion] = {
    Utils.foo()
  }

  test("test OK 1") {
    go1
  }
  test("test OK 2") {
    go2
  }
  test("test OK 3") {
    go3
  }
  test("test BAD 1") {
    go4
  }
  test("test BAD 2") {
    go5
  }
}

The output is as follows:
failedCodeStackDepth1: 8
failedCodeStackDepth2: 6
failedCodeStackDepth3: 6
failedCodeStackDepth4: 0
failedCodeStackDepth5: 0

Notice that in the "test BAD 1" it fails to detect failedCodeStackDepth and returns 0 instead.
Future { } introduces an asynchronous boundary, and parameter implicit pos: Position holds a line which is different from the line inside Future {}. Due to this in this place org.scalatest.exceptions.StackDepthExceptionHelper#getStackDepth it can't find a stack trace element with the same line number as in pos, because inside Future { } async boundary, the line number is different.
This issue leads to an issue in IntelliJ Scala Plugin, where we rely on the value of failedCodeStackDepth
https://youtrack.jetbrains.com/issue/SCL-21627/clicking-on-a-hyperlink-in-a-StackTrace-of-a-failed-test-navigates-to-a-wrong-file-Assertions.scala
In theory, in such case we could just pick the line with matching only the file name and not the line.

Test "test BAD 2" is similar, but in this case we can't do this trick because stacktrace doesn't contain the original file name with the tests

In theory, in this case, we could just pick the line with matching only the file name and not the line.

@unkarjedy @mutcianm @bvenners  hmm, unfortunately unless we do the stack trace look up at the point of the Position is created, we can't refer back to the stack trace of the passed Position where it is created.  Theoretically, we can either compute the stack depth at the point of the creation of the Position, or, we save the stack trace along in the Position, but both are very expensive thing to do, I think.  I wonder if intellij can use the Position directly when it is available?

I wonder if intellij can use the Position directly when it is available?

The position only contains the file name, not the file path.
The path is only present if SCALACTIC_FILL_FILE_PATHNAMES env var is set
https://github.com/scalatest/scalatest/blob/972b4d3962435c266f70c0126c81e66f2d7f9b74/jvm/scalactic-macro/src/main/resources/org/scalactic/ScalacticBundle.properties#L60
Not sure if we should silently add it during the compilation.
It might introduce extra unexpected issues.
For now I am using the solution described in https://github.com/JetBrains/intellij-scala/commit/b63f204acd63b8a40231052ad4c574e79a0b046c

Navigation will still work based on the file name.
However, we don't have a file path, we only have a short file name.
When we have multiple files with the same name, IDEA will show a chooser tooltip so the user can manually choose which file to open

I think we might close this then

Why is SCALACTIC_FILL_FILE_PATHNAMES not the default, and why can it only be set as an environment variable?


CRNA issue -- Tab component example fails to run

Running the tab component example in a clean build of CRNA yields the following:

@felipecocco do you get the same issue when u use it with react native CLI?

@binoy14 Sorry, my mistake -- I did get the same error running it with the react native CLI. I failed to remove the  /* ... more tabs here */  comment, which was being interpreted as a child of the component. Deleting that line made it all work. My apologies!


[HUDI-7513] Add jackson-module-scala to spark bundle

Change Logs
#10097 we relocated "com.fasterxml.jackson.module",
https://github.com/apache/hudi/blob/2dcdd311245b38c0a9884338d6333212a730d310/pom.xml#L582-L586
this changes the package path of jackson-module-scala_${scala.binary.version}.
When we do spark stream read, we will get ClassNotFoundException: org.apache.hudi.com.fasterxml.jackson.module.scala.DefaultScalaModule$
Impact
none
Risk level (write none, low medium or high below)
none
Documentation Update
Describe any necessary documentation update if there is any new feature, config, or user-facing change. If not, put "none".

The config description must be updated if new configs are added or the default value of the configs are changed
Any new feature or user-facing change requires updating the Hudi website. Please create a Jira ticket, attach the
ticket number here and follow the instruction to make
changes to the website.

Contributor's checklist

[ ] Read through contributor's guide
[ ] Change Logs and Impact were stated clearly
[ ] Adequate tests were added if applicable
[ ] CI passed

@nsivabalan Can you check this PR?

yes, we might need to fix all bundles.
@ad1happy2go : can you try out the patch w/ spark and utilities bundle and let us know if we are good here.

I searched the whole project, only jackson-module-afterburner and jackson-module-scala have the package path "com.fasterxml.jackson.module".  And the fix is in the main pom, this change also takes effect for other modules.

Would merge it first, we can fire following-up fix if it is necessary for specific bundles.


Fix test launcher for Bazel JUnit tests

Problem
If you create a test launcher using the Project Explorer, it works:

Click on the test class
Right click and choose Run As -> Bazel JUnit Test

But it does NOT work if you do this:

Click on the test class in the Project Explorer
In the Run menu, choose Run Configurations...
There is no way here to create a test launcher for that class successfully

The problem is if you create the launcher with the 'JUnit Test' launcher, the classpath is not setup correctly. You must create it with the 'Bazel JUnit Target' launcher.
Testing
Contexts

User chooses to Run when a test class is open in the Java editor
Run menu -> Run Configurations

Use cases

Run a single test class
Run a single test method
Run all tests in a package
Run all tests in a project

Bazel configs:

Each test rule is explicitly listed in the BUILD file
List comprehension style

Other factors

Junit4
Junit5
Debug

See #18 for details on the solution. This ended up being just a dupe of that issue.


swc tries to parse //# sourceMappingURL from inside a string variable

Describe the bug
swc incorrectly tries to parse //# sourceMappingURL directive from inside of a string variable
The issue doesn't show up in playground, since the code does compile but when compiling in terminal, the error is written to console.
Input code
var a = "//# sourceMappingURL=[file].map"

Config
{
    "sourceMaps": "inline",
    "jsc": {
        "target": "es2021",
        "parser": {
          "syntax": "ecmascript"
        }
    }
}

Playground link (or link to the minimal reproduction)
https://play.swc.rs/?version=1.4.14&code=H4sIAAAAAAAAAytLLFJIVLBVUNLXV1Yozi8tSk71TSwoyMxLDw3ysY1Oy8xJjdXLTSxQAgDDoVpaKQAAAA%3D%3D&config=H4sIAAAAAAAAA1WMQQqAMAwE732F5OxBPfoHHxFqkIrWkqSgiH%2B3rSK4l7C7szlNlQSyRbY0YBDoK3B%2BcZ6gfrpZbArPYkqgyBNpBkm6pmtfsHQBWYh%2FfH5%2FeMW9LOyKYtkFhQ%2B4nv17wMmwjXGhhCtHMpe5AeizYuOlAAAA
SWC Info output
    Operating System:
        Platform: win32
        Arch: x64
        Machine Type: x86_64
        Version: Windows 10 Pro
        CPU: (8 cores)
            Models: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz

    Binaries:
        Node: 16.19.0
        npm: N/A
        Yarn: N/A
        pnpm: N/A

    Relevant Packages:
        @swc/core: 1.4.14
        @swc/helpers: N/A
        @swc/types: 0.1.6

    SWC Config:
        output: N/A
        .swcrc path: N/A

    Next.js info:
        output: N/A

Expected behavior
No error in console
Actual behavior
  ERROR  failed to read input source map: failed to parse inline source map url
[file].map"

Caused by:
    relative URL without a base
    at C:\Users\runneradmin\.cargo\registry\src\index.crates.io-6f17d22bba15001f\swc-0.273.25\src\lib.rs:385

Successfully compiled 1 file with swc.
var a = "//# sourceMappingURL=[file].map";

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGEgPSBcIi8vIyBzb3VyY2VNYXBwaW5nVVJMPVtmaWxlXS5tYXBcIiJdLCJuYW1lcyI6WyJhIl0sInJhbmdlTWFwcGluZ3MiOiIiLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsSUFBSSJ9

Version
1.4.14
Additional context
No response

I'm getting a million of these messages   ERROR  failed to read input source map: failed to parse inline source map url every-js-file-in-the-world.js.map. We only use @swc/jest but this is happening for the latest version. When will that be rolled out as a fix?

@atrofimov-sc It's already published. Please provide a minimal repro.

Where is it published? I see @swc/jest hasn't been updated in 3 months:

I had to revert as well. I see this project isn't well maintained, so
that's also a thing to think about.
On Fri, May 31, 2024 at 12:44 AM Phebe S @.***> wrote:

@mctrafik https://github.com/mctrafik I also encountered this issue
with swc/core versions starting 1.4.12 and up. Downgrading to 1.4.11 fixed
the issue. How did you fix yours? I'm hesitant with the fix I came up with
because the version is quite outdated.
—
Reply to this email directly, view it on GitHub
https://github.com/swc-project/swc/issues/8869#issuecomment-2141408055,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BGG2M5L5Y565PO3EBMDXY73ZFAS6RAVCNFSM6AAAAABGJ6D6JKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBRGQYDQMBVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

So do you have a reproduction?

@Phebonacci @mctrafik Can you provide a reproduction?


How to say the whole day is possible?

I want to put the whole interval, when I dont care about the time on the day. But Then I get an error.

Somehow related, Rita should wait until I entered an end hour.

OK, looks like the documentation is misleading. Above is told to enter 9 19 but later [9-19] appears what makes it a bit confusing.

Last night I actually also wondered how to conveniently communicate to Rita that the whole day is free. I was kind of assuming that the opposite (the whole day is booked) would be more likely so I set that as default.
Do you think I should change the default or make the docs clearer (which I'll have to do anyway).

Yeah, I also thought whats the better default, but thats then more personally. So maybe make it configurable in the beginning of the conversation. ^^
I personally would rather like to type never for no time at all instead of typing 9 19 for the whole day. Typing 9 19 for a whole day feels rather unnatural to me.


Support Toggleable Drawer

Make the side navigation toggleable, this would give more real estate for the main content.
I tried to replace Paper with Drawer component type by changing the Menu layout, but could not figure out to toggle open/close state.

Fixed by #328