Faits :
A.
Par jugement du 30 octobre 2019, le Tribunal criminel de l'arrondissement de la Broye et du Nord vaudois a libéré A._ des chefs de prévention de voies de fait qualifiées, de tentative de lésions corporelles simples qualifiées, de mise en danger de la vie d'autrui, de calomnie, de diffamation, de tentative de contrainte sexuelle et de contrainte sexuelle; il l'a reconnu coupable de lésions corporelles simples qualifiées, de tentative de mise en danger de la vie d'autrui, de dommages à la propriété, d'injure, de menaces qualifiées, de contrainte, de séquestration, de contrainte sexuelle aggravée, de dénonciation calomnieuse, de violation simple des règles de la circulation routière, d'entrave aux mesures de constatation de l'incapacité de conduire, de conduite d'un véhicule automobile en état d'ébriété, de conduite d'un véhicule automobile malgré une incapacité de conduire, de conduite d'un véhicule automobile sans autorisation, de défaut d'annonce à la police d'un signal routier endommagé et de contravention à la loi fédérale sur les stupéfiants. Il a révoqué le sursis assortissant une peine privative de liberté prononcée le 26 avril 2016 par le Ministère public de l'arrondissement du Nord vaudois et condamné A._ à une peine privative de liberté d'ensemble de 78 mois ainsi qu'à une peine pécuniaire de 30 jours-amende à 30 fr. et à une amende de 1000 fr., avec une peine privative de liberté de substitution de 10 jours, a ordonné que A._ soit soumis à un traitement psychothérapeutique ambulatoire en application de l'<ref-law>, a ordonné l'expulsion du territoire suisse de A._ pour une durée de 7 ans et l'a condamné à payer à B._ la somme de 18'000 fr. à titre de réparation du tort moral.
B.
Par jugement du 7 mai 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel de A._ ainsi que l'appel joint du Ministère public de l'arrondissement du Nord vaudois contre le jugement du tribunal criminel, qu'elle a confirmé.
Les faits à l'origine de cette condamnation sont en substance les suivants.
B.a. A._, ressortissant italien né en 1983 à C._, où il a grandi, a toujours vécu en Suisse. Il parle un peu l'italien. Après avoir obtenu son certificat de fin de scolarité, il a entrepris un apprentissage de cuisinier, sans le terminer, avant de débuter un apprentissage d'étancheur, qu'il n'a pas achevé non plus. Il a néanmoins travaillé comme ouvrier dans ce dernier domaine pendant quatre ou cinq ans, avant d'être licencié parce qu'il ne parvenait plus à respecter les horaires à cause de sa consommation de drogues (cannabis et cocaïne). Il a par la suite été réembauché par le même employeur puis à nouveau licencié. Il a alors occupé des emplois de courte durée. Avant son incarcération, il était sans emploi depuis plusieurs mois et émargeait à l'aide sociale.
A._ est marié depuis 2009 et père de deux enfants nés en 2009 et 2014. La relation du couple a été marquée par des conflits, avec des suites sur le plan pénal consécutives à des violences et des menaces de la part de A._, et des périodes de séparation; l'épouse a déposé une demande de divorce, qu'elle a toutefois retirée au printemps 2018.
A._ a connu B._ en septembre 2017 et a noué avec elle une relation intime dès décembre 2017. Ils ont dans un premier temps logé dans un hôtel, avant de s'installer dans un appartement en juin 2018.
B.b. A une date indéterminée en janvier 2018, lors d'une dispute, A._ a poussé B._ sur le lit et lui a serré le cou d'une main, plaçant l'autre sur sa bouche et ne relâchant son étreinte que quand il a vu qu'elle manquait d'air et que ses yeux se fermaient. B._ lui ayant ensuite dit qu'elle voulait le quitter, il lui a déclaré que dans ce cas il tuerait toute sa famille, en Suisse et au Brésil.
B.c. En mars 2018, A._ a saisi B._ au niveau du biceps, en la serrant suffisamment fort pour engendrer des marques, et l'a giflée. Celle-ci a ouvert la porte du logement et appelé à l'aide. Alors qu'ils se trouvaient dans le couloir, il a placé un bras autour de son cou et mis son autre main sur sa bouche. Un voisin intervenu à la suite des appels de la jeune femme a constaté que le visage de celle-ci était rouge, qu'elle présentait des marques au niveau du cou et manquait d'air. Un autre résident de l'hôtel est également intervenu; après avoir éloigné une première fois A._, ils ont encore dû s'interposer à plusieurs reprises pour l'empêcher de s'en prendre à nouveau à sa compagne.
B.d. Entre le 12 avril et le 12 juillet 2018, A._ a plusieurs fois injurié B._ en la traitant notamment de " pute ", de " connasse " et de " merde ".
B.e. Le 27 avril 2018, A._, qui venait d'apprendre que B._ avait l'intention de le quitter et avait demandé à sa mère de venir la chercher, a sorti un couteau suisse de sa poche et en a placé la pointe contre la taille de sa compagne. Cette dernière a saisi la main de A._ et a éloigné la pointe du couteau avant de sortir du restaurant pour rejoindre D._ qui l'attendait.
Le lendemain, A._ a de nouveau menacé de tuer toute la famille de sa compagne si celle-ci le quittait.
B.f. Le 26 mai 2018, A._ a asséné à sa compagne deux gifles dont l'une a cassé ses lunettes et occasionné une blessure ouverte au niveau du sourcil. Comme elle saignait abondamment, il lui a dit qu'elle l'avait mérité, lui a donné un mouchoir humide pour panser sa plaie et est allé se coucher.
B.g. A une date indéterminée au mois de mai 2018, A._ a demandé à sa compagne si elle avait une liaison avec un client du parc d'attraction dans lequel ils travaillaient tous les deux. Ne croyant pas sa réponse négative, il lui a attaché les mains ensemble afin qu'elle réponde à ses questions. Il l'a détachée après qu'elle s'était mise à pleurer.
B.h. Le 27 juin 2018, énervé par le fait que B._ avait eu une conversation avec un homme, A._ lui a asséné de nombreuses gifles au point de la faire saigner au niveau du front. Une voisine alertée par le bruit a fait appel à la police, qui est intervenue au domicile du couple.
B.i. A la même date, après le départ de la police, A._ a déclaré à sa compagne que tout allait changer, qu'elle n'allait plus le prendre pour un con et qu'il allait lui faire ce qu'il voulait au niveau sexuel. Ainsi, dans la nuit, il lui a dit qu'il « allait la lui mettre dans le cul ». B._ a clairement indiqué qu'elle refusait la sodomie. Il lui a répondu de « fermer sa gueule » et l'a poussée sur lit en lui saisissant les bras. Bien qu'elle lui ait signifié qu'elle refusait la relation sexuelle, il lui a demandé de se mettre sur le ventre. Comme elle répétait qu'elle ne voulait pas il lui a répondu qu'elle n'avait pas le choix et lui a ordonné de se mettre à quatre pattes. De peur, notamment au vu des menaces dont elle avait déjà fait l'objet et des coups qu'elle avait déjà reçus durant sa relation intime avec le prévenu, elle a finalement obéi aux ordres donnés et s'est mise à quatre pattes après avoir répété son refus. Il l'a alors saisie par les cheveux et a déclaré que si elle criait et si la voisine faisait à nouveau appel à la police ça allait être pire. Il a ensuite vainement essayé de la pénétrer dans l'anus avec son sexe et ce quand bien même elle lui demandait d'arrêter en précisant qu'il lui faisait mal. A._, qui entendait poursuivre ses actes, est allé chercher de l'huile à la cuisine avant de revenir dans la chambre et de s'enduire le sexe d'huile. En raison de l'emprise qu'il exerçait sur la jeune femme, il est parvenu à la sodomiser malgré son désaccord et a poursuivi en dépit des douleurs exprimées par la victime. Immédiatement après s'être retiré, il lui a demandé de lui faire une fellation, ce qu'elle a refusé dès lors que le sexe de A._ venait de sortir de son anus et était sale. Il l'a toutefois forcée à lui faire une fellation en lui tenant la tête et en faisant des mouvements de va-et-vient avec son sexe. Ce scénario, soit le fait de sodomiser sa compagne contre sa volonté, puis d'introduire de force son sexe dans la bouche de celle-ci, s'est répété à quatre reprises durant la nuit. A._ a cessé ses agissements au moment où sa compagne a vomi sur le lit. A ce moment, il a quitté la chambre en déclarant « maintenant tu vas dormir dans ton vomi ».
Le lendemain matin, A._ a, une nouvelle fois, sodomisé B._ avant d'introduire son sexe dans la bouche de celle-ci, alors qu'elle lui disait qu'elle ne voulait pas. La jeune femme est partie aux toilettes pour vomir. A._ l'a suivie, lui a saisi la tête et a mis son sexe dans sa bouche. Elle a vomi. A._ lui a dit que ce n'était pas grave, lui a saisi la tête et a remis son sexe dans sa bouche pour obtenir une fellation. Après avoir éjaculé dans la bouche de sa compagne, il est parti en déclarant qu'elle n'était rien pour lui et que personne ne pouvait rien faire pour elle.
B.j. Le 11 juillet 2018, A._, sous l'influence de l'alcool, s'est disputé avec B._, qui lui annonçait qu'elle voulait le quitter. Alors qu'elle prenait une douche, il l'a enfermée à l'intérieur du logement et a quitté les lieux en emportant le téléphone portable de sa compagne et les clefs du logement. Afin de pouvoir sortir de l'appartement, situé au premier étage, la jeune femme s'est munie d'un fil électrique et a tapé contre le volet de la voisine qui vivait à l'étage inférieur. Cette dernière lui a prêté son téléphone portable et elle a pu faire appel à la police. A leur arrivée, les gendarmes l'ont aidée à quitter le logement par une des fenêtres, la jeune femme descendant le long de la façade, en s'agrippant aux volets de sa voisine.
B.k. Pour tous les faits mentionnés sous lettres B.b à B.j ci-dessus, B._ a déposé plainte le 12 juillet 2018 et s'est constituée partie plaignante le 18 juillet 2018.
B.l. A tout le moins entre mi-mai 2018 et le 12 juillet 2018, date de son interpellation, A._, qui n'était titulaire d'aucun permis de conduire valable, a circulé à réitérées reprises au volant de véhicules automobiles.
B.m. Le 20 juin 2018, vers 17h00, A._, au volant de la voiture de sa mère, a, sans être titulaire d'un permis de conduire valable, entrepris une marche arrière afin de quitter une place de parc et de s'engager sur la route cantonale. Inattentif, il a traversé la voie réservée aux usagers circulant en direction de C._, a escaladé un îlot précédant un giratoire et a heurté une borne avec le pare-chocs arrière du véhicule. Malgré les dommages occasionnés à la borne, il a pris la fuite, sans annoncer l'accident et les dommages commis. Ce faisant, il s'est également dérobé aux mesures visant à constater sa capacité à conduire un véhicule, lesquelles auraient été ordonnées au vu des circonstances, ce qu'il ne pouvait ignorer.
Le même jour, lors de son audition par la police, A._ a déclaré faussement aux agents de police que ce n'était pas lui mais son amie qui conduisait au moment des faits. Celle-ci a expliqué lors de sa propre audition qu'elle n'était pas la conductrice.
B.n. Dans l'après-midi du 11 juillet 2018, A._ a circulé au volant de la voiture de sa mère sans être titulaire d'un permis de conduire valable. Parvenu à C._, il a consommé quatre cannettes de bière de 0.5 dl avant de regagner son domicile, à E._, vers 19h00. Après avoir consommé pratiquement l'équivalent d'une bouteille de 0.75 dl de vin rouge entre 19h00 et 20h00, il est reparti avec le même véhicule à C._, où il a consommé une bière de 3 dl ainsi que du cannabis. Il a ensuite repris le volant dans l'intention de regagner son domicile. Interpelé par les gendarmes à 0h15 sur le chemin du retour, il s'est légitimé, dans un premier temps, sous le nom de son frère, lequel est titulaire d'un permis de conduire, tout en indiquant avoir oublié de se munir dudit document.
B.o. A._ a, enfin, consommé de la marijuana et de la cocaïne entre le 30 octobre 2016 et le 12 juillet 2018, date de son interpellation.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement de la Cour d'appel pénale. Il conclut, avec suite de frais et dépens, à ce que le jugement du tribunal criminel confirmé par le jugement attaqué soit modifié dans le sens qu'il est libéré des chefs de prévention abandonnés en instances cantonales, de ceux de menaces qualifiées et de contrainte sexuelle aggravée, qu'il est reconnu coupable de lésions corporelles simples, de dommages à la propriété, d'injure, de dénonciation calomnieuse, de tentative de mise en danger de la vie d'autrui, de séquestration, de violation simple des règles de la circulation routière, d'entrave aux mesures de constatation de l'incapacité de conduire, de conduite d'un véhicule automobile en état d'ébriété, de conduite d'un véhicule automobile malgré une incapacité de conduire, de conduite d'un véhicule automobile sans autorisation, de défaut d'annonce à la police d'un signal routier endommagé et de contravention à la loi fédérale sur les stupéfiants, à ce qu'il soit condamné à une peine clémente fixée à dire de justice et compatible au moins avec un sursis partiel et à ce qu'il soit renoncé à ordonner son expulsion du territoire suisse. A titre subsidiaire il conclut au renvoi de la cause à l'autorité cantonale pour complément d'instruction.
Le recourant sollicite par ailleurs le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant se plaint en premier lieu d'une violation de son droit à un procès équitable ainsi que du principe d'instruction à charge et à décharge. Il soutient que toutes les mesures d'instruction à décharge qu'il a requises auraient été rejetées et que les juges cantonaux n'auraient pas examiné ce grief pourtant soulevé dans son recours. Il reproche en outre à la cour cantonale d'avoir continué à faire référence à des condamnations après qu'elles ont été effacées de son casier judiciaire.
Le recourant ne présente pas une argumentation satisfaisant aux exigences de motivation de l'<ref-law>, conformément auquel le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont le droit à un procès équitable, que s'ils ont été invoqués et motivés de manière précise. Il reprend au demeurant largement ces éléments dans le cadre d'autres griefs invoqués à l'appui de son recours.
2.
Le recourant reproche à la cour cantonale d'avoir violé son droit d'être entendu et d'avoir procédé à une appréciation anticipée arbitraire des mesures d'instruction requises.
2.1. Selon l'<ref-law>, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'<ref-law> prévoit toutefois que la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Le droit d'être entendu, tel qu'il est garanti par l'art. 29 al. 2 Cst., comprend notamment pour le justiciable le droit d'obtenir l'administration des preuves pertinentes et valablement offertes, de participer à l'administration des preuves essentielles et de se déterminer sur son résultat lorsque cela est de nature à influer sur la décision à rendre (<ref-ruling> consid. 7.2.2.1 p. 103). Le refus d'administrer des preuves requises ne viole le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (<ref-ruling> consid. 3.1.3 p. 435; <ref-ruling> consid. 3.3 p. 64 et les références citées).
2.2. Le recourant reproche à la cour cantonale d'avoir refusé d'ordonner une expertise médico-légale pour déterminer si les actes de sodomie dénoncés pouvaient n'avoir pas occasionné de lésions chez la victime. Selon lui une telle relation non consentie cause inévitablement des lésions même si l'auteur utilise un lubrifiant.
Il n'appert pas que la cour cantonale aurait procédé à une appréciation anticipée arbitraire des preuves en estimant qu'il n'était pas nécessaire de disposer d'une expertise pour apprécier l'existence ou non de lésions à la suite d'une sodomie avec usage d'un lubrifiant. C'est particulièrement vrai eu égard au climat dans lequel se sont déroulés les faits, qui était propre à permettre au recourant de parvenir à ses fins en brisant la résistance de sa victime sans avoir recours à la violence physique. D'éventuelles lésions chez la victime sont ainsi sans pertinence pour conclure à son absence de consentement.
2.3. Le recourant se plaint également du refus de faire verser au dossier certains rapports de police. Il admet que ceux-ci ne sont pas de nature à prouver l'infraction mais soutient qu'ils permettraient de faire la preuve de l'incohérence de la chronologie des faits rapportés par l'intimée.
Le grief est également mal fondé sur ce point. On ne voit pas qu'une erreur dans la chronologie de faits dénoncés soit susceptible de remettre en cause dans son ensemble la version des faits de l'intimée, qui est pour le surplus tout à fait cohérente.
2.4. Le recourant fait grief à la cour cantonale d'avoir refusé de faire entendre une nouvelle fois un témoin. Il expose que cette audition serait de nature à faire apparaître des incohérences dans les propos de l'intimée. Il ne précise toutefois pas sur quels points porteraient ces contradictions ni a fortiori en quoi elles seraient suffisamment importantes pour remettre en question la crédibilité de l'intimée. Insuffisamment motivé, le grief n'est pas recevable sur ce point.
2.5. Le recourant se plaint enfin du refus d'ordonner une seconde expertise psychiatrique. Il se prévaut d'un rapport du Service de médecine et de psychiatrie pénitentiaire (SMPP), qui, selon lui, suscite des interrogations quant à l'impartialité des auteurs de l'expertise psychiatrique du 9 janvier 2019. Il reproche notamment à ces derniers d'avoir affirmé qu'il ne suivait pas de traitement psychothérapeutique alors qu'il suivait déjà une psychothérapie, à sa demande, à raison d'une séance toutes les deux semaines depuis le 15 août 2018. Or, cet élément n'a pas été ignoré par les experts, qui mentionnent (p. 8 de l'expertise du 9 janvier 2019) que depuis le début de sa détention l'expertisé bénéficie d'un suivi ponctuel par le SMPP et qui relèvent par ailleurs (p. 15 de l'expertise) que l'intéressé se dit favorable à un suivi psychothérapeutique.
Le recourant reproche en outre aux experts d'avoir considéré à tort qu'il n'aurait pas souffert de dépendance à la cocaïne. Cette constatation est conforme à ses propres déclarations puisqu'il a lui-même affirmé que les substances ne lui manquaient pas en prison et qu'il avait pu s'en passer relativement facilement (cf. expertise psychiatrique, p. 12 et 14). Par ailleurs, la cour cantonale n'a pas méconnu le fait que le recourant consommait des stupéfiants, de nombreuses allusions étant faites à cette situation dans l'expertise.
D'autre part, il n'apparaît pas que les experts auraient fait montre d'un manque d'objectivité et pour le surplus le recourant n'expose pas quels éléments il entendrait tirer d'une seconde expertise, qui seraient de nature à influer sur le sort de la cause.
3.
Le recourant reproche à la cour cantonale d'avoir apprécié les faits de manière arbitraire. Il évoque par ailleurs le principe " in dubio pro reo ".
3.1. Le Tribunal fédéral est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (<ref-ruling> consid. 1.1 p. 503). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence ou à son corollaire, le principe " in dubio pro reo ", ceux-ci n'ont pas de portée plus large que l'interdiction de l'arbitraire (voir <ref-ruling> consid. 1.1 p. 155 s.).
Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>); il n'entre ainsi pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1.3.1 p. 92 et les arrêts cités).
3.2. La cour cantonale a considéré que les accusations de l'intimée, étayées pour une partie par des dépositions de témoins et d'une manière générale par le comportement violent admis par le recourant lui-même, étaient crédibles.
3.3. Le recourant ne montre pas, par une argumentation satisfaisant aux exigences de l'<ref-law>, que certains éléments de preuve auraient été méconnus ou interprétés de manière manifestement erronée. Il cherche plutôt à remettre en question la crédibilité de l'intimée d'une manière générale en invoquant le fait qu'elle aurait menti lors de son audition par la police sur deux points, à savoir les motifs de sa présence en Suisse et la nature de ses relations avec le recourant.
3.4. Les points sur lesquels l'intimée a menti lors de son audition par la police n'ont aucune relation avec les faits qu'elle dénonce; pour le surplus sa version des faits n'a pas varié contrairement à celle du recourant, lequel a, à plusieurs reprises, menti à la police pour tenter d'échapper à ses responsabilités notamment après avoir conduit sans permis. Elle est en outre confirmée sur certains points par la déposition d'un témoin. Par ailleurs, elle est encore accréditée par le tempérament et le mode de fonctionnement du recourant, qui ne conteste pas s'être montré violent non seulement avec l'intimée mais également précédemment avec son épouse. Dans ces circonstances, la cour cantonale pouvait sans arbitraire préférer la version de la victime à celle du recourant. Le grief, au demeurant de nature largement appellatoire, doit être rejeté dans la mesure où il est recevable.
4.
Le recourant se plaint d'une violation des art. 180 et 189 CP réprimant les menaces respectivement la contrainte sexuelle, sans toutefois dénoncer une application erronée de ces dispositions mais au seul motif que les faits ne seraient pas établis à satisfaction de droit. Cette prémisse ayant été niée au considérant précédent le grief doit également être rejeté dans la mesure où il est recevable.
5.
Le recourant s'en prend à la peine qui lui a été infligée, qu'il estime trop lourde dans la mesure où les infractions de menaces et de contrainte sexuelle doivent être écartées. Ce grief devient sans objet dès lors que sa culpabilité pour ces infractions doit être confirmée.
6.
Le recourant conteste enfin l'expulsion ordonnée à son encontre. Il fait valoir que c'est à tort que la cour cantonale n'a pas reconnu le cas de rigueur le concernant.
6.1. Aux termes de l'<ref-law>, le juge expulse de Suisse l'étranger qui est condamné notamment pour mise en danger de la vie d'autrui (let. b), séquestration (let. g) ou contrainte sexuelle (let. h), quelle que soit la quotité de la peine prononcée à son encontre, pour une durée de cinq à quinze ans. Selon l'<ref-law>, le juge peut exceptionnellement renoncer à une expulsion lorsque celle-ci mettrait l'étranger dans une situation personnelle grave et que les intérêts publics à l'expulsion ne l'emportent pas sur l'intérêt privé de l'étranger à demeurer en Suisse. À cet égard, il tiendra compte de la situation particulière de l'étranger qui est né ou qui a grandi en Suisse.
La clause de rigueur permet de garantir le principe de la proportionnalité (art. 5 al. 2 Cst.). Elle doit être appliquée de manière restrictive (<ref-ruling> consid. 3.4.2 p. 108; <ref-ruling> consid. 3.3.1 p. 340). Selon la jurisprudence du Tribunal fédéral (<ref-ruling> consid. 3.4 p. 108 ss; <ref-ruling> consid. 3.3.2 p. 340 s.), il convient de s'inspirer des critères énoncés à l'art. 31 de l'ordonnance du 24 octobre 2007 relative à l'admission, au séjour et à l'exercice d'une activité lucrative (OASA; RS 142.201). L'art. 31 al. 1 OASA prévoit qu'une autorisation de séjour peut être octroyée dans les cas individuels d'extrême gravité. L'autorité doit tenir compte notamment de l'intégration du requérant selon les critères définis à l'art. 58a al. 1 de la loi fédérale sur les étrangers et l'intégration (LEI; RS 142.20), de la situation familiale, particulièrement de la période de scolarisation et de la durée de la scolarité des enfants, de la situation financière, de la durée de la présence en Suisse, de l'état de santé ainsi que des possibilités de réintégration dans l'État de provenance. Comme la liste de l'art. 31 al. 1 OASA n'est pas exhaustive et que l'expulsion relève du droit pénal, le juge devra également, dans l'examen du cas de rigueur, tenir compte des perspectives de réinsertion sociale du condamné (ATF <ref-ruling> consid. 3.3.2 p. 340 s.). En règle générale, il convient d'admettre l'existence d'un cas de rigueur au sens de l'<ref-law> lorsque l'expulsion constituerait, pour l'intéressé, une ingérence d'une certaine importance dans son droit au respect de sa vie privée et familiale garanti par la Constitution fédérale (art. 13 Cst.) et par le droit international, en particulier l'art. 8 CEDH (arrêts 6B_397/2020 du 24 juillet 2020 consid. 6.1; 6B_344/2020 du 9 juillet 2020 consid. 3.1; 6B_286/2020 du 1er juillet 2020 consid. 1.3.1; 6B_153/2020 du 28 avril 2020 consid. 1.3.1).
Selon la jurisprudence, pour se prévaloir du droit au respect de sa vie privée au sens de l'art. 8 par. 1 CEDH, l'étranger doit établir l'existence de liens sociaux et professionnels spécialement intenses avec la Suisse, notablement supérieurs à ceux qui résultent d'une intégration ordinaire. Le Tribunal fédéral n'adopte pas une approche schématique qui consisterait à présumer, à partir d'une certaine durée de séjour en Suisse, que l'étranger y est enraciné et dispose de ce fait d'un droit de présence dans notre pays. Il procède plutôt à une pesée des intérêts en présence, en considérant la durée du séjour en Suisse comme un élément parmi d'autres et en n'accordant qu'un faible poids aux années passées en Suisse dans l'illégalité, en prison ou au bénéfice d'une simple tolérance (cf. <ref-ruling> consid. 4.3 p. 24; arrêt 6B_397/2020 précité consid. 6.1). Un séjour légal de dix années suppose en principe une bonne intégration de l'étranger (<ref-ruling> consid. 3.9 p. 278).
Par ailleurs, un étranger peut se prévaloir de l'art. 8 par. 1 CEDH (et de l'art. 13 Cst.), qui garantit notamment le droit au respect de la vie familiale, pour s'opposer à l'éventuelle séparation de sa famille, pour autant qu'il entretienne une relation étroite et effective avec une personne de sa famille ayant le droit de résider durablement en Suisse (<ref-ruling> consid. 6.1 p. 12; <ref-ruling> consid. 2.1 p. 336 et les références citées). Les relations familiales visées par l'art. 8 par. 1 CEDH sont avant tout celles qui concernent la famille dite nucléaire, soit celles qui existent entre époux ainsi qu'entre parents et enfants mineurs vivant en ménage commun (cf. <ref-ruling> consid. 6.1 p. 12; <ref-ruling> consid. 1.3.2 p. 146). Lorsque le parent étranger ne dispose pas du droit de garde sur son enfant habilité à résider en Suisse, il suffit en règle générale, sous l'angle de l'art. 8 par. 2 CEDH, que le parent vivant à l'étranger exerce son droit de visite dans le cadre de séjours brefs ou par le biais de moyens de communication modernes, un droit plus étendu ne pouvant exister qu'en présence notamment d'un comportement irréprochable dudit parent (cf. <ref-ruling> consid. 5.2 p. 97 ss).
6.2. Le Tribunal fédéral a déjà relevé que l'expulsion d'un individu étant né et ayant passé toute son existence en Suisse, jusqu'à l'âge adulte, ne peut que causer à celui-ci une atteinte à son droit au respect de sa vie privée, cela indépendamment de sa situation personnelle et familiale, sauf à considérer que l'intéressé n'aurait, en raison de sa mauvaise intégration, aucune vie privée (cf. arrêt 6B_153/2020 du 28 avril 2020 consid. 1.3.4). Tel n'est manifestement pas le cas en l'espèce puisque le recourant, qui a toujours vécu en Suisse, où il est né, est père de deux enfants, qui vivent également en Suisse et lui rendent régulièrement visite en prison, accompagnés de son épouse et de sa mère. Il y a donc lieu d'admettre que la première condition cumulative de l'<ref-law> est réalisée. Reste à examiner si l'appréciation de la cour cantonale, selon laquelle l'intérêt public à l'éloignement de l'intéressé l'emporte sur l'intérêt privé de celui-ci à demeurer en Suisse, est pertinente.
Sur le plan professionnel, économique et social, l'intégration du recourant n'est pas bonne puisque la cour cantonale a constaté que son parcours professionnel a été chaotique, qu'il n'a pas eu d'emploi fixe pendant une longue période et qu'au moment de son incarcération il bénéficiait de l'aide sociale depuis plusieurs mois et avait beaucoup de dettes. Contrairement à ce qu'il a indiqué à l'audience d'appel, il ressort des déclarations de son épouse que celle-ci n'envisage pas de reprendre la vie commune avec lui. Eu égard à cette situation, ses perspectives de réinsertion n'apparaissent pas notablement moindres en Italie qu'en Suisse.
Par ailleurs, l'intérêt public à l'expulsion du recourant est important compte tenu de la gravité, du nombre et de la diversité des actes à l'origine de sa condamnation. Ses antécédents sont en outre très mauvais, et il faut bien constater qu'il ne montre aucune volonté de se conformer à l'ordre juridique suisse; de surcroît, les experts estiment qu'il existe un risque de récidive concret de violences verbales, physiques et sexuelles sur ses futures compagnes. Dans ces circonstances, il y a lieu d'admettre que l'intérêt public à son expulsion l'emporte sur son intérêt à rester en Suisse; l'expulsion prononcée à son encontre ne viole donc pas le droit fédéral.
7.
Mal fondé, le recours doit être rejeté dans la mesure où il est recevable.
Comme les conclusions étaient dépourvues de chances de succès, l'assistance judiciaire ne peut être accordée (<ref-law>). Le recourant, qui succombe, supportera les frais (<ref-law>), dont le montant sera toutefois fixé en tenant compte de sa situation financière qui n'apparaît pas favorable.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal vaudois.
Lausanne, le 19 janvier 2021
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
La Présidente : Jacquemoud-Rossari
La Greffière : Paquier-Boinay