Faits :
A.
Par jugement du 19 février 2016, le Tribunal de police de l'arrondissement de Lausanne a constaté que X._ s'était rendu coupable de voies de fait et d'injure; il l'a condamné à une peine pécuniaire de 15 jours-amende à 10 fr. avec sursis pendant 2 ans ainsi qu'à une amende de 300 fr., la peine privative de liberté de substitution étant de 3 jours.
B.
Statuant le 29 août 2016, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel interjeté par X._ contre ce jugement, qu'elle a confirmé.
Cette condamnation se fonde sur les faits suivants.
Le 28 juillet 2015, A._, auxiliaire de soins, s'est rendue au domicile de la mère de X._ pour lui prodiguer des soins. Mécontent de ceux-ci, ce dernier a invectivé A._ en la traitant de bonne à rien et d'incompétente. Il l'a ensuite poussée avec force, à l'aide de ses deux mains, pour qu'elle quitte l'appartement.
C.
X._ 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, à la réforme dudit jugement en ce sens qu'il est libéré de toute peine et de tous frais. Il sollicite par ailleurs l'assistance judiciaire.
D.
Invités à présenter des observations, le ministère public et la cour cantonale ont renoncé à se déterminer et se sont référés aux considérants du jugement attaqué. Pour sa part, l'intimée n'a pas déposé d'observations.

Considérant en droit :
1.
Le recourant conteste sa condamnation pour injure, considérant avoir uniquement mis en cause les compétences professionnelles de l'intimée.
1.1. Conformément à l'<ref-law>, se rend coupable d'injure celui qui aura, par la parole, l'écriture, l'image, le geste ou par des voies de fait, attaqué autrui dans son honneur (<ref-law>). L'honneur que protège cette disposition est le sentiment et la réputation d'être une personne honnête et respectable, c'est-à-dire le droit de ne pas être méprisé en tant qu'être humain (<ref-ruling> consid. 2.1 p. 115; <ref-ruling> consid. 1a p. 58).
Pour apprécier si une déclaration est attentatoire à l'honneur, il faut se fonder non pas sur le sens que lui donne la personne visée mais procéder à une interprétation objective, selon la signification qu'un auditeur ou un lecteur non prévenu doit, dans les circonstances d'espèce, lui attribuer (<ref-ruling> consid. 8.5.1 p. 312; <ref-ruling> consid. 1a p. 58; <ref-ruling> consid. 2a p. 47). Déterminer le contenu d'un message relève des constatations de fait. Le sens qu'un destinataire non prévenu confère aux expressions et images utilisées constitue en revanche une question de droit (<ref-ruling> consid. 2.1.3 p. 316; <ref-ruling> consid. 8.5.1 p. 312; <ref-ruling> consid. 2.1 p. 26). Dans le doute, c'est l'interprétation la plus favorable à l'accusé qui doit prévaloir (arrêt du Tribunal fédéral Str.677/1984 du 14 juin 1985 consid. 2, in Rep 1986 p. 56).
L'injure peut consister dans la formulation d'un jugement de valeur offensant, mettant en doute l'honnêteté, la loyauté ou la moralité d'une personne de manière à la rendre méprisable en tant qu'être humain ou entité juridique (BERNARD CORBOZ, Les infractions en droit suisse, vol. I, 3e éd. 2010, n° 10 s. ad <ref-law>), ou celui d'une injure formelle, lorsque l'auteur a, en une forme répréhensible, témoigné de son mépris à l'égard de la personne visée et l'a attaquée dans le sentiment qu'elle a de sa propre dignité. La marque de mépris doit revêtir une certaine gravité, excédant ce qui est acceptable (arrêt 6B_557/2013 du 12 septembre 2013, consid. 1.1 et les références citées, in SJ 2014 I 293).
Sur le plan subjectif, l'injure suppose l'intention. L'auteur doit vouloir ou accepter que son message soit attentatoire à l'honneur et qu'il soit communiqué à la victime (<ref-ruling> consid. 2b p. 272).
1.2. En référence au jugement de première instance, la cour cantonale a considéré que les termes " bonne à rien " ne portaient pas uniquement sur les aptitudes professionnelles de l'intimée mais également sur ses compétences relationnelles, personnelles, sur ce qu'elle était en tant que personne. Le premier juge avait exclu une connotation purement professionnelle mais pris en compte que les termes utilisés avaient une acception large, destinée à exprimer un mépris général à l'égard de la personne visée, ce qui constituait ainsi une injure formelle. Le recourant ne formule aucun grief recevable à cet égard, se limitant à dire qu'il a critiqué les compétences professionnelles. Il ressort au contraire des constatations cantonales qu'il a entendu dénigrer l'intimée sur un plan général, en tant que personne. La portée donnée à la déclaration par la cour cantonale ne prête pas le flanc à la critique. Sur cette base, la condamnation en vertu de l'<ref-law> ne viole pas le droit fédéral.
2.
Le recourant soutient qu'il doit être libéré du chef d'accusation de voies de fait. Il fait valoir que l'intimée n'a subi aucune lésion et ressenti aucune douleur et qu'il était en droit de la pousser pour qu'elle quitte l'appartement dès lors qu'elle refusait de le faire.
Les voies de fait, réprimées par l'<ref-law>, se définissent comme des atteintes physiques qui excèdent ce qui est socialement toléré et qui ne causent ni lésions corporelles ni dommage à la santé. Une telle atteinte peut exister même si elle n'a causé aucune douleur physique (<ref-ruling> consid. 1.2 p. 191).
Le fait de pousser une personne avec force, à l'aide des deux mains, pour la faire sortir d'un appartement dépasse clairement ce qui est socialement admis et c'est à juste titre que la cour cantonale a considéré que les conditions d'application de l'<ref-law> étaient réalisées.
En soutenant qu'elle n'avait pas le droit de rester dans l'appartement, de sorte que lui-même était en droit de la pousser dehors, le recourant semble se prévaloir de l'état de légitime défense. Son argumentation repose toutefois sur la prémisse que l'intimée refusait de quitter l'appartement, ce qui ne ressort pas des constatations de fait du jugement attaqué. N'étant pas remises en question au moyen d'une motivation satisfaisant aux exigences de l'<ref-law>, ces constatations lient le Tribunal fédéral conformément à l'<ref-law> et le grief est irrecevable dans cette mesure.
3.
Mal fondé, le recours doit être rejeté dans la mesure où il est recevable. Comme les conclusions du recours étaient dépourvues de chances de succès, l'assistance judiciaire ne peut être accordée (<ref-law>). Par conséquent, le recourant, qui succombe, supportera les frais judiciaires (<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 8 novembre 2017
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay