The EU has agreed to postpone Brexit again by up to three months with the option of the UK leaving sooner if MPs pass Boris Johnson's Brexit deal.

Following a meeting of EU27 ambassadors, European Council president Donald Tusk said the bloc would accept the Prime Minister's request for an Article 50 extension until January 31.

He was forced to ask for the delay under the terms of the so-called Benn Act, despite pledging to take Britain out of the EU "do or die" on October 31.

Tusk tweeted: "The EU27 has agreed that it will accept the UK's request for a #Brexit flextension until 31 January 2020.

"The decision is expected to be formalised through a written procedure."

Johnson may be able to force the UK's departure from the EU earlier than February 2020 if he can convince parliament to ratify the deal he struck with Brussels this month.

Before that, he will attempt to call an early general election in a Commons vote later on Monday - with the PM saying his preferred date for a poll is December 12.

Labour has said it will only back the move if Johnson makes "absolutely clear" a no-deal Brexit is off the table.

Shadow chancellor John McDonnell suggested at the weekend that this condition extended to ruling out no-deal beyond the end of the so-called transition period in December 2020.

Under the Fixed-Term Parliaments Act (FTPA), the Prime Minister requires a two-thirds majority to vote with him to trigger an election - a total of 434 MPs.

The SNP and Liberal Democrats are also pushing for a pre-Christmas election, with the two parties tabling a tightly-drafted Bill to call an election on December 9.

The parties say this Bill would restrict Johnson's ability to get his Brexit deal through the Commons before the election and would also prevent him from fiddling with the election date.

The motion only needs a simple majority of MPs to pass, although it could fall prey to Commons amendments.