Remove tryOrOnError from subscription

Somehow we missed this, but in order to comply with the es-observable spec, and in order not to confuse RxJS 4 users more than we already have, errors thrown in the next handler shouldn't jump to the error handler:
Observable.of('hi').subscribe(() => {
  throw 'haha!';
}, (err) => {
  // THIS SHOULD NEVER BE HIT.
});

It should just throw.

@blesh 100% disagree, as the proposed behavior is the source of developer confusion, inconsistent with RxJava, and isn't the proper dual implementation of Enumerable's pull-based error handling.
In the real world, users handle error side-effects in the subscription's error handler. Because errors thrown inside next haven't traditionally been caught and forwarded on to the error handler (except in RxJava), developers are forced to move their next side-effects into a do block just before the subscription:
someObservable.do((event) => {
  // a bunch of side effects that might throw
}).subscribe(noop, logError);

This is less efficient (creates another Observable + Operator + Subscriber between the final subscription and the source) and encourages developers to move side-effects from the Subscription (where they should be isolated) into the Observable.
Since Observable is the 1-1 push-based dual of Enumerable's pull-based model, it's helpful to ask what would happen if we modeled this as an Enumerable. As you can see, errors thrown consuming the output of an Enumerable do get forwarded on to the final error handler:
const range = Enumerable.range(0, 10);
const enumerator = range.getEnumerator();
let error, errorHappened = false;
try {
  while (enumerator.hasNext()) {
    onNext(enumerator.getCurrent());
  }
} catch (e) {
  error = e;
  errorHappened = true;
} finally {
  // either call onError or onCompleted, but not both
  if (errorHappened) {
    onError(error);
  } else {
    onCompleted();
  }
  dispose();
}

function onNext(x) {
  if (x === 5) { throw x; }
}
function onError(e) { console.error('error: ', e); }
function onCompleted() { console.log('completed without error'); }
function dispose() { console.log('terminated'); }

As you can see, if an error is throw by the consumer of each value, the error is forwarded on to the error handler.

/cc @zenparsing @jhusain

also /cc @mattpodwysocki @headinthebox

Since Observable is the 1-1 push-based dual of Enumerable's pull-based model,

@trxcllnt I was thinking about the example you provided (same as above) after I discussed this with you last night, and I wonder if there might be a misinterpretation of "dual".  Iterable and Observable might be duals, but how to get data out of them aren't "duals", right? I mean, for Observable, you've got subscribe and forEach. But with Iterable, you can "subscribe" to the data in a variety of ways: plain loop hitting next(), for..of, in-line code hitting next. Since this is about the behavior of subscription, I'm not so sure.

Regardless of the chosen semantics, I think that the overloads of "subscribe" need to match.  In other words, o.subscribe(a, b, c) should work the same as o.subscribe({ next: a, error: b, complete: c }).  I think they are different in this respect right now for RxJS?
Previously I argued for the RxJS4 semantics, but I think I might be changing my mind, based on practical considerations.  It seems like with the Rx4 behavior, you have to do a bunch of try-catch'ing in the "next" handler for certain combinators (where you forward the error to the observer's "error" handler in the catch block), but you wouldn't have to do that if we adopted @trxcllnt 's suggestion.
I admit I haven't thought it all the way through though.

@trxcllnt @zenparsing we thought about this long and hard for RxJS v4 and you should protect user code, but anything else should not be protected because it is at the edge of the monad. See our design guidelines on that matter

@mattpodwysocki I saw this line in the guidelines:

Calling the onError method from these places will lead to unexpected behavior.

What sorts of unexpected behavior? Are there examples?

@mattpodwysocki not according to @headinthebox's comment on this issue a few months ago.

@trxcllnt and @headinthebox is very much mistaken. Here's a repro on dotnetfiddle

@trxcllnt @blesh  here's a better explanation from Bart:
In practice we can’t always send things into the observer for errors during subscribe; there may be issues in setting things up etc. There’d also be a race between step 1 of creating a subscription which may hook up the observer and step 2 to do more activities as part of subscription creation, so an onError message from the data flow can come into the observer while the subscribe logic would also want to raise an error, and the result would be undefined. That really speaks to a fundamental flaw with the whole idea of subscribe immediately making things hot and juggling with disposable objects all over the place, but that ship has sailed by now.
Of course there are many cases where things seem like Subscribe would throw, but the error comes out through OnError, e.g. xs.startWith(1), xs.delaySubscription(t), etc.

For me it's pretty simple: subscribe.error (2nd callback) is for errors from subscription, when subscribe.success (1st callback) is for "ok" events from subscription. Handling success events and handling error events is 2 different universes - if some error will happen in handling success event, it just can't be reason to call error handler, because we can't say "subscription returned error" - no, subscription returned "success", we just weren't able to handle it without errors.

@mattpodwysocki whether @headinthebox is mistaken about how Rx.NET works or not isn't the point, the fact that he agrees with this behavior is.

@trxcllnt I have a writeup from Bart de Smet which goes into much deeper discussion as to why this is a bad idea and will post later.

@e-oz raises an interesting point. I changes the semantics of the error handler.
Before if it was hit it meant "The producer had a problem", now it means "either the producer OR the consumer had a problem".

@mattpodwysocki I see Bart's comment in my email (but not here?), but two questions:

Is this still a problem in single-threaded JS?
If it doesn't work in .NET, is there a bug in RxJava?

@blesh yes, the point is the final error handler catches all uncaught errors, aka errors that aren't caught by the source Observable, next, or complete.
source
  // handle all errors from the source observable only.
  // Subscriber's `error` handler is invoked if `catch` can't recover.
  .catch((e) => /*{... recover or re-throw}*/)
  .subscribe(
    (x) => { if (x === 'foo') { throw x; }},
    // handle all uncaught errors:
    // 1. from the Observable
    // 2. from `next` or `completed`
    (e) => { console.error(e); }
    ( ) => { throw 'error while completing'; }
  );

Yeah, it's a sticky problem.

It means you don't know if your producer erred or if your consumer erred.
There's no way to handle it otherwise (currently).

Could add a catch method to the subscription. haha. :p

@trxcllnt I don't think it makes sense to send errors thrown from the complete handler to the error handler, since according to the protocol only one of those handlers should ever be called.

I don't think it makes sense to send errors thrown from the complete handler to the error handler, since according to the protocol only one of those handlers should ever be called.

I fully agree with this one.
Naive observation: why can't developers just use a try catch block inside the next callback?

  }
);

What's so fundamentally wrong about the above?

@staltz There's definitely nothing wrong with it conceptually, but I guess the question is whether it's more practical to route errors thrown from the next handler to the error handler.
With RxJS 4 semantics, when writing operators, you find yourself wrapping the next logic in try blocks, which is annoying and easy to forget.  Compare these implementations of forEach:
// RxJS 4 Semantics
({
    forEach(fn) {
        var thisArg = arguments[1];

        return new Promise((resolve, reject) => {
            if (typeof fn !== "function")
                throw new TypeError(fn + " is not a function");

            let subscription = this.subscribe({
                next(value) {
                    try {
                        return fn.call(thisArg, value);
                    } catch (e) {
                        subscription.unsubscribe();
                        reject(e);
                    }
                },
                error: reject,
                complete: resolve,
            });
        });
    },
});

// RxJava Semantics
({
    forEach(fn) {
        var thisArg = arguments[1];

        return new Promise((resolve, reject) => {
            if (typeof fn !== "function")
                throw new TypeError(fn + " is not a function");

            this.subscribe({
                next(value) { return fn.call(thisArg, value) },
                error: reject,
                complete: resolve,
            });
        });
    },
});

And there's actually still a bug with the RxJS 4 implementation, because in es-observable we don't support synchronous unsubscription (yet).

@zenparsing since according to the protocol only one of those handlers should ever be called.

Normally I'd agree, but if that's how it works in RxJava and @headinthebox advocates, I'm not going to deviate.
@staltz the point is there should be one place to you handle uncaught errors (the onError handler) because you shouldn't be forced to repeat the same code in two places (inside onNext and onError).

@trxcllnt  the point is there should be one place to you handle uncaught errors (the onError handler) because you shouldn't be forced to repeat the same code in two places (inside onNext and onError).

Why have the same error catching code for two very different sources of error? In onError you know you are treating errors that happened in the source Observable. It tells something about the source Observable, for instance, maybe you should add a retry() or a catch(), or maybe something is wrong about the original data source. In a try catch inside one of the observer callbacks, you know something wrong happened to the consumer/observer and its side effects that it generated. Really, it's this:

@blesh It means you don't know if your producer erred or if your consumer erred.

@staltz yes, but that's what the catch operator is for. After the error has passed the final catch handler and made it to the Subscriber, it has become an UnhandledError, and the source of the error no longer matters. It no longer matters whether an unhandled error originated from the Observable or from next, they're both unhandled exception cases and should be funneled to the unhandled exception handler.

and should be funneled to the unhandled error handler.

But that's the problem, onError is not unhandledErrorsHandler, it's a handler for all errors happened in the producer/Observable. I know you want it to be so, but semantically it's not.
We're not talking about the impossibility of handling errors thrown from the observer. I think you understand the errors from producer or consumer explanation. We're talking about the (in)convenience of such limitation, and the desire to have a "capture-all" handler, no matter where it came from. IMHO I wouldn't bend the Observable contract [1] just to get a small convenience.
[1] That is, both onComplete and onError could be called on the observer.

I have been thinking about this recently as well when simplifying the RxMobile code base. I'm with @staltz  on this.

@headinthebox There are two three options on the table:

Errors thrown from next and complete are sent to error.
Errors thrown from next and complete are not sent to error.
Errors thrown from next only are sent to error.

Which one are you arguing for?

});

That’s right: it should not hit, just like it doesn’t in Rx.NET:
Observable.Return(42).Subscribe(
    x => { throw new Exception("Boom!"); }, // Thrown on producing thread
    ex => Console.WriteLine(ex.Message),    // NEVER GETS HIT
    () => { Console.WriteLine("Done!"); }
);

If OnNext somehow could reach into OnError, it’d mean that an ongoing OnError message is running overlapped with the (failing) OnNext message, which violates the grammar: two marbles are sitting on top of each other rather than next to each other. Observers are purely sequential. Also, what would it mean for an OnCompleted (a terminal) message to throw? Trigger OnError as well? And what about OnError throwing? Causing a stack overflow in OnError because it keeps calling itself?
Note that operators can catch a user exception in their observer (e.g. with filtering behavior) and forward the error to the downstream observer. We’re talking about two different observers here. The end of the chain has nowhere else to put the exception other than the thread it’s running on, which could be backed by a scheduler, which could have an unhandled exception handler directly or indirectly (e.g. the task pool in .NET, or the dispatcher in WPF).
In effect, redirecting errors from a handler to itself (in case of event handlers) or a sibling thereof (in case of observers, any of the three “channels”), prevents making forward progress in the pipeline which could be detected – in a rather unfortunate way – by the underlying runtime in the form of a stack overflow, or go unnoticed on an event loop type scheduler as an infinite loop. Also, bubbling up the exception to the producer of the message provides valuable information to it: the consumer failed for the reason conveyed in the exception object and can stop producing messages (continuing would mean leaving a gap in the sequence and possibly get incorrect results, e.g. for an aggregate that’s skipping a value). Granted, routing down OnError would have a similar effect because of auto-dispose behavior on terminal messages, but without conveying the error condition to the producer, and with the undesirable properties elaborated on above (including violating the observer grammar which is a basic assumption we rely on everywhere).

@zenparsing @headinthebox I'm opting for number 2 for the reasons @bartdesmet states above.  The edge of a monad is a dangerous place to be routing onError to

@zenparsing - My take is 2, which is always what it's been in Rx.NET. 1 and 3 violate the observer grammar, having overlapped notifications on the same observer. An ICantHandleStockGoingDownException thrown by the receiver of a stock quote (your problem) is vastly different from CompanyBankruptException sent by the producer of the stock quote (their problem).

@bartdesmet

If OnNext somehow could reach into OnError, it’d mean that an ongoing OnError message is running overlapped with the (failing) OnNext message, which violates the grammar: two marbles are sitting on top of each other rather than next to each other.

I'm not sure if that's strictly true.  If the next handler throws, control does leave the next handler (albeit through exception control flow).  There's no overlap (as far as I can tell).

An ICantHandleStockGoingDownException thrown by the receiver of a stock quote (your problem) is vastly different from CompanyBankruptException sent by the producer of the stock quote (their problem).

True.  On the other hand, how do you deal with the ICantHandleStockGoingDownException, other than window.onerror?  Is there a good story for that?

A stack trace like:
obsever123.OnError(Exception)
obsever123.OnNext(TValue)

is overlap. Dealing with ICantHandleStockGoingDownException is your own problem and has nothing to do with Rx, just like you throwing WheiMyMousePointerLeftMyWindow from a MouseMove handler in a UI framework. Either you can deal with it, or you can't. If you can't, feel free to complain to the producer (the stock exchange or the windowing system in those examples), but it's likely not going to be of much help to you. That's the same for throwing an exception from every type of event handler I can think of. Worst case you bring down the thread, best case (if you like global state, but that's a different story) there's a handler higher up so you can recover from your own mistakes.

True. On the other hand, how do you deal with the ICantHandleStockGoingDownException, other than window.onerror? Is there a good story for that?

Apart from manual try/catch, one option is
 subscribe(next?: (value: T) => void,
          error?: (error: any) => void,
          complete?: () => void,
          unhandled?: () => void): Subscription

Update on my own comment above, the stack trace is not really what you'd see in the debugger if you catch and reroute the exception of course. I'm really using this as a textual representation of a marble diagram, but it may be more confusing than it helps.

@bartdesmet two marbles are sitting on top of each other rather than next to each other.

Another way of looking at it is that the next message is being converted into an error message at the final Subscriber:
Observable.of(42).subscribe(
  (x) => {
    try { finalSubscriberOnNext(x); }
    catch (e) { finalSubscriberOnError(e); }
  },
  (e) => { finalSubscriberOnError(e); }
);

@mattpodwysocki @bartdesmet I understand where you're coming from. Do you mind commenting on my point above about Enumerable's dual behavior? From what I can tell, only the 3rd option from @zenparsing's comment above is the correct dual behavior. For example:
const enumerator = Enumerable.range(0, 10)
  // throws at 3 and 7
  .do((x) => if (x === 3 || x === 7) { throw x; })
  // recovers from 3, throws at 7
  .catch((x) => (x === 3) ? Enumerable.return(x) : Enumerable.throw(x))
  .getEnumerator();

let error, errorHappened = false;
// This block can't tell the difference between the Enumerator throwing at 7 and onNext throwing at 5
try {
  while (enumerator.moveNext()) {
    // this will throw at 5
    onNext(enumerator.getCurrent());
  }
} catch (e) {
  error = e;
  errorHappened = true;
} finally {
  // either call onError or onCompleted, but not both
  if (errorHappened) {
    onError(error);
  } else {
    onCompleted();
  }
  dispose();
}

function onNext(x) {
  if (x === 5) { throw x; }
}
function onError(e) { console.error('unhandled error: ', e); }
function onCompleted() { console.log('completed without error'); }
function dispose() { console.log('terminated'); }

For RxMobile I opted for 2.

In an enumerator, the data flow and control flow point in the same direction, you're pulling data out and can't distinguish between errors from the source and errors in your own processing because they happen to share the same channel. Based on that, you can even argue for option 1; what prevents your consuming loop to from checking for !e.MoveNext() and throwing an exception if that's the case (i.e. the same as handling OnCompleted). In a push based world, exceptions from handlers flow in the opposite direction of the data flow, so the physical reality is that channels are different.

Couldn't that just as easily be:
const enumerator = Enumerable.range(0, 10)
  // throws at 3 and 7
  .do((x) => if (x === 3 || x === 7) { throw x; })
  // recovers from 3, throws at 7
  .catch((x) => (x === 3) ? Enumerable.return(x) : Enumerable.throw(x))
  .getEnumerator();

// This block can't tell the difference between the Enumerator throwing at 7 and onNext throwing at 5
while (enumerator.moveNext()) {
  // this will throw at 5
  try {
    onNext(enumerator.getCurrent());
  } catch (e) {
    onError(e);
    break;
  }
}
onCompleted();
dispose();

function onNext(x) {
  if (x === 5) { throw x; }
}
function onError(e) { console.error('unhandled error: ', e); }
function onCompleted() { console.log('completed without error'); }
function dispose() { console.log('terminated'); }

I mean, moveNext() shouldn't throw. It's getCurrent() you're worried about.

@blesh moveNext does throw, getCurrent is just a getter. In your example onError would only ever be called if onNext throws, but not if the Enumerable throws.

To clarify: we're only wrapping the final Subscriber's next invocation in a try-catch, and if it throws, converting the next into an error message. This is purely an API decision, and has very little impact on performance.

@bartdesmet In a push based world, exceptions from handlers flow in the opposite direction of the data flow, so the physical reality is that channels are different.

While I agree about the direction of handler exceptions vs. data-flow, I don't understand how catching exceptions from the final Subscriber's next handler and converting it into an error message is different from flatMap catching exceptions from its Observable selector and converting them into error messages also.

@trxcllnt  Side question:  do you agree, though, that the behavior of o.subscribe(observer) should match o.subscribe(a, b, c)?

@zenparsing heh, definitely.

@trxcllnt - In an operator like SelectMany we have access to a downstream observer to push the error to; we can notify them about your failure, or handle it some way prescribed by the operator's semantics (e.g. Where pushes errors in evaluating the predicate to the downstream OnError channel). At the end of the chain, the listening ear for your mistakes is whoever is surrounding you, whether that be the runtime or some facility on top of it (as exposed via schedulers typically). Think about the runtime around you as some kind of ambient observer where the throw keyword is the runtime's OnError and downstream protected regions (i.e. up the call stack because the very nature of push-based data flow) such as catch are the listening ears to deal with your misery.
In the "final subscribe", you're leaving the world of being in the comfort zone of a declarative internal DSL (consisting of Rx operators chained together using fluent syntax) that's about data flow processing and you're saying "yup, I can handle the outcome of this in imperative land with handlers" just like you do with callbacks of any kind in UI frameworks etc. From there on, we don't have a say about your error handling policies anymore; we're no longer processing data on your behalf, we're giving you the result, which happens to be through a callback mechanism.
@zenparsing - You make a very good point to further solidify this argument; if the strange behavior of redirecting an error has to apply for observers, we have to wrap observers (but only at the end of the chain somehow?) to catch errors coming out of OnNext and OnCompleted and stuff them into the OnError channel. So the observable interface now has different modes of operation (used within an operator or at the end of the chain) determining wrapping logic to decide on whether or not to put in a catch, and it no longer operates on the bare observer passed in (granted, we tie a knot there ourselves in many cases to deal with auto-detach behavior, but that's a whole different topic on our historical choice of using IDisposable). Alternatively, it'd be a behavior of every observer (so the supplied observer wouldn't be wrapped) to do this error redirection, but then you can't write some operators (which are effectively observer implementations) or upstream runtime facilities (like a global handler associated with a scheduler, or the Catch operator for schedulers) that want to put their hand on downstream errors anymore, because every observer would have "boomerang" behavior intrinsic to it.
Finally, this has really become a discussion on composition. If we bake a behavior like catching exceptions in here and there, users can't take them out without rewriting those pieces of the framework (which gets especially hard if they're in base classes you can't just swap out), and maybe we'd end up seeing alternative implementations that look the same at the surface and confuse people because they have different runtime behavior. If we omit things, people can compose the additional behavior in if they want to (and they should feel free to create an extension method to simplify this plumbing if one gets addicted to that alternate reality).
Of course one can disagree with defaults e.g. for operators; I can't tell the number of times people in large scale event processing systems (like the one I'm working on in Bing) think they want very specific error behavior for every operator, not just "to catch or not to catch" but going down rabbit holes of "Wow, you can kill the whole reactive computation by null-ref'ing from a Where predicate? Shouldn't NullReferenceException be treated as non-fatal?". Now, that becomes a fundamental discussion about whether streams are sequences, whether there's a separate error pipeline (much like PowerShell has "error records" and various ETL systems have "error channels"), whether there's a configurable error escalation policy, etc. But Rx as a framework is what it is, a way to deal with sequences of objects acquired in a push-based manner with a single shot at processing events flowing through them.

Materialize and dematerialize were added precisely to allow for user specialization of errors.

Materialize and dematerialize were added precisely to allow for user specialization of errors.

Umm... What is that? Sounds spooky.  : )

@zenparsing materialize just gives you a stream of Notifications instead: Next, Next, Error, etc.
dematerialize takes a stream of notifications and makes it into a regular stream.

cc/ @abersnaze @stealthcode from RxJava, who are interested in this conversation.

Note that materialize and dematerialize used by be called reify and deify at some point. See https://en.wikipedia.org/wiki/Reification_(computer_science) for more information on the concept. Effectively it represents method calls like OnNext, OnError, and OnCompleted as objects:
static IObservable<Notification<T>> Materialize<T>(this IObservable<T> source);
static IObservable<T> Dematerialize<T>(this IObservable<Notification<T>> source);

For example, an OnError message would become an OnNext call whose payload is a Notification<T> whose kind is OnError and whose Exception property contains the exception object. This effectively multiplexes all three observer channels into one, so you can inspect them as data objects. For example, a Catch operator would be similar to a Where filter on a materialized sequence, filtering by the Kind property of the Notification<T>.

One more thought to reduce possible confusion: in the context of this discussion (errors in callbacks for the "final subscribe"), materialize has little use, because it acts like any other operator and does not care about errors occurring downstream in handlers. It only deals with errors it receives from its source upstream. Effectively, operators are always upstream from that "final" set of handlers that are discussed here.
In the context of an operator producing an error, materialize plays a role to treat errors as data objects wrapped in notification objects. Note though that its use is limited because it does not enable an upstream operator to produce many OnError calls that are turned into such error record notifications. For example, if a Where operator encounters an error while evaluating the predicate for message A, it sends an OnError downstream, which may be a Materialize operator that turns it into of a notification object. However, the mere fact of the OnError being sent causes the Where to shut down, for if it wouldn't it would break the observer grammar for its consumer. It'd effectively change the grammar from OnNext* (OnError|OnCompleted)? to (OnNext|OnError)* OnCompleted?. So a subsequent message B will never be processed by the Where operator. Unless the original sequence has notifications as elements from the get-go and things like predicates passed to operators are expressed in terms of operations on the notification objects to unwrap them (still without causing exceptions, and making each operation on elements much more clunky to deal with the discriminated union that is the notification), materialize still has limited mileage. It comes in handy from time to time though, for example when serializing a sequence of observer calls by treating them as notification objects that can be serialized and deserialized and dematerialized on the receiving end to reconstitute the sequence.

When onNext throws, should we still auto-unsubscribe?

@headinthebox it should still use the AutoDetachObserver behavior, so yes that remains in effect

@blesh  Does forEach still work?  In other words, is reject still called on the promise if the "next" handler throws?

@zenparsing ... no. I missed that bit of nuance. I'll add it.

Here is a small "test" that show the .NET behavior
namespace RxTests
{
	class MainClass
	{

		public static void Main (string[] args)
		{
			var d = (CompositeDisposable) Observable.Interval (TimeSpan.FromSeconds (1))
				.Subscribe(x => {
					if(x > 3) {
						throw new Exception("...");
					} else {
						Console.WriteLine(x);
					}}, e => { Console.WriteLine(e.Message); });

			d.Add(Disposable.Create(()=>{ Console.WriteLine("?????");}));

			Console.ReadKey ();
		}
	}
}

Output uncaught exception and
0
1
2
3
?????

@headinthebox correct, it should conform to the AutoDetachObserver as we've had which protects the OnNext calls and disposes, then throws.


Dynamic Snippet Form problem

Hi,
At first, thanks for your efforts doing this great app.
Today I have an idea about to make Snippet Form dynamic, so I did something like this:
use App\Models\User;

$users = User::selectRaw('first_name as label, id as value')->get()->toArray();

$field_user = [
    'value' => '',
    'label' => 'User',
    'description' => 'Select a user.',
    'type' => 'select',
    'options' => $users,
];

But as soon as I click the Snippet Form button, I get this white empty screen:

I was trying to populate the User select from the DB, also I was planning to use the $field_user value as an input for a second DB query, so the chosen value for $field_user will customize the result of the second query!
I know maybe the feature was not design to work as I wanted, but when I think about it, supporting dynamic Snippet Form will make the possibilities endless for Tinkerun
Also another request: I will be grateful if you implemented a self-update feature in Tinkerun, so we always have the latest and greatest without checking Tinkerun website every week or so

yes, it not support the dynamic Snippet Form. your idea is so cool.
I will try to do the auto-update.

@diaafares do you have any other use case of dynamic Snippet Form?

Hi @billyct
I told you about my use case at the previous comment, that I want to create dynamic Snippet Form input that are populated from the Database, then use these inputs values as parameters for DB queries to get the final results.
For example: select a user to get how many post he have and other statistics.
The possibilities are endless, you can whatever you want if we get this feature.
I have an idea about how you may implement the feature:
maybe we can a prefix for the variables that we want to make them dynamic, like adding: $dynamic_ to the variable $dynamic_users and when you click the Snippet Form button, Tinkerun will search for these variables that have $dynamic_ prefix and run them in Tinker to get their values and cache it, after that, it should be able to render the Snippet Form with the right values.
Just wanted to give you an idea how you can implement this feature, but maybe you have a better solution for this ☺

@diaafares I have done a simple auto-update for mac in v0.2.4

@billyct oh, great work, thank you very much
BTW, in the v0.2.4, I tried the dynamic Snippet Form example code above and it didn't give me an empty screen! instead it display the select input but the select was empty:

yes, I have not done the dynamic Snippet Form yet.
how about writing the dynamic data in the closure
for your case above:
$field_user = [
    'value' => '',
    'label' => 'User',
    'description' => 'Select a user.',
    'type' => 'select',
    'options' => function() {
		return User::selectRaw('first_name as label, id as value')->get()->toArray();
	},
];

with the closure, so I can just run code in the closure only with tinker for getting the dynamic data.

how about writing the dynamic data in the closure
@billyct oh, great idea, way better than what I suggested!

It will be great if we can do it like this:
$options = function() {
    return User::selectRaw('first_name as label, id as value')->get()->toArray();
};

$field_user = [
    'value' => '',
    'label' => 'User',
    'description' => 'Select a user.',
    'type' => 'select',
    'options' => $options,
];

Is that possible? ☺

😉 Already available in v0.2.5

@billyct awesome work, thank you very much ^_^
Please add it to the change log, I can't wait to tell my teammates about it ☺

@billyct BTW, I tried to get v0.2.5 by using auto update feature, but it seems like it didn't work, I opened Tinkerun and it was downloading the new version in the background, I waited until the network activity stopped (it should mean that the download finished) but nothing happened, I restarted the app and I still have v0.2.4.

@diaafares I will check the auto-updater.
And Tinkerun cannot handle 10000 records, because it is only simulating Tinker’s Terminal input.
if I do the 10000 records in the terminal, Tinker will just send me something like below:
App\Models\User {#5477 …6},
App\Models\User {#5478 …6},
App\Models\User {#5479 …6},
App\Models\User {#5480 …6},

I think you should add some conditions for your query 😂

@billyct I added limit(3) to my query and I have the same error!
I think the cause of the problem is that when you did a query to table that have a large data, it will take some time to execute it even if the results are small.
Or maybe the problem is different than my thoughts I really don't know

@diaafares how about just run some code like below in tinker
json_encode((function() {
    return User::selectRaw('first_name as label, id as value')->limit(3)->get()->toArray();
})())

I get the dynamic data in the background by this code.

@billyct running your code using tinker from the terminal give this result (there are no errors):
"[{"label":"Josh","value":2270,"name":"","initials":""},{"label":"Vladimir","value":2271,"name":"","initials":""},{"label":"Daniela","value":2272,"name":"","initials":""}]"

I don't know why the original code doesn't work inside Tinkerun app

@billyct I think the problem is happen because of the import of the User model when Tinkerun execute the closures, as my App have custom setup and the User model is not placed as normal Laravel apps, I ran the code inside Tinker from terminal and it give me the following error:
Aliasing 'User' to 'User\Contracts\User' for this Tinker session.
PHP Error:  Call to undefined method User\Contracts\User::selectRaw() in /www/testappeval()'d code on line 2

The problem is I added the right import inside Tinkerun, but as I said before, it seems like Tinkerun doesn't recognize the imports inside the closures, what you think ☺

@diaafares yes, Tinkerun can't recognize the things outside the closures.
so in your case, you should use
App\Models\User::selectRaw('first_name as label, id as value')->limit(3)->get()->toArray();

not good, but I think it will work 😂
Because Tinkerun does not depend on the PHP runtime, so it's quite not easy to do the Dynamic Snippet Form perfectly.

@billyct yes it worked, but it will be great if Tinkerun returned the error when you hit the Snippet form button, currently if any error happened inside the closure, Tinkerun freezes and you have to Force quit it without knowing whats the problem is.
Try this inside Tinkerun to see whats happen:
$users = function() {
    return User::selectRaw('non_exist_column as label, id as value')->limit(3)->get()->toArray();
};

$field_user = [
    'value' => '',
    'label' => 'User',
    'description' => 'Select a user.',
    'type' => 'select',
    'options' => $users,
];

Notice that I added non_exist_column in the query, Tinkerun will freeze without display the error to the user, but if you ran the same closure inside terminal tinker you will get the following error message:
Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'non_exist_column' in 'field list'

@diaafares yes， I think so. I will do it when I am free

@billyct great, can't wait ☺ thank you so much

Hey @billyct
Since I upgrade to PHP8 I can't use Dynamic snippet form with something like User::selectRaw('first_name as label, id as value')->limit(3)->get()->toArray();
I get the same error as here and when I click OK, tinkerun stuck and I have to force quit it:

I will be grateful if you look at the issue and update Tinkerun to not stuck and show the real error message intead

@diaafares
I have added the error message now, no stuck 😄

@billyct Thank you so much!
Now Tinkerun show me this error:
Error invoking remote method 'parsePhpForm': Error: json_encode((function() {
... return Illuminate\Support\Facades\DB::table('admins')->selectRaw('em ail as label, id as value')->limit(3)->get()->toArray();
... })())
=> "[{"label":"santa.larson@example.com","value":46},{"label":"mschulist@example.org","value":47},{"label":"terry.bud@example.org","value":48}]"
>>>

I tried a different table and a different project and I have the same error always, I don't know why 😞

@diaafares I think it may be because Laravel/Tinker has no color by default.
https://github.com/laravel/tinker/issues/127
checkout the new version, and let me know if you still have problems.

@billyct
it is working now, you are amazing
but I have another problem now, after I tested the dynamic snippet form feature, when I hit command + q to quit Tinkerun, Tinkerun is now freezing and I have to force quit it!


<meta> Array entry does not overidden

Describe the bug
app.vue
useHead({
     {
          property: 'og:image',
          content: [
            'https://cdn.example.com/image.jpg',
            'https://cdn.example.com/image2.jpg',
          ],
        },
})

// page
useHead({
     {
          property: 'og:image',
          content:  'https://cdn.example.com/new.jpg',
        },
})

It only replaces one of the metas
Reproduction
No response
System Info
n/a

Used Package Manager
pnpm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

Same issue here...  Seems like when page is loaded it does not change the meta's.  title works


Fix issue #115

I applied the fix suggested by @drongh and added a test for it.

Current coverage is 96.86%

Merging #118 into master will increase coverage by +0.02% as of aa5ed19

@@            master    #118   diff @@
======================================
  Files           22      22
  Stmts        16461   16461
  Branches         0       0
  Methods          0       0
======================================
+ Hit          15942   15945     +3
  Partial          0       0
+ Missed         519     516     -3

Review entire Coverage Diff as of aa5ed19

Powered by Codecov. Updated on successful CI builds.


tests: Fix args and test viscoacoustic

Viscoacoustic examples is currently failing by default as its kernels are not in the usual ones. Adding explicit tests for them and restoring its working status.

Merged.


[Model Deactivation] - disabled default  assistants using disabled model

System, raw model assistant (claude, gpt etc) should not be visible.

Based on discussion here this is not the expected behaviour anymore. We want assistants to still be visible but throw an error when running an assistant with a disabled provider.


Namespace tests. So for Twitter::Tweet it will generate `spec/widgets/...

Namespace tests.
So for Twitter::Tweet it will generate spec/widgets/twitter/tweet_widget_spec.rb instead of just spec/widgets/tweet_widget_spec.rb

Commit 9022385d2704df2f25791dd6b933c2e2ab27f173 just broke you change.  Can you see about rebasing? Otherwise either I or Apotonick will get to it later.
Thanks again for your work. :-) I know I appreciate it.

You are welcome. All merged :)


M3-1210-close-modals-on-escape

The material-ui Dialog component, on which our ConfirmationDialog
component is based, is meant to close when the user presses the Esc
key, and includes an onClose handler to provide for this.
Several instancas of ConfirmationDialog in the Manager didn't have
this property, leading ot inconsistent behavior. This commit adds
the onClose prop to these instances (the handler function was already
defined in each case as part of the actions object, so no new functions were
needed). I also made the prop required in the ConfirmationDialog interface
so that future instances of the component will fail the build if a close
function is not included.

Coverage decreased (-0.001%) to 27.1% when pulling ad90d18402a2376063b1b28972e36993a5bdfb66 on Jskobos:M3-1210-close-modal into d4fadfad375035431ecdcf0a4da3d3b04e8e8ff6 on linode:develop.

Walked through all the other confirmation dialogs i could find and was able to escape close on them and the ones you updated. Nice work 👍


Activity completion callback is not used on iOS

The callback which can be passed as the second argument is not used anywhere in iOS code. So it's not possible to handle completion of the activity.

+1. Important feature imo

The Share.open() function returns a promise, so you could do something like this to handle completion.
Share.open({
	message: 'message',
	url: 'http://domain.com/page1',
	title: 'Share Page',
}).then((shareInfo) => {
	// this is the equivalent of a completion callback
}).done();

@roman01la the reply of @jasonmerino  resolved this.


GUVNOR-2225: Wires: Replace overloaded Layer.draw() with calls to Layer.batch()

See https://issues.jboss.org/browse/GUVNOR-2225

http://github.com/droolsjbpm/drools-wb/commit/d5bb3192d


Revert "[Dependency Scanning] Do not include -target in extraPCMArgs when scanning an interface"

Reverts apple/swift#38417
This seems to be causing SwiftPM CI failure:
https://ci.swift.org/job/swift-PR-Linux/28129/console

@swift-ci please smoke test

@swift-ci please smoke test Windows platform

@swift-ci please smoke test Linux platform

It looks like this revert is not necessary and https://github.com/apple/swift-driver/pull/765 was enough.
Clean SwiftPM test build:
https://ci.swift.org/job/swift-package-manager-Linux-smoke-test/3506/


Touching the screen should be represented as 0x01 in buttons

Reasoning
Currently, "touching" is not considered as a button. More specifically,

Action
Dispatched PointerDownEvent

Touch screen tap start
buttons = 0x0

Stylus tap start
buttons = <0_or_other_buttons>

Inv-stylus tap start
buttons = <0_or_other_buttons>

However, in reality, touch and stylus touch are almost always considered the same as left mouse button. Currently, a gesture that wants to recognize "touch tap, stylus tap or LMB press" has to use:
(event.device == PointerDeviceKind.mouse && event.buttons == kPrimaryMouseButton) || (event.buttons == 0)

If we define 0x01 as the "primary button" that is equivalent to LMB on all devices, then a gesture that wants to recognize the aformentioned buttons can simply use:
event.buttons == kPrimaryButton

where kPrimaryButton is a new constant with value 1.
Another benefit of this change is to fix the misalignment between buttons and down.
Currently, the relationship between (buttons != 0) and (down != false) is different across devices:

The two booleans are the same for mouse.
The two booleans are independent for stylus.
And for touch, buttons doesn't make sense.

After the change, the two booleans will always be the same.
Last but not least, this change also aligns with the design where stylus buttons start from 0x02 instead of 0x01.
Some discussion and demand can be found at [1] [2] [3]
Changes
We propose to add 0x01 to buttons whenever the pointer is in contact with the screen.
More specifically,

Action
Dispatched PointerDownEvent

Touch screen tap start
buttons = 0x1

Stylus tap start
buttons = 0x1 | <other_buttons>

Inv-stylus tap start
buttons = 0x1 | <other_buttons>

No changes are made to mouse events.
Breaking: No
Since Flutter does not support gestures that recognize buttons, this change will not break existing code, except for the code that writes their own gesture recognizers that distinguishes buttons.
Development plan
The correct place for this feature belongs to the engine (embedder). Unfortunately, this change requires tracking the state of down, which is done by PointerEventConverter.
PointerEventConverter will be moved to embedder by https://github.com/flutter/flutter/pull/28972 https://github.com/flutter/engine/pull/8064 and https://github.com/flutter/engine/pull/8088, but before that happens we'll have to patch them in framework.
Related PR
https://github.com/flutter/flutter/pull/30457

Reopen the issue.
This issue is used as the tracker for a TODO, which does not seem to have been solved.
See: https://github.com/flutter/flutter/pull/55805


Menu: fix can't manually set default-active be a nonexistent value to unactive

… inactivate the memu
Please make sure these boxes are checked before submitting your PR, thank you!

[x] Make sure you follow Element's contributing guide (中文 | English | Español).
[x] Make sure you are merging your commits to dev branch.
[x] Add some descriptions and refer relative issues for you PR.

#12680

那个 issue 的链接不能重现问题，提供个能重现问题的链接吧。

https://jsfiddle.net/qiaoyuwen/Lkvr5unt/


Agents lag and alerts

Implement lag control and alerts in agent. Agents needs a new refactor to simplify commands, and operations.

Refactor already in progress. Lets close this one in favor of the one to follow


CI lint checking is failing

Description
CI lint checking fails with a cryptic error:
go/pkg/mod/github.com/mattn/go-runewidth@v0.0.14/runewidth.go:7:2: found packages uniseg (doc.go) and main (gen_breaktest.go) in<EMAIL_ADDRESS>
@v-byte-cpu can you please help with this? I get the same error when I run locally as well. Also, is it possible to use a single lint checking step, instead of using both revive and golangci-lint?

@kishorenc sure, revive was integrated into golangci-lint


Added pointer-events on checkboxes and radios

Makes it work with FastClick on mobile devices.

@mdo Ping.

I also had trouble getting wtf-forms to work with FastClick. This fix didn't work for me though. Instead I added the following to my stylesheet (suggested here https://github.com/ftlabs/fastclick/issues/60).
label > * { pointer-events: none; }


Navigation with Flow now destroys Mortar-scopes only if they are not found in the destination traversal

This is the pull request with the fix for this following issue:
https://github.com/square/flow/issues/116
Please test to see if it works just fine on your side with the new Flow, although it works perfectly fine for me on 0.12 even through process death.

...eh. Oh well.

Thanks!  The much broader changes that just landed on master should address this among a number of other issues.


Add progress = "none" to calls to annotation_map_tile()

This will suppress the progress bar being printed in the learnr tutorials.

This will need to be explained on first reference (in Week 2, hence the label) as well as being implemented throughout (via the pre-flight checklist)


google_sign_in V 3.0.4 throws PlatformException on very first signin

Hi,
I implemented FirebaseAuth together with google_signin V 3.0.4 which most of the time works but:
If I use a blank emulator where I haven't have logged in into my google account before the App freezes after the browser screen closes and when tapping on the app it throws this platform exception:

It happens when signIn() in google_signin.dart is called.
You can see it in this screencast https://www.screencast.com/t/gxPujx6sqqvd
I attach a logcat recording of that session
locat.txt
my current Flutter version:
[√] Flutter (Channel master, v0.5.8-pre.37, on Microsoft Windows [Version 10.0.17134.165], locale de-DE)
    • Flutter version 0.5.8-pre.37 at C:\Entwicklung\Flutter
    • Framework revision e22f99743b (8 days ago), 2018-07-12 14:18:29 -0700
    • Engine revision ce06bbac58
    • Dart version 2.0.0-dev.63.0.flutter-4c9689c1d2

[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at C:\Users\escam\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-27, build-tools 27.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    • All Android licenses accepted.

[√] Android Studio (version 3.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 26.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)

[√] VS Code, 32-bit edition (version 1.25.1)
    • VS Code at C:\Program Files (x86)\Microsoft VS Code
    • Flutter extension version 2.16.0

[√] Connected devices (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 7.1.1 (API 25) (emulator)

I now debugged the plugin using AS to connect to my App and found out that the Error is already returned from the native GoogleSignIn API.

i am having the same problem, and i don't know how to solve it!
is there a solution or i have to skip/ignore the error?

I really don't know why this throws an error instead of providing a function "onCancel()" whenever the user taps outside the dialog or the internet connection has been disconnected.

Did you checked for adding fingerprint @firebase ?

sure, it works after the first try

I ran into the same problem tonight as well.

@eseidel this really should be fixed for a Google product

@timsneath could you set some one on this plase?

@timsneath Sorry, didn't mean it like you should ordering someone . But I think its kind of embarrassing for a Google Product if it crashes if you sign in on a blank phone.

@escamoteur Do you still experience this issue if you update the google_sign_in to the latest version?
It seems to be working when I tried.

@cyanglaz Hi, I'm sorry but I'm currently no longer on that project so I cannot easily verify.

Sorry that we have to close this issue because we couldn't gather enough details to proceed. If anyone found the same issue and can provide detailed step to reproduce, please feel empowered to open another issue with details!.

@escamoteur
This issue has been moved to https://github.com/FirebaseExtended/flutterfire/issues/748. Any further collaboration will be done there.


Update global.json: update yellow banner - shutdown of website

DE and EN screenshots

@dsarkar When will you deploy this change?

Hi @Ein-Tim

When will you deploy this change?

https://www.coronawarn.app/en/ is now showing the update

so it's finally time to say goodbye 😢 !
All the best!

Thanks for keeping me in the loop @MikeMcC399!

so it's finally time to say goodbye 😢 !

Yes, sadly it is! Thank you, one more time, for your amazing work and all the best for all your future projects! ❤
All the best,
Tim


Add the criminal record hud

About the PR

Add the possibility of seeing the people defined as wanted in the crimerecord computer with the sechud.
Why / Balance

https://github.com/space-wizards/space-station-14/pull/22510#issuecomment-1856968693
I was also waiting for this feature.
Technical details

When the client with an active security HUD, called ShowSecurityIconsSystem, will look at a private dictionary, containing the observed entity (EntityId), the known state to look for, and a boolean (need to refresh). If the entity is not in the dictionary or the boolean is true (because a timer i set to set everything true regularly). Then the client will ask the server for the search status with the EntityId.
On the server side, it has a class that catches client requests and returns the posed ID information by the EntityID, from the criminalrecord (stationrecord).
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

https://github.com/deltanedas/space-station-14/assets/152836416/0a95bb4f-bda8-4375-905f-907907bd19d7
https://github.com/deltanedas/space-station-14/assets/152836416/1c26e1cc-239e-404a-9844-919c0884dc37
https://github.com/deltanedas/space-station-14/assets/152836416/7c878c4d-36f5-46bd-ab41-20b17a97038a
https://github.com/deltanedas/space-station-14/assets/152836416/870a26f9-7f06-4668-a4c0-13e3818cda87
Breaking changes

Changelog

:cl: Baptr0b0t

add: The security HUD now shows wanted people.

realops

realops

Im not working on this anymore.
You free to use any part of my code and hope your criminal record merge soon.

idk i think i will take a different approach


feat(shell): load module dynamically

Closes https://github.com/dagger/dagger/issues/8932
Prompt
Since we can now load different modules within the same session, the prompt now shows the default module (global), if loaded:

Colors
In order to be easier to spot, errors are now shown in red:

Thanks to @cwlbraa for this idea, the prompt symbol (⋈) is also turned red if the last command errored. It's green otherwise.
Fixes

A few core functions like .cache-volume weren't showing, that's now fixed
Module description is now shown when using .doc on the main object, and constructor output improved

Todo

[x] Add .load builtin to load module when --no-load was used
[x] Add .use builtin and pass introspection through state
[x] Load any module
[ ] Tests

definitely a killer feature.
Question: what's the inverse of .use? Exit just exits the whole shell. Would be cool if it were like a subshell? Not sure we can hook into ctrl-d?

Question: what's the inverse of .use?

That's a good question. I thought about it several times, but haven't formed any idea. Maybe .use on its own to basically say "use core"?
It's just changing a string (module ref) in a variable ("" means core).

Exit just exits the whole shell. Would be cool if it were like a subshell? Not sure we can hook into ctrl-d?

That's interesting, and we could use ctrl+d multiple times to undo the "stack", so it would take twice to exit the shell after undoing a .use. However I'm concerned about this possibly being cumbersome to unwind. If you start the shell with a loaded module (the default), wouldn't it take two Ctrl+D to exit the shell (or type "exit")? What if you use .use after another .use?
It's an easy change but I guess I'm wondering what's the value in it?

Btw, as an implementation detail, if you do .load my-module twice, it won't reload a second time. It stays in a (memory) cache. So if you want to go back and forth it's very performant.
However, I wonder if there's a need to force the reload, I mean before https://github.com/dagger/dagger/issues/8987 is resolved.


Mark steps as failed only when there is failure conclusion

a specific partial config is being generated from jobB, it should only depend on the success of jobB

Oh, no problem. I just figured this out when working on the Airbyte plugin. Will update this one.

Oh, another idea. Maybe the current job is always the last element in the jobs array. Also, the current job status is not completed.


Is it possible to anonymize the IP of the "Experiment Viewed" events?

In standard Segment usage you can simply add ["context: ["ip": "<IP_ADDRESS>"]] as the options to pass to the track method. In this SEGOptimizely integration, however, this appears to be done automatically when observing an NSNotification. The list of options to attach to the track is made and submitted in that method.
Looking for some insight on how we can anonymize the IP address to comply with EU GDPR requirements.
Thanks in advance.

Hey @matcartmill
Thanks for writing in here.
I think the short term solution would be to disable the setting to send in the Experiment Viewed as a track event:

Then hook into Optimizely's listener natively and trigger the call with the anonymized IP. You can natively use Optimizely methods by importing the Optimizely header:
#import <OptimizelySDKiOS/OptimizelySDKiOS.h>.
From there you can copy the logic here with the addition of sending the  ["context: ["ip": "<IP_ADDRESS>"]] on the track call.
We can explore adding an additional option to anonymize the IP via a Segment setting, but I want to set expectations that we may need some time to update this since we do have a queue of other fixes to address that have priority for now.
Let me know if this isn't a viable — I'm happy to help out in any other way here!
Thanks :)
Ladan

@ladanazita Sorry for the delay. Unfortunately disabling that Track flag in Segment doesn't actually stop the track form happening. I have added a way to mimic the Track event with the obfuscated IP address, but now we're getting two events in Segment: one with the full details and real IP (segment version), and one without (my version).
Still not sure of a way to do this.


[Feature]: Auto export with bibtex format

Debug log ID
auto export with bibtex format
What happened?
Hi,
Thank you for this great project.
BBT is great for my non-formal writing. But recently I am preparing a scientific paper, the styles that the journal used only supports bibtex format. The entry keys are mismatch with BBT. So is it possible to setting the format for auto export to bibtex format? I seems now it only support better bibtex and better biblatex format.

The issue template asks for a debug log ID. People ignore that, and then ignore the bot reminding them that yes, I do need a debug log ID. Can you offer me some insight on why people are so reluctant to perform 4 mouse clicks so I can help them? I really don't understand. It's really frustrating. I don't want to make the bot explanation longer, because that will make less people read the information.
The debug logs gives me your BBT settings, so that I don't have to guess at them, and I don't have to deal with screenshots of settings. Your settings influence, among other things, how your keys are generateed.

the styles that the journal used only supports bibtex format. The entry keys are mismatch with BBT.

I don't know what this means. BBT-generated keys work just fine for any bibtex style, including whatever style a particular journal mandates.

The issue template asks for a debug log ID. People ignore that, and then ignore the bot reminding them that yes, I do need a debug log ID. Can you offer me some insight on why people are so reluctant to perform 4 mouse clicks so I can help them? I really don't understand. It's really frustrating. I don't want to make the bot explanation longer, because that will make less people read the information.
The debug logs gives me your BBT settings, so that I don't have to guess at them, and I don't have to deal with screenshots of settings. Your settings influence, among other things, how your keys are generateed.

Thank you for your reply, and sorry for not able to provide the "debug log ID". For me, I did not know what the so called debug log id means, I think may be that's why people ignore that.  In my case, what I what is just a feature request, so there is no "bug" there, so it seems for my case it is unreasonable to provide the "bug log id".

the styles that the journal used only supports bibtex format. The entry keys are mismatch with BBT.

I don't know what this means. BBT-generated keys work just fine for any bibtex style, including whatever style a particular journal mandates.

Sorry for the confusion. I think I used the wrong word "key", may be I should use the word "item".  What I mean is that the journal usually expect a "year" item, but the auto export with "better bibtex format" setting usually give a "date" item, and the styles provided by the journal did not recognize "date", so the reference generated by latex will have no "year".
Anyway, lets see a simple example below, you can see that there is no "year" if auto export the bib file with better bibtex format.
Here is what I get when using auto export with better bibtex format:
@online{burgessMONetUnsupervisedScene2019,
  title = {{{MONet}}: {{Unsupervised Scene Decomposition}} and {{Representation}}},
  shorttitle = {{{MONet}}},
  author = {Burgess, Christopher P. and Matthey, Loic and Watters, Nicholas and Kabra, Rishabh and Higgins, Irina and Botvinick, Matt and Lerchner, Alexander},
  date = {2019-01-22},
  number = {arXiv:1901.11390},
  eprint = {arXiv:1901.11390},
  eprinttype = {arxiv},
  doi = {10.48550/arXiv.1901.11390},
  url = {http://arxiv.org/abs/1901.11390},
  urldate = {2022-07-22},
  abstract = {The ability to decompose scenes in terms of abstract building blocks is crucial for general intelligence. Where those basic building blocks share meaningful properties, interactions and other regularities across scenes, such decompositions can simplify reasoning and facilitate imagination of novel scenarios. In particular, representing perceptual observations in terms of entities should improve data efficiency and transfer performance on a wide range of tasks. Thus we need models capable of discovering useful decompositions of scenes by identifying units with such regularities and representing them in a common format. To address this problem, we have developed the Multi-Object Network (MONet). In this model, a VAE is trained end-to-end together with a recurrent attention network -- in a purely unsupervised manner -- to provide attention masks around, and reconstructions of, regions of images. We show that this model is capable of learning to decompose and represent challenging 3D scenes into semantically meaningful components, such as objects and background elements.},
  pubstate = {preprint},
}

And this is what I get when manually export it with bibtex format:
@misc{burgessMONetUnsupervisedScene2019,
	title = {{MONet}: {Unsupervised} {Scene} {Decomposition} and {Representation}},
	shorttitle = {{MONet}},
	url = {http://arxiv.org/abs/1901.11390},
	doi = {10.48550/arXiv.1901.11390},
	abstract = {The ability to decompose scenes in terms of abstract building blocks is crucial for general intelligence. Where those basic building blocks share meaningful properties, interactions and other regularities across scenes, such decompositions can simplify reasoning and facilitate imagination of novel scenarios. In particular, representing perceptual observations in terms of entities should improve data efficiency and transfer performance on a wide range of tasks. Thus we need models capable of discovering useful decompositions of scenes by identifying units with such regularities and representing them in a common format. To address this problem, we have developed the Multi-Object Network (MONet). In this model, a VAE is trained end-to-end together with a recurrent attention network -- in a purely unsupervised manner -- to provide attention masks around, and reconstructions of, regions of images. We show that this model is capable of learning to decompose and represent challenging 3D scenes into semantically meaningful components, such as objects and background elements.},
	urldate = {2022-07-22},
	publisher = {arXiv},
	author = {Burgess, Christopher P. and Matthey, Loic and Watters, Nicholas and Kabra, Rishabh and Higgins, Irina and Botvinick, Matt and Lerchner, Alexander},
	month = jan,
	year = {2019},
	note = {arXiv:1901.11390 [cs, stat]},
}

But strangely, if I manully export the bibfile with better bibtex format there is a year item!
This is what I get if I manually export the bib file. Manually here I mean by "select the paper in zotero" --> right click and choose "export item" --> then choose better bibtex format -- then export
@misc{burgessMONetUnsupervisedScene2019,
  title = {{{MONet}}: {{Unsupervised Scene Decomposition}} and {{Representation}}},
  shorttitle = {{{MONet}}},
  author = {Burgess, Christopher P. and Matthey, Loic and Watters, Nicholas and Kabra, Rishabh and Higgins, Irina and Botvinick, Matt and Lerchner, Alexander},
  year = {2019},
  month = jan,
  number = {arXiv:1901.11390},
  eprint = {arXiv:1901.11390},
  publisher = {{arXiv}},
  doi = {10.48550/arXiv.1901.11390},
  urldate = {2022-07-22},
  abstract = {The ability to decompose scenes in terms of abstract building blocks is crucial for general intelligence. Where those basic building blocks share meaningful properties, interactions and other regularities across scenes, such decompositions can simplify reasoning and facilitate imagination of novel scenarios. In particular, representing perceptual observations in terms of entities should improve data efficiency and transfer performance on a wide range of tasks. Thus we need models capable of discovering useful decompositions of scenes by identifying units with such regularities and representing them in a common format. To address this problem, we have developed the Multi-Object Network (MONet). In this model, a VAE is trained end-to-end together with a recurrent attention network -- in a purely unsupervised manner -- to provide attention masks around, and reconstructions of, regions of images. We show that this model is capable of learning to decompose and represent challenging 3D scenes into semantically meaningful components, such as objects and background elements.},
  archiveprefix = {arxiv},
}

And here is the debug log id: UWR9LUND-apse
I did not know it before, sorry about that.

Thank you for your reply, and sorry for not able to provide the "debug log ID". For me, I did not know what the so called debug log id means,

Please re-read the bold message parts in the bot message

I think may be that's why people ignore that. In my case, what I what is just a feature request

WHICH THE BOT MESSAGE ADDRESSES SPECIFICALLY

so there is no "bug" there, so it seems for my case it is unreasonable to provide the "bug log id".

Unreasonable?!?!? Are you kidding me?! It is unreasonable for me to ask that you make four mouseclicks? I have done support for BBT at least since 2017. I think I'm better positioned to determine what is and isn't needed in the work I do.
I am just flabbergasted. You think it is reasonable to ask for support when you can't be bothered to perform four mouse clicks, which a full instruction on how to perform them, and even a justification for why I need them?

Sorry for the confusion. I think I used the wrong word "key", may be I should use the word "item". What I mean is that the journal usually expect a "year" item, but the auto export with "better bibtex format" setting usually give a "date" item,

It does not. Better BibLaTeX exports date. Better BibTeX exports year and month.

Anyway, lets see a simple example below, you can see that there is no "year" if auto export the bib file with better bibtex format.

If you send a debug log as per instruction point 1., I get a copy of that item so that I can try to replicate what you are experiencing. This is why I ask for these logs, and this is why I am better positioned to judge what is and isn't necessary for me to help you.

And here is the debug log id: UWR9LUND-apse I did not know it before, sorry about that.

UWR9LUND-apse doesn't contain activity indicating an export using either Better BibTeX or Better BibLaTeX. Please trigger the auto-export (you can trigger the auto-export in the BBT preferences), then right-click the item and send a debug report from the popup menu. Point 1 in the bot message explains how.
When you send a new log, please check the checkbox that says "include cache".

Here is what I get when using auto export with better bibtex format:

This is 100% generated by Better BibLaTeX, not Better BibTeX. Are you sure you have set up an auto-export for Better BibTeX, not Better BibLaTeX? Please go into the BBT preferences and post a screenshot of the auto-export you have set up.

@retorquere

Unreasonable?!?!? Are you kidding me?! It is unreasonable for me to ask that you make four mouseclicks? I have done support for BBT at least since 2017. I think I'm better positioned to determine what is and isn't needed in the work I do.

Hi, I am really sorry if my previous comment make you feels not good, I really did not mean that.  You are an active maintainer, and really helps a lot.  And you are right, I should read the bot comment carefully, and the bug log id is really important and necessary for trouble shooting.
Here is the new log bug id: 2LBSJS5C-refs-apse

This is 100% generated by Better BibLaTeX, not Better BibTeX. Are you sure you have set up an auto-export for Better BibTeX, not Better BibLaTeX? Please go into the BBT preferences and post a screenshot of the auto-export you have set up.

I think you are right, my setting is BibLaTex.  It seems there is no setting option about the format, "BibLaTex" seems is the default setting. So how can I change the setting to BetterBibTex, and what is better is that also allow to setting to bibtex?

You cannot change the format, but you can remove it here and set up a new auto-export using Bette BibTeX. The one in the screenshot was set up with Better BibLaTeX selected as the export format.

I seems not work, I cliked the "remove" button, this is what I get:

It is empty, and there is no "add" option here. Can you elaborate how to add the auto export? I think there should be an option here.


Event Location and related models

What kind of change does this PR introduce?
Create function and UI to add event location when create event

[x] Create schema and seed data location categories
[ ] Create UI add event location
[ ] Create function to add event location
[ ] Show event location on event page detail

What is the current behavior?

https://staging.bandungdev.com/events/2023-11-11

https://staging.bandungdev.com/admin/events/clqj6drub0006nz0pgbk4g0jc

Closes #5

@fikrialwan and @babdurrahman78 can use the same existing branch to work together, no need to create a separated branch.

@fikrialwan @babdurrahman78 Once it's ready, let me know so we can review it. Also possible to review together in the usual video call again.

@mhaidarhanif this pull request is ready now, for review together, I possible tonight

@mhaidarhanif
I've done fix all of the feedback

Fix import to use ~ such as ~/components https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/41dd8e9201cb0d34366b88de72bf72aac77685c6
Remove organizerId requirement in model admin event https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/9af66ed61a836b96272b73077aa31ba5deeff797
Fix layout to edit the detail to be simpler in the middle https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/81f6ef857bd3e204560a111eb509fa57e96841de
Event Category radio button background color  https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/32d9773fa358465903a0e5acb6e6ccd897c7fa6f
Event page to move Category to below Format, with just a text https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/96586435aca1eab6504f2f2aea1d5fdb6f15e2a1
Rename Location (Offline) to Location (In Person) https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/c54ee41c973a4ddf398454e7688d4f2cc69091bc
Show Maps URL below Location In Person https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/35aea5d1c8e25c5f559451e9228b56ed43c90e22
Fix render if location is null https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/ae004ebe3edec0d3abaf68ffd76de3ae74c17990
Don't show Format and Category label if the data is unavailable https://github.com/bandungdevcom/bandungdev.com/pull/23/commits/04dd87c8da6bab20dcf41fbe88c516b015376e49


[Bug] Postgres response is not getting rendered properly

Description

The response is getting truncated, even though the full response is available. Please check out the 2nd col here:

@ajinkyakulkarni Can someone pick this on priority? Seems like such a low effort issue. Even if we just enable column resizing that would be enough

Duplicate of closed issue (#6056).


Allow type mappings and member translators outside of the provider

This brings some of the functionality added by @roji in the Npgsql provider into EF Core. We'll use this as part of #1100 to allow NTS types to be mapped and have their members translated.
Note to providers: Call base.FindMapping() in your type mapping source to enable this functionality.

Really nice to see this in EF Core... Look forward to replacing the Npgsql plugins with this.
/cc @austindrenski

Looks good, but three general questions:

Tests?
How does an application/non-provider use the API?
Can you add a note to the provider-changes log about calling base.FindMapping?

Included as part of PR #13115


Documentation in need of attention

We have quite a lot of customisation hooks and advanced capabilities, especially with model generation, which are not really documented. We should flesh out the documentation and perhaps use the wiki or gh_pages.

Closing this task for now as most of the documentation has been update. This can be done incrementally as we add new features.


[webview_flutter]Uncaught (in promise) undefined", source:****.js

Steps to Reproduce

Run flutter create bug.
Update the files as follows: ...
...

I/flutter (31412): Page started loading: http://*****
I/chromium(31412): [INFO:CONSOLE(1)] "Uncaught (in promise) undefined", source: ****.js (1)

Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.14.6 18G3020, locale zh-Hans-CN)
    • Flutter version 1.12.13+hotfix.8 at /Users/iosappjingda/Documents/flutter
    • Framework revision 0b8abb4724 (6 weeks ago), 2020-02-11 11:44:36 -0800
    • Engine revision e1e6ced81d
    • Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/iosappjingda/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 43.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

Hi @xuwankang
Please try this sample code and provide your flutter run --verbose
Code Sample
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Material App',
        home: Scaffold(
            appBar: AppBar(
              title: Text('Material App Bar'),
            ),
            body: WebView(
              initialUrl: 'https://flutter.dev',
              javascriptMode: JavascriptMode.unrestricted,
            )));
  }
}

Thank you

Hi @xuwankang
Without additional information, we are unfortunately not sure how to resolve this issue. We are
therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the
bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.


Sonarqube src

Testing sonarqube with the src layout and not changing to a tmp dir

mmh, still no luck:
INFO: Parsing report '/github/workspace/coverage.xml'
ERROR: Cannot resolve the file path 'src/ctapipe/__init__.py' of the coverage report, the file does not exist in all 'source'.
ERROR: Cannot resolve 244 file paths, ignoring coverage measures for those files

I briefly activated also push builds on pull requests to get a full report on sonarqube, not just the Pull Request diff checks, works now:
https://sonar-cta-dpps.zeuthen.desy.de/dashboard?id=ctapipe_github_9404f0f6-9294-11ed-bf3b-07aa00bdfe94&branch=sonarqube_src

@kosack The direction github → Sonarqube works now. For the other direction we need to setup a Github app and configuration on the sonarqube server I think, but this is good to go


chore: update manifests for KF 1.9.0-rc.2

closes #204 , #205 , #206
In 1.9.0-rc.2 of kubeflow/manifests repo, the katib images were bumped to v0.17.0-rc.1, this PR applies the changes in all katib charms.
See the changes from rc.0 to rc.2
Note to reviewer: CI might be blocked by #207

thanks @DnPlas
This PR should stay blocked by #209 because I have seen the issue repeatedly and we might hit it in the on push CI
I suggest we work on fixing the issue then merge this PR


signed/unsigned mismatch in SimdLog.h warning

Hello Ihar,
when I compile simd-4.3.75 in VS2015, using prj\vs2015\simd.sln I'm getting warning:
simd-4.3.75\src\Simd/SimdLog.h(49): warning C4018: '<': signed/unsigned mismatch (compiling source file ....\src\Simd...
The reason - in SimdLog.h line 39 & 49:
..., size_t size, const...
for (int i = 0; i < size; i++)
Obviously type should be size_t instead of int:
for (size_t i = 0; i < size; i++)
Please fix when you have time.
Nikolai

The warnings where fixed.


Add "Micheal Adeniran" to names.txt

Add "Micheal Adeniran" to names.txt

@tobisupreme this is it.


Provide Direct APk

Thanks for building this awesome software.
It would be nice if you can provide Raindrop.io mobile app as a pre-built package (apk) via github or the official website.
I prefer not to use Goolag Services whenever possible.
Thanks 👍

And we would get the epub reader sooner I guess, I'm waiting for this little boy !

Duplicate of #9


Address family not supported

Getting below error on RHEL8
Could be config issues. Any pointers??
Traceback (most recent call last):
File "/tmp/6-11-localhost-dispatch-script.tmp.py", line 6, in
domain = ADDomain(example_domain_dns_name)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/core/ad_domain.py", line 461, in init
source_ip=self.source_ip)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 105, in discover_kdc_domain_controllers_in_domain
return _order_kdcs_by_rtt(all_kdc_records, server_limit, source_ip)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 199, in _order_kdcs_by_rtt
return _process_sort_return_rtt_ordering_results(lookup_rtt_fns, 'KDC', server_limit)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 217, in _process_sort_return_rtt_ordering_results
rtt_results.append(task.result())
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 432, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 299, in _check_kdc_availability_and_rtt
test_socket6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
File "/usr/lib64/python3.6/socket.py", line 144, in init
_socket.socket.init(self, family, type, proto, fileno)
OSError: [Errno 97] Address family not supported by protocol

hi @romeoza ! could you provide some more detail on what your dns service records for your AD domain look like?

Hi, I have encountered this error just now. I'm running my code in AWS Lambda.

Environment:

VPC: custom
Subnets: Private x 2
Security Groups: Private x 2
Uses IPV4 CIDR only (i.e., No IPV6 CIDR associated)
AD Connector: Established to connect to on-prem active directory via AWS AD Connector (with both 389 and 636 ports open/allowed via SGs)

1st & 2nd AWS Lambda Functions:

Has the proper roles and permission
Associated with the custom VPC
Associated with the private subnets and security groups where AD Connector is accessible

Known:
Two other Lambdas are on the same subnet and uses the same security groups. These Lambdas authenticate with the AD via the AWS AD Connector to access FSx File System Share using smbprotocol 1.10.0 (from pypi.org) - all without issues. So I know the ports are working - via IPV4.
Third AWS Lambda Function - uses ms-active-directory module
Issue found based on the logs:

It appears that when executing domain.create_session_as_user(user, password, authentication_mechanism=NTLM), the connection process is setting preference to using IPV6 which my VPC & subnet don't have (and we don't have any use for IPV6 after all - hence we don't configure it). The Lambda function times out completely - exhausting the full 15 min limit - because it wouldn't rotate to trying IPV4 connection after sometime.

Question:

Is there a way for us to set the preference mode to using IPV4, instead of IPV6? The API documentation indicates that dns_nameservers can expect either IPV4 or IPV6. However, ldap_servers_or_uris seems to prefer only IPV6. Looking forward to your feedback.

Portion of the ADDomain object dictionary after invoking ADDomain.(...) with parameters.

Server(host='AUZ-ADSVR-SUB-P01', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED')

Here's the full ADDomain object dictionary dump:

[INFO]	2023-01-12T08:55:50.073Z	840f9a94-004e-4a71-b74a-e895d323ce09	Value of ADDomain object: {'domain': 'abc.efg.org', 'site': 'sydney-opera-house-01', 'encrypt_connections': True, 'ca_certificates_file_path': None, 'ldap_servers': [Server(host='AUZ-ADSVR-SUB-P01', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED'), Server(host='AUZ-ADSVR-SUB-P02', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED'), Server(host='AUZ-ADSVR-SUB-P03', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED'), Server(host='AUZ-ADSVR-SUB-P04', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED'), Server(host='AUZ-ADSVR-SUB-P05', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED'), Server(host='AUZ-ADSVR-SUB-P06', port=389, use_ssl=False, allowed_referral_hosts=[('*', True)], tls=Tls(validate=<VerifyMode.CERT_NONE: 0>), get_info='SCHEMA', mode='IP_V6_PREFERRED')], 'ldap_uris': ['AUZ-ADSVR-SUB-P01', 'AUZ-ADSVR-SUB-P02', 'AUZ-ADSVR-SUB-P03', 'AUZ-ADSVR-SUB-P04', 'AUZ-ADSVR-SUB-P05', 'AUZ-ADSVR-SUB-P06'], 'kerberos_uris': [], 'dns_nameservers': ['<IP_ADDRESS>', '<IP_ADDRESS>'], 'source_ip': None, 'netbios_name': None, 'auto_configure_kerberos_client': False, '_sid': None}

And here's the error I received after executing domain.create_session_as_user(username, password, authentication_mechanism=NTLM)

[ERROR]	2023-01-12T08:54:30.121Z	840f9a94-004e-4a71-b74a-e895d323ce09	Error was encountered while getting AD user session: err=OSError(97, 'Address family not supported by protocol'), <class 'OSError'>

Thanks in advance.
Regards,
Ed

I'm getting the same error after completing the following steps from python prompt:
from ms_active_directory import ADDomain
domain = ADDomain('ourdomain.com')

domain = ADDomain('ourdomain.com')
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/core/ad_domain.py", line 461, in init
source_ip=self.source_ip)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 105, in discover_kdc_domain_controllers_in_domain
return _order_kdcs_by_rtt(all_kdc_records, server_limit, source_ip)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 199, in _order_kdcs_by_rtt
return _process_sort_return_rtt_ordering_results(lookup_rtt_fns, 'KDC', server_limit)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 217, in _process_sort_return_rtt_ordering_results
rtt_results.append(task.result())
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib64/python3.6/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/lib/python3.6/site-packages/ms_active_directory/environment/discovery/discovery_utils.py", line 299, in _check_kdc_availability_and_rtt
test_socket6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
File "/usr/lib64/python3.6/socket.py", line 144, in init
_socket.socket.init(self, family, type, proto, fileno)
OSError: [Errno 97] Address family not supported by protocol

Note: Same logic is working from my local workstation WSL2 (Ubuntu) but failing from Centos 7 server.

Had the same problem on RHEL8. The issue is that ipv6 stack is disabled on this machine.
cat /sys/module/ipv6/parameters/disable returns 1
From my point of view the issue is located in:
environment/discovery/discovery_utils.py
trying to open a socket an a not existing network stack throws an exception.
test_socket4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
addr_tuple4 = (server_host, server_port)

test_socket6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
addr_tuple6 = (server_host, server_port, 0, 0)

candidates.append((test_socket6, addr_tuple6))
candidates.append((test_socket4, addr_tuple4))

I guess a better approach would be to cat these exceptions:

    try:
        test_socket4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        addr_tuple4 = (server_host, server_port)
        candidates.append((test_socket4, addr_tuple4))
    except:
        logger.debug("ipv4 not available.\n")
    try:
        test_socket6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
        addr_tuple6 = (server_host, server_port, 0, 0)
        candidates.append((test_socket6, addr_tuple6))
    except:
        logger.debug("ipv6 not available.\n")

thanks all for the detailed information!
I was rolling with the ldap3 defaults for ipv6-preferred behavior, but didn't realize it could cause this issue. I'll try to put out a change in a bit to support piping through ipv4/ipv6 preferences when configuring a domain.

@zorn96 any fix?
Thanks

Any update on a fix or work-around for this @zorn96?

PR: https://github.com/zorn96/ms_active_directory/pull/64
sorry for the delays. I got super busy with volunteering and got neglectful of this library. but I'm back and my new years resolution is to be less of a deadbeat around maintenance

will come out in the next release

newest version with this functionality is available on pypi now https://pypi.org/project/ms-active-directory/1.13.0/


Translate cheatsheet to Thai langugage

Hi,
I added a file of cheatsheet which translated to the Thai language in folder translation.
Could you please check about it?
Hope this will be useful and help people to understand JavaScript more.

Thank you ! 😄


[PKG] libphonenumber

Capturing request from https://github.com/android/ndk/issues/456#issuecomment-315532942
Package name
libphonenumber
Package URL
https://github.com/google/libphonenumber
Package source location
https://github.com/google/libphonenumber

This package had been publish to my maven repository hosted on github https://github.com/leleliu008/ndk-pkg-prefab-aar-maven-repo
You’re welcome to give it a try.


Update sonarr v3 repack proper json

          was https://github.com/TRaSH-Guides/Guides/blob/master/docs/json/sonarr/rp/p2pRepackProper.json also supposed to be updated with the same changes?

Originally posted by @mkatsevVR in https://github.com/TRaSH-Guides/Guides/issues/1437#issuecomment-1648183472

There's more discrepancies, #1471 should fix them all

Resolved by #1471


can we check if the same package loaded twice on the page?

we are using private module (equivalent to dll) for logging the issue in SPFx to list. i am not sure if the private module is been downloaded multiple time or one time on the modern page.
we are using the same private module in different web part on the page. Please let me know how does module load at run time.

This issue was moved to SharePoint/sp-dev-docs#2354

As this is a generic question, rather than specific to any sample in this repository, moving it to the right location.

any answers for this question please?


Scripts: change question for "VST" to question about "large packages"

VST changed its license to BSD, so that there is no reason any more to ask explicitly for it - except that it takes a long time to build. So instead we could ask for "build packages which take long", which should include VST and unimath (these two are always the last two running).

Put this back to 2022.09 since it is needed for CI (tends to fail now at the 6h limit).


Compile sardana 3.0.4dev1 (a687970)

Checklist

[X] Used a personal fork of the feedstock to propose changes
[X] Bumped the build number (if the version is unchanged)
[X] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[X] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

This PR is to create a dev release of Sardana according to https://conda-forge.org/docs/maintainer/knowledge_base.html#creating-a-pre-release-build
Only dev and rc labels shall be used (not alpha and beta) for the channel, but my understanding is that we could use alpha for the package version: 3.0.4a1 (following https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/pkg-specs.html#version-ordering). I chose to use 3.0.4dev1 to keep the same as the label but I don't have a very strong opinion about that.

I chose to use 3.0.4dev1 to keep the same as the label but I don't have a very strong opinion about that.

"dev" is actually a better description than "alpha" for what we do.
But one note: AFAIK, the python version conventions require development releases to use a leading dot  (i.e. it should be 3.0.4.dev1, not 3.0.4dev1) , whereas for alpha and beta version, the dot is not used (3.0.4a1)

But one note: AFAIK, the python version conventions require development releases to use a leading dot (i.e. it should be 3.0.4.dev1, not 3.0.4dev1) , whereas for alpha and beta version, the dot is not used (3.0.4a1)

You are right! Thanks. I've been confused by the examples in the conda documentation speaking about inserting a 0 before string...
< 1.1.0dev1  # special case ``dev``
== 1.1.dev1   # 0 is inserted before string

I changed the version the 3.0.4.dev1.


How can I train it on my own data set ?

Hi,
I have generated the training data with corresponding ground truths and the required ".csv" file. How can I train it from scratch using my data ? Can you please elaborate the steps ?
Thanks !

If you have prepared csv file of your data then give path to that file , from there it will read name of images and retirve them from respective locations.